社内SNS SKIPアップデートでハマったことを調べたの

感想おまちしてます!

SKIPというより、Railsアプリケーションのアップデートだと思う。
いつもはまるところがあったので、ちょっと調べてみた内容を共有。

can’t activate , already activated locale-2.0.5

gemのバージョンがあってないときに出るらしい。今はいっているgemを見てみると・・・

2.0.5はそろっているけど、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」をたたくことにした。
すると以下のように怒られる。

Rails2.2でmysql.rbドライバーが消えたらしい。
よって、「gem install mysql」してねっていうけどそれやったら怒られるんだってばさ・・・。
どうもmysql.soからlibmysqlclient.soが見えないという意味らしいの
で、以下を行う。(参考:ref:http://www.ruby-forum.com/topic/98177)

これをやったあとにgem installすればうまくいった。

まとめ。
Railsのアップデートや様々なgemの共存は大変。
Railsアプリを作るときはgemのバージョンを固定して設定したほうがよさそうだと思ったのです。