検討!目論見検討委員会

最近はコミケの締切情報メイン

RoRのアプリケーションに引っ付いてくるrailsを削除してgemのrailsを見に行くようにする

たまには技術系な記事を書いてみたりもするなどしているなう。←twitter病者
Ruby on Railsを利用しているプログラムの中に、すでにrailsが入っていることがあり、それを消して、gemのrailsを見に行かせるようにがんばる話。

何がいいのか

gemで管理すると、パッケージ管理・バージョン管理が楽。特定のバージョンを指定して使うことができる。
gemって何?とかはググってね。自分の中ではrubyでのpearとかpeclみたいなもんという認識。

方法

アプリケーションが入っているディレクトリを/home/testとする。まずはそのディレクトリへ。

 cd /home/test

次に、アプリケーションの中のrailsを削除。リネームでも大丈夫だった。

 rm vendor/rails

gemsをインストールした上で、忘れずにgemのrailsをインストールしておく。依存関係があった気がするけど「-y」つけるとよろしくやってくれるらしい。

 gem install rails -y

関係ないけど、何故か外に出られない環境では、
http://gems.rubyforge.vm.bytemark.co.uk/gems/(表示に時間かかるので注意)
から、必要なgemを持ってきて、同じディレクトリで

 gem install rails --local

とかやる。railsは依存関係が(ry

次に、設定ファイルの変更

 vi config/environment.rb

の、RAILS_GEM_VERSION='2.1.0'とかして、さっき入れたrailsのバージョンに設定しておく。
何も書かなければ、最新のバージョンを使ってくれるらしい(未確認)。

 rake rails:update:configs

すると、自分の環境ではエラーが出た。rake --trace rails:update:configsでトレース。エラー箇所が分かる。
原因は参考サイトの2番目だったので

 vi config/boot.rb

の、「require_gem」を「gem」に書き換え。改めて実行。

 rake rails:update:configs

サーバを起動させ、エラーなければ問題なし

 ./scripts/server

サーバ起動する。他にwebサーバが動いてるとエラー(ポート80がどうのこうの言ってくる)。起動して動作確認。ctrl-cでストップできる。
その後に改めてWebサーバを起動。
現在使っているgemsのバージョンを表示するには以下のシェルを実行。

 ./scripts/about

その結果:

     *******************************************************************
     * config.breakpoint_server has been deprecated and has no effect. *
     *******************************************************************

 About your application's environment
 Ruby version              1.8.7 (i686-linux)
 RubyGems version          1.2.0
 Rails version             2.1.0
 Active Record version     2.1.0
 Action Pack version       2.1.0
 Active Resource version   2.1.0
 Action Mailer version     2.1.0
 Active Support version    2.1.0
 Application root          /home/test
 Environment               development
 Database adapter          mysql
 Database schema version   0