- 更新日: 2013年8月11日
- Rails
rbenv 管理下の Ruby での Rails 開発環境を整えて Redmine を動かす
Mac の Ruby 管理を rvm から rbenv に乗り換え したため、ローカル環境の Mac(Mac OS X Lion 10.7.5)にインストールして使っていた redmine が動かなくなりました。rvm を消した際に、gem もなくなるし、入れた Ruby のバージョンも微妙に変えたりで当然です。予測済みの想定範囲のことだったので対処します。
Redmine を動かしていた rvm 管理下の ruby の gem に passenger を入れていたので、それが消えたのが動かなくなった直接の原因。ということで、新たに passenger を入れなおして Apache モジュール用の設定を行います。
作業としては、Redmine の動作を正常に戻す過程と同時に、Rails の開発環境を整えるのが目的です。
bundler のインストール
rbenv 環境で選択中の Ruby でグローバルにインストールする gem は bundler と passenger のみにします。それら以外の gem は bundler でアプリケーション固有のディレクトリ app/vendor/bundle 以下にインストールします。まずは、bundler のインストール。
1 2 3 4 5 |
$ rbenv global 1.9.3-p448 $ rbenv exec gem install bundler $ rbenv rehash |
gem 確認。
1 2 3 4 5 6 7 |
$ gem list ... $ gem env RubyGems Environment: ... |
これで、gem env コマンドで表示される INSTALLATION DIRECTORY に bundler が入ったのを確認できます。
ここで何気に使ってたんだけど、前から気になってた rbenv exec の意味を調べてみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ rbenv help exec Usage: rbenv exec <command> [arg1 arg2...] Runs an executable by first preparing PATH so that the selected Ruby version's `bin' directory is at the front. For example, if the currently selected Ruby version is 1.9.3-p327: rbenv exec bundle install is equivalent to: PATH="$RBENV_ROOT/versions/1.9.3-p327/bin:$PATH" bundle install |
どうやら、選択中のバージョンの Ruby へのパスを $PATH の先頭に追加して実行するのと同じことらしい。ということで確実に現在の Ruby 環境でコマンドが実行されることを保証する…という意味でしょうかね。
念のため、redmine をインストールしたディレクトリへ移動後、bundle update。
1 2 3 4 |
$ cd /var/www/redmine $ bundle update |
bundler でインストール済みの gem の確認。
1 2 3 4 |
$ bundle list ... |
passenger の Apache 用モジュールを設定
続いて、redmine を動かすために、passenger を入れて Apache 用モジュールの設定を行います。
1 2 3 4 5 |
$ rbenv exec gem install passenger $ rbenv rehash $ rbenv exec passenger-install-apache2-module |
passenger-install-apache2-module を実行すると、最後に以下のような三行が表示されるのでコピーして、Apache の設定ファイルにペーストします。パスの詳細は環境ごとに異なるので注意。
1 2 3 4 5 |
LoadModule passenger_module /var/www/redmine/vendor/bundle/ruby/1.9.1/gems/passenger-4.0.10/buildout/apache2/mod_passenger.so PassengerRoot /var/www/redmine/vendor/bundle/ruby/1.9.1/gems/passenger-4.0.10 PassengerDefaultRuby /Users/user/.rbenv/versions/1.9.3-p448/bin/ruby |
私は、passenger.conf というファイルを作成して、httpd.conf から include させています。
1 2 3 |
$ rbenv exec passenger-install-apache2-module --snippet |
で先程の Apache モジュール用の設定を確認できます。
Apache 再起動。
1 2 3 |
$ sudo apachectl restart |
redmine の URL にアクセスして表示されればOK、無事に動きました。私は名前ベースのバーチャルホストで設定しています。
新たに Rails アプリを作成する
新たに Rails アプリを作成する場合は、必要な gem を Gemfile に書いて bundle install します。
1 2 3 4 5 |
$ mkdir /var/www/newapp $ cd /var/www/newapp $ bundle init |
bundle init で生成されたGemfileを編集。
1 2 3 4 5 6 7 |
$ vi Gemfile # A sample Gemfile source "https://rubygems.org" gem "rails", "3.2.13" |
vendor/bundle に gem をインストールして、rails アプリを新規作成。
1 2 3 4 |
$ bundle install --path vendor/bundle $ bundle exec rails new . |
ここで、Gemfile の上書き確認を聞かれるので Yes。Gemfile を編集後、bundle update。
1 2 3 4 |
$ vi Gemfile $ bundle update |
コントローラーを生成して、WEBRick(ウェブサーバー)起動。
1 2 3 4 |
$ bundle exec rails generate controller Hello index $ bundle exec rails s |
http://IPアドレス:3000/hello/index にアクセスして動作確認します。
ちなみに、bundle exec 〜 と実行すると、Gemfile で指定した gem を利用してコマンドを実行する。ここでは、vendor/bundle 以下の gem を利用することになります。
Bundler再履修: bundle execって何? gemはどこに入るの? – memo.yomukaku.net
あたりが詳しいです。
以上、Rails 開発環境の整備でした。すんなり行けました。
- – 参考リンク –
- Ruby + bundler + Rails => Hello World – Qiita [キータ]
- Murajun’s Blog: Macでrbenvを使ってRails環境を構築したよ
- Rails の関連記事
- RailsでMySQLパーティショニングのマイグレーション
- Rails ActiveRecordでdatetime型カラムのGROUP BY集計にタイムゾーンを考慮する
- RailsプラグインGemの作成方法、RSpecテストまで含めたrails pluginの作り方
- RailsでAMPに対応するgemをリリースしました
- Railsでrequest.urlとrequest.original_urlの違い
- Railsでwheneverによるcronバッチ処理
- Google AnalyticsのRails Turbolinks対応
- Railsアプリにソーシャル・シェアボタンを簡単設置
- Rails監視ツール用にErrbitをHerokuで運用
- Facebook APIバージョンのアップグレード手順(Rails OmniAuth)
Leave Your Message!