hogelogが作ってくれたスクリプトを使うときにこんなコマンド使った
bundle exec ruby bin/expand_twitter_attributes.rb
bundleってなんだろう。と思って教えてもらったことのメモ。
rubygems
ruby用のライブラリの管理システム。rubygemsで管理されてるライブラリのことをgemって呼んだりする。gemコマンドでは、rubygemsで管理しているライブラリをインストールしたりアンインストールしたりできる。
Gemfile
利用するgemを記述するファイル。
Bundler
rubygemsとともに使うパッケージ管理システム。
コマンドは
bundle hoge
Gemfile.lock
Gemfileを作ったあとに
bundle install
したらできるファイル。Gemfileに書かれているgemの、コマンドを実行した時点でのバージョンが書かれている。Gemfile.lockがすでに存在するときにbundle installしても、上書きされたりはしないので安心しろ。
bundle exec
ざっくり言うと、
Gemfile.lockに書かれているgemのバージョンの環境で、以下のコマンドを実行しなさい。
という意味。
ざっくりした話
スクリプトを作った時と使う時では、gemのバージョンが違うことは多々ある。そうすると、作った時点ではちゃんと動いていたのに、いざ使おうとしたときには動かなくなってしまう。それを防いでくれるのがGemfileとBundlerと、それらによってできるGemfile.lock。