rubygemsエコシステム:
"gem install" するその前にチェックしておきたい項目
実行環境を調べて、 本当に現在の環境のgemコマンドとインストール先で良いか確認を推奨。
$ gem environment
確認せずに、うっかり gem install するとこんなトラブルに遭遇します。
- Linuxディストリビューションのパッケージでインストールされたgemとバージョンが衝突して泣く。
- Rails3で開発していて、途中からRails4での開発も並行するようになり、バージョンや依存ライブラリが衝突して泣く。
- あるアプリの新規開発でgem installやgem updateしたら、別のアプリの依存関係やバージョン依存に影響が出てしまい、動かなくなり、泣く。
以下の点を十分吟味し、必要に応じて rbenv + ruby-build(Ruby/rbenv, ruby-buildメモ(2014-02版)) や Bundler (Ruby/Bundlerメモ) を導入して、適切な場所にインストールします。
- 現在PATHに通っているgemがどこ由来(ディストリビューションのパッケージ / brew / rvm / rbenv + ruby-build)か。
- もし他のアプリが同じライブラリの別バージョンにロックインされても影響しないか。
- nativeビルド(コンパイル)が必要なgemを導入してコンパイルエラーが発生した状況を想定して、そうしたトラブルに対処出来るだけのノウハウや時間リソースを確保できているか。
- 開発するアプリケーションのライフサイクル的に、本当にそこで/そのバージョンで/あるいは、そのライブラリが本当に妥当か。
参考
- Ruby - gemファイルのインストール場所を調べたりする方法 - Qiita
- Railsの異なるバージョンを共存させために複数のRubygemsを設定 - タナカイチロウの日記
- [ruby] gemをユーザー領域にインストールする - 生活。
GEM_HOME, RUBYLIB 環境変数の調整
- 公式ガイドの、"gem environment" の解説で、GEM_PATH/GEM_HOMEの違いとか、環境設定の説明とかありました。
- Illustrates GEM_HOME vs GEM_PATH
- ruby - What's the difference between GEM_HOME and GEM_PATH? - Stack Overflow
※GEM_HOMEはgemの「インストール先ディレクトリ」の設定。GEM_PATHは、gemの「探索対象ディレクトリ」の設定。そのため、GEM_HOMEは一つしか設定しないが、GEM_PATHはOSのPATH分割文字列を使って複数のインストール先を指定できる、と理解してます。(2014-02現在の認識。間違ってたらすみません、指摘してもらえれば随時修正します)
プレーンテキスト形式でダウンロード