- 更新日: 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)

 画像付き英語辞書 Imagict | 英単語をイメージで暗記
画像付き英語辞書 Imagict | 英単語をイメージで暗記









Leave Your Message!