RoRのアプリケーションに引っ付いてくるrailsを削除してgemのrailsを見に行くようにする
たまには技術系な記事を書いてみたりもするなどしているなう。←twitter病者
Ruby on Railsを利用しているプログラムの中に、すでにrailsが入っていることがあり、それを消して、gemのrailsを見に行かせるようにがんばる話。
何がいいのか
gemで管理すると、パッケージ管理・バージョン管理が楽。特定のバージョンを指定して使うことができる。
gemって何?とかはググってね。自分の中ではrubyでのpearとかpeclみたいなもんという認識。
参考サイト
http://rubyist.g.hatena.ne.jp/muscovyduck/20071017/p1
http://d.hatena.ne.jp/kusakari/20080107/1199688126
方法
アプリケーションが入っているディレクトリを/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