mongoid/mongo/bson/bson_ext最新版をインストールしてると、違うバージョンのbsonをloadしようとしてエラーが出て困る
全て最新のもの、つまりmongoid(2.0.0.beta.16)とmongo(1.0.8)とbson(1.0.6)とbson_ext(1.0.6)を使っていて、
require 'rubygems' gem 'mongoid','2.0.0.beta.16' require 'mongoid'
するとエラーが出る
/Users/sho/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/site_ruby/1.8/rubygems.rb:233:in `activate': can't activate bson (= 1.0.4, runtime) for ["mongoid-2.0.0.beta.16"], already activated bson-1.0.6 for ["mongo-1.0.7"] (Gem::LoadError)
とりあえずこうするとなんとかなる
gem uninstall bson --version "= 1.0.6" gem uninstall bson_ext --version "= 1.0.6" gem uninstall mongo --version "= 1.0.8" gem install bson --version "= 1.0.4" gem install bson_ext --version "= 1.0.4" gem install mongo --version "= 1.0.7"
たぶん、mongoidの中でbsonを1.0.4で指定してloadしてて、でもmongoidがloadしてるmongo 1.0.7がbsonをバージョン指定せずにloadしているとかじゃないか?と思うのでちょっとソース読んでみる
探してもbsonをバージョン指定して読み込んでる箇所が無かった。
そのかわり、アプリ側でこう書けば先に1.0.4のbsonが読まれるのでなんとかなる!!
gem 'bson','1.0.4' gem 'bson_ext','1.0.4' gem 'mongoid','2.0.0.beta.16' require 'mongoid'
でも気持ち悪いからなんとかしたいな・・