MacでVagrantで仮想環境を作ってみたものの、rails newでつまづいたはなし
railsのサンプルアプリを作るためにbundle install したところ、nokogiriのインストールでこけてしまった。 調べたところ、頑張ってmacにnokogiriを入れる方法はあるらしいが、今回は勉強のためにVagrantで仮想化して逃げることにした。
仮想環境作成
MacにVirtualBoxとVagrantをインストールし、CentOS7.0を仮想環境にインストール。
次に、Vagrantfileに仮想環境と同期するディレクトリを次のように設定する。rsync__exclude
オプションでvendor以下を同期しないようにしている。
*1
# ゲスト側で同期するディレクトリの場所をよくわからないが、`/vagrant`で設定。(推奨?) config.vm.synced_folder ".", "/vagrant", type: "rsync", rsync__exclude: [".git/", "vendor"]
仮想環境立ち上げの準備ができたので、仮想環境を立ちあげて、sshで仮想環境に入ります。
# 仮想環境起動 $ vagrant up # 仮想環境に入る $ vagrant ssh
仮想環境で作業
以下、仮想環境内でのはなし。
# gitが入ってないので入れる。 $ sudo yum install -y git gcc gcc-c++ openssl-devel readline-devel # rbenvをgitコマンドで入れる。 $ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv # rbenvのパスを通す。 $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile $ exec $SHELL -l # bundle を入れる $ gem install bundle #ruby 2.3.1を入れる $ rbenv install 2.3.1 # railsをインストール $ bundle install
Macではインストールに失敗したnokogiriも無事にインストールできたことを確認。 次に、railsアプリを作成する。
# ゲストでrailsアプリ作成 $ bundle exec rails new
app以下のディレクトリが作成したことを確認し、$exit
でホストに戻る。が、ホストではapp以下のディレクトリがない。
どうやら、ホストからゲストへは同期されるが、ゲストからホストへは同期されないらしい。。*2
どうやって、app以下をホストへコピーすればいいのか。。 今回はここまで。
そして、vagrant ssh
で接続中に、Macを放置してスリープ状態にすると接続きれるので、tmuxでも使うか。