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 のインストール。

gem 確認。

これで、gem env コマンドで表示される INSTALLATION DIRECTORY に bundler が入ったのを確認できます。

ここで何気に使ってたんだけど、前から気になってた rbenv exec の意味を調べてみました。

どうやら、選択中のバージョンの Ruby へのパスを $PATH の先頭に追加して実行するのと同じことらしい。ということで確実に現在の Ruby 環境でコマンドが実行されることを保証する…という意味でしょうかね。

念のため、redmine をインストールしたディレクトリへ移動後、bundle update。

bundler でインストール済みの gem の確認。

passenger の Apache 用モジュールを設定

続いて、redmine を動かすために、passenger を入れて Apache 用モジュールの設定を行います。

passenger-install-apache2-module を実行すると、最後に以下のような三行が表示されるのでコピーして、Apache の設定ファイルにペーストします。パスの詳細は環境ごとに異なるので注意。

私は、passenger.conf というファイルを作成して、httpd.conf から include させています。

で先程の Apache モジュール用の設定を確認できます。

Apache 再起動。

redmine の URL にアクセスして表示されればOK、無事に動きました。私は名前ベースのバーチャルホストで設定しています。

新たに Rails アプリを作成する

新たに Rails アプリを作成する場合は、必要な gem を Gemfile に書いて bundle install します。

bundle init で生成されたGemfileを編集。

vendor/bundle に gem をインストールして、rails アプリを新規作成。

ここで、Gemfile の上書き確認を聞かれるので Yes。Gemfile を編集後、bundle update。

コントローラーを生成して、WEBRick(ウェブサーバー)起動。

http://IPアドレス:3000/hello/index にアクセスして動作確認します。

ちなみに、bundle exec 〜 と実行すると、Gemfile で指定した gem を利用してコマンドを実行する。ここでは、vendor/bundle 以下の gem を利用することになります。

Bundler再履修: bundle execって何? gemはどこに入るの? – memo.yomukaku.net

あたりが詳しいです。

以上、Rails 開発環境の整備でした。すんなり行けました。

スポンサーリンク
パーフェクト Ruby on Rails は、最近読んだ Rails 本の中では一番役に立った本です。Chef や Capistrano など Rails と共によく使用される技術にも触れてあります。Ruby on Rails 4 アプリケーションプログラミングは、入門的な内容で Rails の機能全体を網羅されています。
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!