gemパッケージのバージョンが衝突する件

さて、アプリケーションの作成に取り掛かる。

% rails yttest
% cd yttest
% ruby script/generate model video
% ruby script/generate controler video
% vi app/views/video/list.rhtml # 動画一覧を表示する画面を適当に作成

まずはactive_youtube を使えるかの確認のため、app/controllers/video_controller.rb に、以下のように書いてみる。

require 'active_youtube'

で、webrick を動かして http://localhost:3000 にアクセスすると

can't activate activesupport (>= 2.0.2), already activated activesupport-1.4.4]

というエラーが発生。
現在使っている rails のバージョンは 1.2.6。これは activesupport 1.4.4 を要求する。
一方、active_youtubeactivesupport 2.0.2 を要求する。
なのでこのエラーになったと思われる。


では、これを回避するにはどうするか。
ググってみるとRubyGems User GuideUsing Explicit Versionsという説明を見つけた。
説明では require_gem となっているが、これは obsolete なので gem コマンドを使って、以下のようにすればいいらしい。これを config/environment.rb に追加してみた。

require "rubygems"
gem "activesupport", "=2.0.2"
require "activesupport"

しかし効果なし。

さらに続く説明Using Configured Versionsには設定ファイルを用いてgemパッケージのバージョンを指定する方法も書かれている。
これも試したが、やっぱりダメ。症状変わらず。


んー、どうしたものか。
やっぱ元を断たなきゃだめか?というわけでさっくりとrailsのバージョンを2.0.2に上げてみた。

gem rails update --include-dependencies -y

効果てきめん。
エラーは消え、active_youtube をロードできた。
やはりこれからは rails 2.0 系でいくのが良いのか?
でも web や書籍の情報は 1.2.6 系が主流なので、少し不安だ。