参考にさせて頂いたページ
全体的なインストール手順について
- Vagrant 1.8 + CentOS 7 + VirtualBox 5 + Ruby on Rails + Mysqlで開発環境構築 - Qiita
- Vagrant で Ruby on Rails 4 の環境構築 - Qiita
はじめに
ポイントとしては、手順のなかにある以下のコマンドを実行するときに
bundle install --path 任意のパス
ホストと同期しているディレクトリをパスに指定するとエラーが出るらしい。ということです。
今回の環境(インストーラーなど)
ホストマシン環境
- Windows10 Home
- vagrant_1.9.7_x86_64.msi
- VirtualBox-5.1.26-117224-Win.exe
Windows10
vagrant_1.8.4.msi
VirtualBox-5.0.24-108355-Win.exe
ゲストマシン環境
vagrant upまでやってみてexitする
以前、以下の手順でvagrant upまでやって、ゲストマシンからexitしました。
ポートフォワーディング設定
localhost:3000でrailsのスタートページが閲覧できるようにvagrantの設定をしておきます。
Vagrantfileの
# config.vm.network "forwarded_port", guest: 80, host: 8080
の行を以下のようにします。
config.vm.network "forwarded_port", guest: 3000, host: 3000
vagrant環境内とホストマシンのディレクトリを同期設定とディレクトリの作成
Vagrantfileの
# config.vm.synced_folder "../data", "/vagrant_data"
の行を以下のようにします。
config.vm.synced_folder "./my_app", "/var/www/rails_project/my_app"
Vagrantfileがあるディレクトリに my_app ディレクトリを作成しておきます。
ホストマシンのこのディレクトリが、ゲストマシンの /var/www/rails_project/my_app と同期されることになります。
Vagrantfileの設定変更を反映してディレクトリを同期する
以下のコマンドでVagrantfileの編集内容を反映します。
vagrant reload
ゲストマシン内の/var/www/rails_project/my_appディレクトリはこのとき作成されて、同期されます。
yumで色々インストールする
まず仮想環境にログインします。
vagrant ssh
参考ページにならって、以下のコマンドを実行しました。
sudo yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison git vim
以下のコマンドでgitがインストールされたことが確認できました。
git --version
rbenvでrubyをインストールする
参考ページにならって、以下のコマンドを実行しました。
git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
以下のように表示されて /home/vagrant/ にcloneされました。
Initialized empty Git repository in /home/vagrant/.rbenv/.git/
参考ページにならって、続けて以下のコマンドを実行しました。
パスを通したり、ruby-buildをインストールします。
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile $ source ~/.bashrc $ exec $SHELL -l $ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build $ cd ~/.rbenv/plugins/ruby-build $ sudo ./install.sh $ rbenv install -l
$ rbenv install 2.4.1
が、2017年2月には大丈夫だったと思うのですが、2017年5月に同じ手順でやったら以下のエラーが。
Downloading ruby-2.4.1.tar.bz2... -> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.bz2 error: failed to download ruby-2.4.1.tar.bz2 BUILD FAILED (CentOS release 6.7 (Final) using ruby-build 20170405-4-g365dd1f)
CentOS7にRails環境を整えるまで①−2(rbenv編) - Qiita を参考にさせて頂いて、ログを確認します。
まずは以下のコマンドでログファイルのファイル名を確認します。
$ ls /tmp/
次にログファイルの内容を確認します。 ログファイル名はご自身の環境にあわせてご確認ください。
$ cat ruby-build.20170505140334.2859.log
を実行してみたら以下のように表示されました。
curl: (35) SSL connect error
ということで、CentOS6.xのlibcurlが古くてcurl: (35) SSL connect errorが発生する件 - Qiitaのページを参考にさせていただきました。
以下のコマンドを実行しました。
$ sudo rpm -Uvh http://www.city-fan.org/ftp/contrib/yum-repo/city-fan.org-release-1-13.rhel6.noarch.rpm $ sudo vim /etc/yum.repos.d/city-fan.org.repo
enabled=1のところを下記のように0に編集しました。
[city-fan.org] name=city-fan.org repository for Red Hat Enterprise Linux (and clones) $releasever ($basearch) #baseurl=http://mirror.city-fan.org/ftp/contrib/yum-repo/rhel$releasever/$basearch mirrorlist=http://mirror.city-fan.org/ftp/contrib/yum-repo/mirrorlist-rhel$releasever #enabled=1 enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-city-fan.org
次に以下のコマンドを実行してlibcurlをアップデートしました。
sudo yum update --enablerepo=city-fan.org libcurl
ようやくrubyのビルドが実行できます。
$ rbenv install 2.4.1 $ rbenv rehash $ rbenv global 2.4.1
以下のコマンドで正常にインストールできているか確認します。
$ ruby -v $ which gem $ which ruby
bundlerをインストールする
参考ページにならって、以下のコマンドを実行しました。
$ gem install bundler --no-rdoc --no-ri $ rbenv rehash
railsのインストール
ここからは Vagrant で Ruby on Rails 4 の環境構築 - Qiita の「Rails のインストール」あたりから参考にさせて頂いて進めます。
MySQLを使用する場合はさきほどのページがよさそうです。
$ gem install rails $ rbenv rehash $ rails -v $ which rails
正常にインストールできたことが確認できました。
バージョンを指定しない場合、最新バージョンがインストールされるので、5.0.1がインストールされました。
bundle installでプロジェクトにrailsをインストールする
$ cd /var/www/rails_project/my_app $ bundle init
するとGemfileが作成されるので、参考ページにならってGemfileを編集します。
以下の行のコメントを解除します。
# gem "rails"
bundle installコマンドを実行してrailsをプロジェクトにインストールしますが、このとき指定するパスは、vagrantでホストマシンと同期しているディレクトリだとエラーになるので、ひとつ上の階層にvendorディレクトリを作成して、 ../vendor/bundle を指定しています。
$ su vagrant(パスワード入力) # mkdir ../vendor # chmod 777 ../vendor # exit $ bundle install --path ../vendor/bundle
同期しているディレクトリを指定した場合は以下のようなエラーが出ると思います。
Text file busy @ unlink_internal - ./siteconf20170728-2850-1xca5va.rb Gem files will remain installed in /var/www/rails_project/my_app/vendor/bundle/ruby/2.4.0/gems/nio4r-2.1.0 for inspection. Results logged to /var/www/rails_project/my_app/vendor/bundle/ruby/2.4.0/extensions/x86_64-linux/2.4.0-static/nio4r-2.1.0/gem_make.out An error occurred while installing nio4r (2.1.0), and Bundler cannot continue. Make sure that `gem install nio4r -v '2.1.0'` succeeds before bundling. In Gemfile: rails was resolved to 5.1.2, which depends on actioncable was resolved to 5.1.2, which depends on nio4r
「ホストマシンと同期しているディレクトリにbundle installするとエラーになる」件については解決策が以下のページに書いてありました。
RailsのプロジェクトをVMで共有した際にbundle installでこける問題 - Qiita
rails newしてアプリケーションを作成する
引き続き「Vagrant で Ruby on Rails 4 の環境構築 - Qiita」を参考にrailsプロジェクトを作成します。
bundle exec rails new .
参考ページにあるとおり、Gemfileを上書きするか確認されるのでYでenterします。
以下のようなエラーが出ました。
Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /var/www/rails_project/vendor/bundle/ruby/2.4.0/gems/sqlite3-1.3.13/ext/sqlite3 /home/vagrant/.rbenv/versions/2.4.1/bin/ruby -r ./siteconf20170505-15415-4si8oi.rb extconf.rb checking for sqlite3.h... no sqlite3.h is missing. Try 'brew install sqlite3', 'yum install sqlite-devel' or 'apt-get install libsqlite3-dev' and check your shared library search path (the location where your sqlite3 shared library is located). *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options.
上記のメッセージにあるとおり、yumでsqliteをインストールして、bundle installします。
sudo yum -y install sqlite-devel bundle install
次にrailsサーバーを起動します。
bundle exec rails s
以下のエラーが出ました。
Gem Load Error is: Could not find a JavaScript runtime.
Gemfileの以下の行のコメントを解除します。
# gem 'therubyracer', platforms: :ruby
以下のコマンドでtherubyracerをインストールします。
bundle install
今度はrailsサーバーが起動できるはず。
bundle exec rails s
localhost:3000にブラウザでアクセスすると、railsのスタートページが表示されました。
この記事はとりあえずここまでですが、vagrantでの開発では「railsその0002 vagrant+rails5の環境でmodelやcontrollerのファイルを編集しても反映されない問題を解決する - Motomichi Works Blog」のような問題が発生したので認識しておくと良さそうな気がします。
ここまで確認できたら、ドットインストールの「http://dotinstall.com/lessons/basic_rails_v2」とかをやると良いかもしれないです。
ctrl+c でrailsサーバーを止めます。