woshidan's blog

あいとゆうきとITと、とっておきの話。

RubyとrbenvとgemとBundlerと環境ごとのgem

いまさらですが、こないだ会社でRailsに携わるもののたしなみとしてnokogiriのインストールにはまったときに先輩に教えていただいたときのメモ。

  • rbenvでRubyのバージョンを管理している場合、local*1やglobal*2を管理している際、systemと表記されているのはrbenvを介さずにPCにインストールされているRubyを指す
    • MacだとデフォルトでインストールされているRubyがsystemと表記されているのを見かけるのが多い
  • rbenvないし、systemと表される開発者のPCにインストールされたRubyに対する形でgemをインストールしていく
    • gem(RubyGems)はRuby に特化した apt-get と同じようなパッケージングシステムでgemはこれに対応する形で公開されている
  • Bundlerはカレントディレクトリに置かれたGemfileの内容に基づいて自身以外のgemの依存関係を管理するgemである.
    • gemであるので、バージョンや管理場所が異なるRubyごとにインストールする必要がある
    • /Users/woshidan/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/rails-4.2.1 のようにRubyに対応する場所にインストールされているgemをGemfileで指定された条件で利用させるようにする

f:id:woshidan:20170130224653p:plain

あわせてよみたい参考記事。

qiita.com

qiita.com

オブジェクト指向スクリプト言語 Ruby | ライブラリ

*1:特定のディレクトリ以下でのバージョン. globalより優先

*2:rbenvで管理している範囲全体に適用