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_youtube は activesupport 2.0.2 を要求する。
なのでこのエラーになったと思われる。
では、これを回避するにはどうするか。
ググってみるとRubyGems User GuideにUsing 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 系が主流なので、少し不安だ。