社内SNS SKIPアップデートでハマったことを調べたの
SKIPというより、Railsアプリケーションのアップデートだと思う。
いつもはまるところがあったので、ちょっと調べてみた内容を共有。
can’t activate , already activated locale-2.0.5
gemのバージョンがあってないときに出るらしい。今はいっているgemを見てみると・・・
>gem list locale *** LOCAL GEMS *** locale (2.0.5) locale_rails (2.0.5, 2.0.4)
2.0.5はそろっているけど、2.0.4がないのが怪しい。よって入れてみる。
gem install locale -v 2.0.4
すると進んだ。
uninitialized constant MysqlCompat::MysqlRes
migrateしたときに、様々な状況でこのメッセージが出る。Redmineのmigrateでも経験あり。
わかったのが、「gem install mysql」をたたくと20100404だと2.8.1がインストールされるが、それがうまくビルドできない場合があるみたい。その時は、gemのディレクトリに入って、自分makeして対応したのだけれど、昔のバージョン(2.7)はすんなりインストールできたので、「gem uninstall mysql -v 2.8.1」して「gem install gem install mysql -v 2.7」をたたくことにした。
すると以下のように怒られる。
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql. rake aborted! libmysqlclient.so.15: cannot open shared object file: No such file or directory
Rails2.2でmysql.rbドライバーが消えたらしい。
よって、「gem install mysql」してねっていうけどそれやったら怒られるんだってばさ・・・。
どうもmysql.soからlibmysqlclient.soが見えないという意味らしいの
で、以下を行う。(参考:ref:http://www.ruby-forum.com/topic/98177)
export LD_LIBRARY_PATH=/usr/local/mysql/lib/mysql:$LD_LIBRARY_PATH
これをやったあとにgem installすればうまくいった。
まとめ。
Railsのアップデートや様々なgemの共存は大変。
Railsアプリを作るときはgemのバージョンを固定して設定したほうがよさそうだと思ったのです。




