thoriさんのweb開発日記

webエンジニアのメモ書きです。普段、Ruby on Railsで開発してます。

MacでVagrantで仮想環境を作ってみたものの、rails newでつまづいたはなし

railsのサンプルアプリを作るためにbundle install したところ、nokogiriのインストールでこけてしまった。 調べたところ、頑張ってmacにnokogiriを入れる方法はあるらしいが、今回は勉強のためにVagrantで仮想化して逃げることにした。

仮想環境作成

MacVirtualBoxVagrantをインストールし、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でも使うか。

参考

Oracle VM VirtualBox

Vagrant by HashiCorp

rbenv を使って ruby をインストールする(CentOS編) - Qiita