Bundler
参考:
Bundler – The best way to manage a Ruby application’s gems [Official]
bundler/bundler: Manage your Ruby application’s gem dependencies – GitHub
目次
- 1 ドキュメント
- 2 使い方
- 3 導入
- 4 概要
- 5 まとめ
- 6 gem コマンド
- 7 bundle コマンド
- 8 bundle install
- 9 bundle install --path
- 10 bundle install --deployment
- 11 bundle install --frozen
- 12 bundle install --clean
- 13 --jobs オプション
- 14 -V / --verbose オプション
- 15 bundle pristine コマンド
- 16 ネイティブ拡張をリビルドする
- 17 ネイティブ拡張のビルドオプションを指定する
- 18 gem を再インストールする
- 19 プレリリースバージョンの gem を使う
- 20 bundle list
- 21 bundle show
- 22 bundle exec
- 23 bundle update
- 24 bundle install と bundle update の違い
- 25 指定した gem のみを更新する
- 26 bundle lock
- 27 bundle check
- 28 gem を削除する
- 29 GitHub からコミット/ブランチ/タグを指定して gem を追加する
- 30 Gemfile.lock
- 31 環境毎に異なる Gemfile.lock が生成される問題
- 32 Gemfile.lock が git merge した時にコンフリクトする
- 33 Bundler.setup
- 34 Bundler.require
- 35 Rails における gem の読み込み
- 36 Bundler で入れた rails で rails new を行う
- 37 ローカルの gem を使う
- 38 bundle package
- 39 gem をローカルにキャッシュする
- 40 bundle config local.*
- 41 依存している gem のリストを取得する
- 42 bundle exec コマンドの役割
- 43 Docker で Gemfile.lock を扱う
- 44 --path 指定のインストールでシステム gem は考慮されない
- 45 Ruby 2.6.1 で require “bundler/setup” がエラーになる
- 46 Bundler 2.0 導入時のトラブル
- 47 bundle-bungler
- 48 Bundler::Console
- 49 ExtendedBundler::Errors
- 50 git-bundle
ドキュメント
参考:
Documentation for bundler | RubyDoc.info
Bundler 日本語ドキュメント | Ruby STUDIO
使い方
参考:
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
The 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
bundle install と bundle update、gemfile と gemfile.lock のつながりを解いてみた | 会社を辞めて在宅ワーカーになったパパの記録
まとめ
参考:
Bundler で gem を実用的に扱うためのまとめ – Qiita
Bundler 1.15 の全コマンド | TechRacho
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 オプション
インストールする際に並列に実行するワーカー数を指定する。
$ 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
参考:
Updating Gemfile.lock without installing gems – Stack Overflow
bundle lock | Bundler [Official]
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.
原因:
デフォルト 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
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