
開発で必要なgemはbundlerで管理すると便利
rubyで開発する時に必要なgemはbundlerで管理すると便利ですよ。
何が便利?
rubyで開発する時、他の環境やgemのバージョンとかをReadmeに書いてインストールするのがとても煩わしい。
bundlerで管理しておけば、他の環境などでgit cloneしたらbundle installだけで開発に必要なgem(verも開発時の物)が揃う。
rubyとgemはとりあえずインストールされている物とする。
gem install bundler
bundlerとかいうgemなのに、打つコマンドはbundleなので注意。
まずはじめに
とりあえず開発スタート時にプロジェクトのディレクトリに移動してgit initのように
bundle init
を打つとgemfileというファイルが生成される。gemfileの中にgem "rails"といった書き方のサンプルが書いてある。例に習って開発に必要なgemを書いていく。もしもverを指定したい時であればgem "sinatra", "1.4.4"といった書き方になる。
必要なgemを書き終えたらbundle installするのだが、そのまま打つと開発PCのruby環境のgemにインストールしてしまう。なんか不具合とか分からないけど、インストールする場所を指定しておけば消す時も簡単らしいので、作法に従っておく。
bundle install --path vendor/bundle
bundler公式のオススメでvendor/bundleにしておいたけど、これって普通にbundleとかgemとかの方が分かりやすくていいんじゃないの?これに関してはちょっと調べてみたい。極力階層を深くしたくないし、シンプルでいくべきだと思うのだが。(今はスルーだけど)
上記のbundle installをすると/.bundle、/vendor、gemfile.lockの3つが生成される。./.bundleの中にはconfigが入っていて、bundle installした時のオプションが保存されるので、次はbundle installすればわざわざpathを指定しなくても大丈夫になる。/vendorにはgemのインストール先に設定したのでgem関連がゴソっと入ってる。gemfile.lockにはインストールしたgemのverが保存されている。
gitを使っている場合、/vendorの中身が多いし変更する機会が多いので.gitignoreを指定しておいた方が良さそう。
$ touch .gitignore
$ echo /vendor >>.gitignore
これでgemの管理とかをReadmeにわざわざ書かなくてもOK。
requireをBundler.requireでまとめて完了
bundleの設定が終わったら、rubyファイルのrequireも簡単になる。
require "bundler"
Bundler.require
で大丈夫。これから開発する時はbundleでgemを管理しよう。