Bundler
公式サイト:
Bundler – The Best Way to Manage a Ruby Application’s Gems [Official]
使い方
参考:
Bundler を使った RubyGems の管理について | 30歳からのプログラミング
Ruby の Gem をプロジェクト毎に Bundler で管理する | fugafuga.write
Bundler を使って Gem をインストールする | ローイングファンの日記
Bundler、bundle exec について – Qiita
Bundler を使った Gem パッケージの管理 | Ruby on Rails 入門
Bundler 1.15 の全コマンド | TechRacho
Bundler の使い方/Gem 管理 | TASK NOTES
Ultimate Guide to Ruby Gems, Gemfiles & Bundler | RubyGuides
How to Manage Application Dependencies with Bundler | Bundler [Official]
How to Use Bundler with Rails | Bundler [Official]
How to Use Bundler with Ruby | Bundler [Official]
How to Use Bundler in a Single-File Ruby Script | Bundler [Official]
導入
参考:
Bundler で Gem をプロジェクトごとに管理する | DevelopersIO
意外とよくわかっていない Bundler について | Enjoy IT Life
Bundler を使い始めた時に詰まったので調べた | それマグで!
概要
参考:
Bundler の使い方 | Kazunori Kamiya
gem コマンド
参考:
bundle コマンド
参考:
bundle install
参考:
bundle install | Bundler 日本語ドキュメント (Ruby STUDIO)
bundle install | Bundler [Official]
bundle-install – Install the Dependencies Specified in Your Gemfile | Ubuntu Manpage
Rails Bundle Install and Gemfile | DZone Web Dev
bundle install --path
参考:
rails で bundle install する時にインストールパスを指定 – Qiita
bundle install で毎回 --path=vendor/bundle するのが面倒なのをどうにかする – Qiita
bundle install するときに vendor/bundle を省略する方法 – Qiita
bundle install するときになぜ vendor/bundle に入れるのか – teratail
Why Bundle Install is installing gems in vendor/bundle? – Stack Overflow
bundle install --deployment
参考:
Rails の bundle install --deployment とは何なのか | TechRacho
bundle_frozen とか bundle_without | Nikushi’s blog
BUNDLED WITH で Gemfile.lock が更新されてしまう件 – Qiita
How to Deploy Bundled Applications | Bundler [Official]
Whats the difference between bundle install --deployment and bundle pack – Stack Overflow
bundle install --frozen
Gemfile.lock
を更新せずにインストールする。オプションは config
に記憶される。
$ bundle install --frozen
config
から BUNDLE_FROZEN
を削除する。
$ bundle config --delete frozen
参考:
BUNDLED WITH で Gemfile.lock が更新されてしまう件 – Qiita
bundle_frozen とか bundle_without | Nikushi’s blog
bundle install --clean
必要なパッケージをインストール後に bundle clean
を自動的に実行する。オプションは config
に記憶される。
参考:
bundle install には --clean を指定する (特に Circle CI では) | Born Too Late
--jobs オプション
Bundler で Gem をインストールする際に、並列に実行するワーカー数を指定する。
$ bundle install --jobs 4
参考:
Install gems in parallel (faster) – Stack Overflow
-V / --verbose オプション
インストールの詳細なログを出力する。
$ bundle install -V
bundle pristine コマンド
Bundler でインストールした Gem を初期状態に戻す。(ローカルキャッシュから再インストールされる。Git で管理されている Gem は指定したコミットがチェックアウトされる。)
$ bundle pristine
参考:
bundle pristine | Bundler [Official]
ネイティブ拡張をリビルドする
参考:
Native Extension 入りの Gem をリビルドする – Qiita
Rebuild Native Extensions | makandra dev
Rebuild Bundler Gems with Native Extensions | Coderwall
gem install does not rebuild all instances of a gem – Server Fault
How to rebuild all my Ruby gems? – Super User
ネイティブ拡張のビルドオプションを指定する
参考:
Bundler でビルドオプションを指定する – Qiita
Gem を再インストールする
全ての Gem を強制的に再インストールする。
$ bundle install --force
vendor/bundle
を削除してやり直す。
$ rm -rf vendor/bundle $ bundle install
vendor/bundle
と Gemfile.lock
を削除してやり直す。
$ rm -rf vendor/bundle $ rm Gemfile.lock $ bundle install
参考:
How do I force Bundler to reinstall all of my gems? – Stack Overflow
How to reinstall a gem using bundler – Stack Overflow
プレリリースバージョンの Gem を使う
参考:
Unable to resolve dependencies when using prerelease gem · Issue #2938 · bundler/bundler – GitHub
bundle list
$ bundle list
参考:
bundle list | Bundler [Official]
bundle show
バンドルされている Gem の一覧を表示する。
$ bundle show
バンドルされている Gem のパスを一覧表示する。
$ bundle show --paths
指定した Gem がインストールされているパスを表示する。
$ bundle show rails
参考:
bundle show | Bundler [Official]
bundle exec
参考:
bundle exec | Bundler 日本語ドキュメント (Ruby STUDIO)
bundle update
参考:
bundle update | Bundler [Official]
bundle install と bundle update の違い
bundle install
:Gemfile.lock
で Gem のバージョンが指定されていればそのバージョンを使い続ける。Gemfile.lock
に存在しない Gem は新たにインストールされる。bundle update
:Gemfile
指定の範囲内でリモートも含めてなるべく新しいバージョンの Gem に解決する。 (Gemfile.lock
で Gem のバージョンが指定されていても可能な限り新しいバージョンに更新する。)
指定した Gem のみを更新する
参考:
bundle update で特定の Gem のみ更新する – Qiita
How to Update a Single Gem Conservatively | makandra dev
Update just one gem with bundler – Stack Overflow
bundle lock
参考:
bundle lock | Bundler [Official]
Updating Gemfile.lock without installing gems – Stack Overflow
bundle check
参考:
bundle check | Bundler [Official]
How to re-sync Gemfile.lock on changes to Gemfile – Stack Overflow
Gem を削除する
参考:
Gemfile でインストールした Gem を削除する – Qiita
あえて言うほどではないけれども Gem を一括削除する方法 | TECHSCORE BLOG
GitHub からコミット/ブランチ/タグを指定して Gem を追加する
参考:
Gemfile での Git オプション利用のリスク | koicの日記
How to Install Gems from Git Repositories | Bundler [Official]
How to get a specific “commit” of a gem from GitHub? – Stack Overflow
Gemfile.lock
参考:
Bundler と Gemfile.lock の取り扱い | DesignAssembler
Gemfile.lock アップデートガイド – Qiita
Gem の更新 | Bundler 日本語ドキュメント (Ruby STUDIO)
初心者向け Gemfile と Gemfile.lock の違い | Enjoy IT Life
Gemfile.lock が更新されるタイミングはいつなのか? · Issue #18 · yochiyochirb/meetups – GitHub
Gemfile and Gemfile.lock | Austin Songer
Should Gemfile.lock be included in .gitignore? – Stack Overflow
環境毎に異なる Gemfile.lock が生成される問題
参考:
Gemfile.lock Platform Conflicts – GitHub Gist
Gemfile.lock が git merge した時にコンフリクトする
参考:
Rails で良くコンフリクトするファイルの対処法 – Qiita
Auto resolve git conflicts in Gemfile.lock · Issue #6020 · bundler/bundler – GitHub
Bundler.setup
Bundler でインストールした Gem を require
できるように $LOAD_PATH
を設定する。
参考:
Bundler.setup | Bundler 日本語ドキュメント (Ruby STUDIO)
Bundler.setup vs. Bundler.require | Anti-pattern
How to Use Bundler with Ruby | Bundler [Official]
Bundler.require
Bundler でインストールした Gem を環境名 (:default
や :development
など) を指定して require
する。
参考:
Bundler の Gem を Ruby スクリプト実行時にロードする方法 | 小さな星がほらひとつ
実行環境と Bundler.require | AnyType
Does the order of gems in your Gemfile make a difference? – Stack Overflow
Rails における Gem の読み込み
参考:
Rails を起動すると Gem はどのように読み込まれてんのか | onody_onody’s blog
Bundler で入れた Rails で rails new を行う
参考:
Ruby on Rails の環境構築と Bundler について | TASK NOTES
ローカルの Gem を使う
参考:
Is it possible to bundle / install gems from a local cache? – Stack Overflow
bundle package
通常通り bundle install
を実行する。
$ bundle install
必要な gem を全て vendor/cache
にキャッシュする。
$ bundle package --all
vendor/cache
からインストールする。
$ bundle install --local
参考:
bundle install をオフラインで実行するメモ – Qiita
Gem を Bundler でダウンロードしローカルに保存、オフラインでインストールしたい | yukku++
bundle package | Bundler 日本語ドキュメント (Ruby STUDIO)
What is the simplest way to download a gem without installing RubyGems? – Super User
Gem をローカルにキャッシュする
参考:
Local Gem Cache to Accelerate Bundler | There’s enough for everyone
ローカルオーバーライド (bundle config local)
Gemfile
を変更せずに設定でオーバーライドして、ローカルのディレクトリから Gem を使う。
$ bundle config --local local.mygem path/to/mygem
参考:
Bundler で Gemfile を変更せずにローカルの :path の Gem を使う – Qiita
ローカルで修正した Gem のコードを bundle install する | My External Storage
How to Specify Local Ruby Gems in Your Gemfile | rossta.net
依存している Gem のリストを取得する
指定した Gem に依存している Gem の一覧を取得する。
$ ruby -r bundler -e 'puts( \ Bundler.locked_gems.specs.find_all do |gem| \ gem.dependencies.any? { |dep| $*.include?(dep.name) } \ end.map(&:name) \ )' \ activesupport
Gemfile
で直接指定しているものに限定する。
$ ruby -r bundler -e 'puts( \ Bundler.locked_gems.specs.find_all do |gem| \ gem.dependencies.any? { |dep| $*.include?(dep.name) } \ end.map(&:name).select do |name| \ Bundler.locked_gems.dependencies.keys.include?(name) \ end \ )' \ activesupport
bundle exec コマンドの役割
参考:
Bundler コードリーディング exec 編 | freedom-man
Docker で Gemfile.lock を扱う
参考:
Rails on Docker: Quickly Create or Update Your Gemfile.lock | Chris Blunt
--path 指定のインストールでシステム Gem は考慮されない
参考:
Ruby 2.6.1 で require “bundler/setup” がエラーになる
Ruby 2.6.1 で Bundler を使った際に、require "bundler/setup"
がエラーを起こす。
require "bundler/setup"
# => You must use Bundler 2 or greater with this lockfile.
Code language: Ruby (ruby)
原因:
デフォルト Gem として入っている Bundler 1.17.2 の gemspec で s.files
が不足している。
対処法:
rbenv を使っている場合に、パッチを適用して上書きインストールする。
$ curl -sSL https://bugs.ruby-lang.org/attachments/download/7631/15582-bundler-gemspec.patch | rbenv install -f -p 2.6.1
もしくは、デフォルト Gem を更新する。
$ gem update bundler --system
参考:
Bug #15586: Requiring `bundler/setup` gets wrong version | Ruby Issue Tracking System
サンプルコードでわかる!Ruby 2.6 の主な新機能と変更点 – Qiita
Bundler 2.0 導入時のトラブル
対処法:
Bundler のバージョンを指定してグローバルにインストールする。
Bundler 1.17.3 をインストールする。
$ gem install bundler:1.17.3
Bundler 2.0.2 をインストールする。
$ gem install bundler:2.0.2
古いバージョンの Gem を消去する。
$ gem cleanup
RubyGems を更新する。
$ gem update --system
参考:
Ruby 2.6.1 に含まれる Bundler 1.17.2 に不具合があるという話 – Qiita
RubyGems でよく使うコマンドをまとめる | fugafuga.write
まとめ
Bundler で Gem を実用的に扱うためのまとめ – Qiita
Bundler 1.15 の全コマンド | TechRacho
ドキュメント
Documentation for bundler | RubyDoc.info
Bundler 日本語ドキュメント | Ruby STUDIO
リポジトリ
bundler/bundler: Manage Your Ruby Application’s Gem Dependencies – GitHub
Bundle Bungler
ユーザーのホームディレクトリにインストールした Gem をコピーしてインストール時間を短縮する。
リポジトリ:
chrismo/bundle-bungler – GitHub
Bundler::Console
リポジトリ:
ExtendedBundler::Errors
リポジトリ:
Git Bundle
Git コマンドを、Bundler でインストールした Gem のリポジトリでも同期して自動的に実行する。
リポジトリ:
参考:
How to handle Gemfile.lock with local gem repositories? – Stack Overflow