@a_matsuda と Asakusa.rb で rbenv みたいなやつを使ってる時に gem ってなんで共有できないんでしたっけ?という話をしていてなんでだっけなあと考えたら一つには $GEM_HOME/bin
をPATHに通すというのを rbenv などで切り替えるたびにやる必要があるから、とかだけど、それはやればいいだけだしなあ...と特に決定打も無いので共有するようにしてみた。
本質的な課題としては、複数のアプリケーションやソフトウェアを開発していると 2.5.1, 2.5.3 など teeny バージョンごとにインストールされている gem がバラバラで、片方には入ってるけど片方には入ってない、みたいのがとにかくストレスなので gem i
や bundle i
は一回だけにしたい、って感じ。
以下やったことです。
GEM_HOME=$HOME/.gem/share
に設定$HOME/.gem/share/bin
を rbenv の shims よりも手前に入れるって感じで、あとは開発しながら gem を入れて、共有されて native extension がからの場合は pristine をして、というのを繰り返す。これやる中で、いくつか RubyGems の変な動きがたくさん出てきた、というのがイマココ。例えば
gem pristine --extensions
を実行するとなぜか違う platform、例えば CRuby で実行しているのに java な gem を rebuild しようとして死ぬなどなど...これ誰も使ってないんじゃねーの、という感じの不具合ばかりなので頑張って直そう...