科学・技術政策で神経衰弱をやろう!

という主旨の試みのように思えてしょうがない。総務省文科省経産省は、明らかにツッコミ待ち。お前ら、施策が被りすぎじゃ!

17日の正午までですが、応援したい、あるいはストップさせたい施策がありましたら、遠慮なく意見しましょう。書けるのは高々400字ですから、ほんの一言というところです。

でも、こういう試みをすること自体は心から指示していますよ!

異なる環境でBundlerで管理しているgemライブラリーに関するトラブルが生じたとき

Rails 3.0からは、gemライブラリーをつかうとき、Bundlerというシステムで管理している。使いたいgemライブラリーをGemfileに明記しないといけない。

それで、2つの異なる環境で同じRailsプロジェクトを動かそうとしたとき、開発環境と本番環境でgemライブラリーのバージョンが違っていたためハマった。

開発環境は、rake 0.8.4 が入っており、本番環境は rake 0.8.7 が入っていた。本番環境で、rakeを使おうとすると「0.8.4をつかえ」と何度もメッセージが出る。理由は、開発環境と本番環境でGemfile.lockを共有していたため、Gemfile.lockは、bundle install コマンドを実行すると生成される。Gemfileの内容は同じでも、gemライブラリーが異なるとGemfile.lockの内容は異なる。なので、以下のようにするべき。

  1. 開発環境と本番環境ではGemfile.lockは共有しない
  2. 開発環境と本番環境ではそれぞれGemfile.lockを生成する
% bundle install (ネット上からライブラリー情報を得るとき)
% bundle install --local (既にインストール済みのgemライブラリーから生成するとき)

gemライブラリーのバージョンに関するメッセージがでたらGemfile.lockを一度削除して、bundle install コマンドで再度生成してみることをおすすめする。