- Ruby / Rails関連
READ MORE
こんにちは、hachi8833です。先週、Rubyで頻繁に使われるツールであるBundlerの1.15がリリースされました(その後バグ修正の1.15.1がリリースされました: 後述)。今回のリリースの目玉は、動作が高速化され、manのヘルプが充実したことです。
基本以外のコマンドでは、bundle outdated
、bundle init
、bundle issue
、bundle env
が便利そうです。
bundlerのコマンドはbundle
でちょっぴり紛らわしいのですが、いつの頃からなのかbundler
でも動くようになっています。普通はbundle
を使います。
以下のリストはよく使いそうな順に並べてあり、新しいコマンドには 1.15~:と表示しています。オプションを全部書くと煩雑になるので、「詳細」リンクにとどめました。
通常運用であれば、bundle install
、bundle update
、bundle exec
の3つのコマンドで事足ります。細かいオプションは多数ありますが、Gemfileでgemリストを編集するのであれば使う必要はそれほどないと思います。
コマンドの多くは、カレントディレクトリにGemfileがないと実行できません。
bundle install
(またはbundle
)--path vendor/bundle
を指定するのがルールになっています(1度指定すればカレントディレクトリに設定が保存されます)。--path
を指定しないと、カレントではなくシステム側にgemがインストールされます。「システム側」とは、gem install
でインストールされるのと同じ場所です。システム側のgemはgem list
で表示できます。bundle update gem名
注意: gem名を指定しないと、Gemfile.lockを消して作り直すので、Gemfileのgemがすべて更新されてしまいます。
bundle exec gemコマンド
bundle exec
を付けないと、普通にシェルの$PATHのコマンドを実行します(=bundlerのコンテキストを無視する)。詳細最も使用頻度が高いコマンドかもしれません。
bundle exec rails
かbin/rails
のいずれかでrails
コマンドなどを実行します。bundle exec
で実行すると、システム側にインストールされているgemは無視されます。bundle env
bundle platform
で取れる情報を含め、ありったけの情報をmarkdownで出力します。カレントディレクトリにGemfileがなくても実行できるので、何か調べるときに最初に入力する感じです。なぜかmanにも公式ドキュメントにも項目が見当たりません。Gemfileを見ながらドキュメントを書くのに便利そうです。
bundle init
rails new
用に使えるので便利です。詳細# frozen_string_literal: true
source "https://rubygems.org"
# gem "rails"
--gemspec ファイル名
を追加するとgemspecファイルを元にGemfileを作成できます(gem開発用)。bundle outdated
bundle config
bundle config 設定 値
で設定を追加・更新できます。詳細bundle platform
bundle issue
の方が便利です。bundle issue
brew doctor
に少し似た感じです。bundle add gem名
bundle install
を実行します。gemのバージョンやインストール元URLを指定したり、-g
でグループも指定できます(グループのブロックには挿入せず、Gemfileの末尾に追加します)。詳細bundle inject
の動作が複雑で使いにくいというフィードバックを元に、動作を簡素化したとのことです。bundle inject gem名 バージョン
bundle install
を実行します。バージョンは省略できません。詳細bundle pristine
bundle pristine
は、gem pristine
にヒントを得たそうです。bundle check
bundle viz
bundle package
bundle install --path vendor/bundle
を実行した後であれば、vendor/cacheにgemを保存します。bundle clean
bundle help
bundle gem gem名
bundle show
bundle show
は次のbundle info
に置き換えられるそうです。ただし今はbundle info
はgem名なしでは実行できません。bundle info gem名
bundle open gem名
bundle console
bundle version
早くもバグ修正用の1.15.1がリリースされました。
bundle lock --update GEM
: gemがlockfileにない場合に落ちる問題を修正bundle init --gemspec
gemspecファイルが無効な場合に落ちる問題を修正bundle install --force
: Gemfileにgit gemがある場合にも動作するよう修正bundle env
: bundle configの設定がある場合に出力するよう修正