VagrantによるRails開発環境の動作検証をする


VagrantによるRails開発環境

今回はRailsアプリケーションが開発環境で正常に動作するか確認する。

アプリケーションを作成

MySQLを使うのでオプションでデータベースをMySQLにして作成。vagrantのファイル共有機能でホストPCとファイル共有するのでパスは「/vagrant」にした。

vagrant@ubuntu-14:/vagrant$ pwd
/vagrant
vagrant@ubuntu-14:/vagrant$ ls
Vagrantfile
vagrant@ubuntu-14:/vagrant$

アプリケーションを作成する。

rails new アプリケーション名 -d mysql

vagrant@ubuntu-14:/vagrant$ rails new project -d mysql
      create  
      create  README.rdoc
      create  Rakefile
      create  config.ru
      create  .gitignore
      create  Gemfile
      create  app
      create  app/assets/javascripts/application.js
      create  app/assets/stylesheets/application.css
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
略

アプリケーション名のディレクトリが生成され、その中にRailsアプリケーションの雛形ファイルが生成される。

ドキュメントルート変更

Apacheをインストールしてからドキュメントルート変更していないのでデフォルトのままである。Vagrant設定のIPでアクセスしたら Apache2 Ubuntu Default Page が表示された。

Railsアプリのドキュメントルートはpuclicディレクトリになるので、今回だと /vagrant/project/public になる。

今回は /etc/apache2/sites-enabled にある以下の2ファイルを修正してドキュメントルートを変更した。
000-default.confの場合は、シンボリックの/var/www/html/から指定しないと403エラーになった。
default.confの Require all granted は、Apacheのバージョンが2.4以降の場合コメントを外す。

vagrant@ubuntu-14:/etc/apache2/sites-enabled$ ls
000-default.conf  default.conf
vagrant@ubuntu-14:/etc/apache2/sites-enabled$

Phusion Passengerをdevelopmentモードで動作

ドキュメントルートを変更したので、Apache再起動後に再度Vagrant設定のIPでアクセスする。次のような403エラー画面になった。

ログをみると「Exception RuntimeError in Rack application object (Missing `secret_key_base`・・」となっており、環境変数SECRET_KEY_BASE を設定してないぞ!ってことらしい。Rails4.1 からproduction 環境では、環境変数SECRET_KEY_BASEを設定する仕様に変更されているらしくそれでエラーになっていた。

Phusion Passengerは、デフォルトではproductionモードで動作するのだが、開発環境なのでdevelopmentモードで動作させることにする。
Apacheの設定で、default.confに「RailsEnv development」を追記する。

Apache再起動後に再度Vagrant設定のIPでアクセスする。エラーが出ているがApacheでのアクセスはできた。

上記エラーだが、RailsのGemfileで「gem 'therubyracer', platforms: :ruby」がコメントアウトされている。コメントを外して bundle install でインストールすれば直る。
以上で一応開発環境の動作確認ができた。後はいくつものプロジェクトで再利用しやすいようにBOXを整理できればと思う。


[VagrantによるRails環境 関連記事]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です