4月 4th, 2010at 23:28

Tags: ,

社内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のバージョンを固定して設定したほうがよさそうだと思ったのです。

このエントリーをはてなブックマークに追加