bundle installでプロジェクトのvendor以下にgemを入れる
やっぱvendor下に入れたいなぁ
以前記事で、 http://binthec.hatenablog.com/entry/2018/01/27/230500binthec.hatenablog.com
spina というgemになってる?CMSを入れたのですが、vendor 下にあると思ったら無くて、色々探してみたらどうやら rbenv 配下に入っているらしくて。
/user/local/rbenv/versions/2.4.3/lib/ruby/gems/2.4.0/gems
なんでそんな所に……?と思ってTwitterでぼやいていたら、親切な方がプロジェクトの vendor 下に入れる方法があるんだよーと教えてくれたので、そっちの方法で入れてみることにしました。
ついでに、rbenv は /user/local の下にあったんですが、結局ホームディレクトリの /home/vagrant 以下に入れ直しました。
vendor 下に入れてみる
--path vendor/bundle を指定し、railsアプリケーション用のディレクトリ配下のvendor/bundleディレクトリにgemをインストール
これにより、gemをrailsプロジェクト毎に管理できる!!
--jobs=4 を指定するとbundle installを並列処理で実行できる
参考 rails newの先輩オススメ手順 - まえとうしろ
とのことなので、
$ bundle install --path vendor/bundle --jobs=4
を Gemfile がある所で叩いてみます。
$ pwd /home/vagrant/common/hoge_project/vendor $ ls -la 合計 0 ... -rw-r--r--. 1 vagrant vagrant 0 1月 6 21:34 2018 .keep
空っぽだった中身が……
$ ls -al 合計 0 ... -rw-r--r--. 1 vagrant vagrant 0 1月 6 21:34 2018 .keep drwxr-xr-x. 1 vagrant vagrant 96 2月 7 22:07 2018 bundle
あ、なんか出来てる。
もりもり下の方まで下っていくと……
$ pwd /home/vagrant/common/introduction/vendor/bundle/ruby/2.4.0/gems $ ls -la 合計 0 drwxr-xr-x. 1 vagrant vagrant 2432 2月 7 22:13 2018 . drwxr-xr-x. 1 vagrant vagrant 288 2月 7 22:13 2018 .. drwxr-xr-x. 1 vagrant vagrant 192 2月 7 22:12 2018 actioncable-5.1.4 drwxr-xr-x. 1 vagrant vagrant 192 2月 7 22:12 2018 actionmailer-5.1.4 drwxr-xr-x. 1 vagrant vagrant 192 2月 7 22:12 2018 actionpack-5.1.4 drwxr-xr-x. 1 vagrant vagrant 192 2月 7 22:12 2018 actionview-5.1.4 . .
おーめっちゃ増えた。階層はやっぱ深いけど、でもプロジェクト内にある方がなんか馴染みがある。それに合理的だと思う。
この辺はもう、Rails やってる人達にしてみたら「何を当たり前の事を今更…」レベルなんだろうな……先は長い。
余談
gem というのが composer のようなものと思っていたら、どうやら若干ハズレていて、bundler というのが互換性などを見ながら gem を管理してくれているものみたい。
bundler本体以外のgemは基本的にbundler経由でインストールを行うのがおすすめです
とのこと。
ふーん、なるほど。了解です。