gem管理の徹底

公開日:2019-02-12
最終更新:2019-02-27

path指定してgem管理を徹底する手順

  1. ruby環境は、rbenvを使って、複数のバージョンを切り替えられるようにして導入する。
    rubyのバージョン管理は anyenvとかrbenvの話 へ。

  2. rbenv環境下のruby環境にインストールするgemはbundlerのみ。

  3. railsもローカルにインストールすることで、ruby環境を特定のバージョンのrailsに縛られず、複数のバージョンのrailsプロジェクトを作成・共存できるようにする。

  4. ほとんどのgemをrailsプロジェクト内に閉じた形でインストール・管理する。
    (つまり、railsプロジェクトのvender/bundleディレクトリ内にgemをインストールする)

 

bundlerのインストール

bundlerのインストール

rbenv exec gem install bundler
rbenv rehash

rbenv exec を付けることで、rbenvで適用されている(バージョンの)rubyのgemを明示的に実行する。
rehashはインストールしたgemを認識させるために行う。

 

補足:現在使用しているrubyにインストール済みのgemを確認するには

rbenv exec gem list

 

以下、gemを全てプロジェクトディレクトリにインストールする前提で進めるが、bundlerpryなど、どのプロジェクトでも使用したい、且つ、常に最新バージョンでよいものはrbenv exec gem install 〜で入れたり、使い分けるとよい。

 

bundlerを使って一時的にrailsをローカルにインストール

プロジェクトを置きたいディレクトリに移動し、gemファイルを作る。
バージョンを指定しなければ、最新版が入る。

下記の手順でそのまま進めた場合、ディレクトリの階層は
現在のディレクトリ/workspace/newapp 以下にrailsのプロジェクトを置くことになります。

 

workspaceという名前のディレクトリを作成。

mkdir workspace

workspaceへ移動する。

cd ./workspace
 

Gemfileを作成

vimやAtomエディタで作成、編集する。

vim Gemfile

または

atom Gemfile
 

Gemfile

railsのバージョンを指定する場合はバージョン番号を○.○.○の部分に書く。

source "http://rubygems.org"  
gem "rails", "○.○.○"
 

railsをインストール

workspaceディレクトリ内にvender/bundleというディレクトリを作り、そこにrailsのみインストールする。

bundle install --path vendor/bundle

--path vendor/bundleをつけることで、gemのインストール先がruby環境(rbenv)でなく、プロジェクトのvendor/bundleディレクトリ以下になる。

ここに入れたrailsは後で消す。

 

rails newする

--skip-bundleをつけないとruby環境にインストールされてしまう。

bundle exec rails _VERSION_ new newapp --skip-bundle

_VERSION_ の大文字の部分には_5.2.0_などバージョン番号が入る。

例:bundle exec rails _5.2.0_ new newapp -d postgresql —skip-bundle

 

ls -aworkspaceディレクトリを確認すると以下のようになる。
.bundle/
Gemfile
Gemfile.lock
/vender/bundle/ruby/・・/gems/・・
appname

 

一時的にインストールしたrailsを削除

workspace内に置いたbundlerと、railsを削除

workspace以下に置いたbundlerはrailsをインストールするためだけに使用した。
実際に使用するgemなどはnewapp内のGemfileに書いていく。

rm -f Gemfile  
rm -f Gemfile.lock

-f はエラーメッセージを表示しない。

rm -rf .bundle  
rm -rf vendor/bundle

rm -rf は中身の入ったディレクトリを削除。

 

ls -aworkspaceディレクトリを確認すると以下のようになる。
.bundle/
Gemfile
Gemfile.lock
/vender/bundle/ruby/・・/gems/・・
newapp

 

プロジェクトにgemをインストール

newapp内にgemをインストールする(railsを含む)

プロジェクトnewapp内のGemfileを編集後、newapp/vender/bundle ディレクトリ以下にインストールする。

cd newapp
bundle install --path vendor/bundle
 

gemそのものはgitで管理しない

gemをgitの管理から外す

.gitgnoreに/vendor/bundle.bundleを追記する。
必要なgemはGemfileとGemfile.lockに書いてあるので、gem自体をgitにあげる必要はない。

 

 

以上の手順でrailsを含む全てのgemをプロジェクト単位で管理できるようになる。

railsのインストール先がruby環境のままで良いなら、コマンドはたったの1行。

rbenv exec gem install rails -v 5.2.0

たくさんのバージョンのrubyとrailsが共存しない場合は、徹底して別けることもないのかもしれません。

記事が少しでもいいなと思ったらクラップを送ってみよう!
0
+1
学んだことの整理と忘備録としてアウトプット始めました。ログは自分用のちょっとしたメモ書き。

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする