#author("2024-06-09T01:24:42+00:00","default:hotate","hotate")
#author("2025-03-02T21:04:54+00:00","default:hotate","hotate")
#contents
&tag(Ruby,Bundler,gem);

* 概要 [#k6c4bd49]
- https://bundler.io
 Bundler provides a consistent environment for Ruby projects by tracking and installing the exact gems and versions that are needed.
- [[bundler | RubyGems.org | コミュニティのGemホスティングサービス>https://rubygems.org/gems/bundler/versions/1.11.2]]
 Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably
- [[Bundler を知らずに Rails3 を使っていて「no such file to load -- xxx(gem パッケージ)」エラーに遭遇したときの対処 - 彼女からは、おいちゃんと呼ばれています>http://blog.inouetakuya.info/entry/20120226/1330253491]]
 ざっくりいうと、Rails のアプリごとに gem パッケージを管理するツールのようです。
 つまりは、システム全体で持っている gem とは別に、Rails アプリが独自の gem を持つことになるので、
 今回のようにgem パッケージをインストールしたはずなのに Rails の中では使えないという事が起こり得ます。
- [[bundle install時に--path vendor/bundleを付ける必要性は本当にあるのか、もう一度よく考えてみよう - Qiita>https://qiita.com/jnchito/items/99b1dbea1767a5095d85]]
 pathを指定しないと問題が起きる可能性があるのは、かなり特殊な条件下に限られる(100人いたら100人全員が遭遇するような問題ではない)。
-- コメント:[[Homebrew]]でインストールした[[Ruby]] 2.7の場合、下記にインストールされた。([[macOS]] 11.3 ([[BigSur]]) 2021/05/07)
 /usr/local/lib/ruby/gems/2.7.0/gems
-- さらにコメント:"mysql2"や"[[Nokogiri]]"などC拡張機能を使ってビルドが行われる[[gem]]では、ビルドに失敗すると中途半端なファイルが残る場合がある為、要注意。まずはローカルへ正常にインストール出来るか確認する方が安全。(2021/05/07)
-- 追加コメント:[[Homebrew]]でインストール[[Ruby]]なら、ライブラリが壊れても再インストールは容易というメリットがある。(2021/05/07)

* バージョン [#tcc61042]
- 基本的に下記で良い。(2021/05/07)
 bundle config set path 'vendor/bundle'
 bundle config set without 'test development'

** v3 [#g9a77358]
- [[[ruby]Bundler3からは除外する環境を指定するのために、もはや「–without」オプションはいらない | 週末エンジニアブログ>https://tech.teshiblog.com/ruby/bundle-install-set-without/]] (2020/09/22)
 Bundler3からは以下のコマンドで設定した後に、bundle installしたらOKです。
 bundle config set without development test

** v2 [#n11dcf8e]
- [[bundlerでgemをプロジェクトごとに管理する | Developers.IO>http://dev.classmethod.jp/server-side/language/bundler-gem-management/]]
 環境別にgemを管理する
 $ bundle install --path vendor/bundle --without development test

* コマンド [#fe259ba1]
- [[【翻訳】速くなったのはいいとして、Bundler 1.1 の他の新機能は? - 見えないチカラ>http://keijinsonyaban.blogspot.jp/]]
 バンドルされた gem の中から古くなったものを判別してくれる
 これの便利な所は、Bundler がダウンロードしてインストールする gem を表示するが、実際には実行しないことだ。
 これにより gem のリストを調査し、アップデートしたい gem を選択する自由が与えられる。
- [[[Sy] Railsの環境構築でグローバルのgemを汚さずにプロジェクト内にbundle install する手順 | Syntax Error.>https://utano.jp/entry/2016/07/rails-bundle-install-gem-inner-project/]]
 Rails について調べてると、bunle execをつける場合とつけない場合の両方の情報が見つかります。なぜかというと、 環境によってどちらを使うべきか変わってくるから です。
 今回のように、パスを指定して gem をインストールした場合、 bundle execをつけることで指定したパスの配下にある gem を使って実行します。

** インストール [#if25f478]
- [[Gemfileについて調べてみた - xxxcaqui.log>http://xxxcaqui.hatenablog.com/entry/2013/02/11/013421]]
 $ bundle install --path vendor/bundle
 Bundlerによってインストールするgemをデフォルト($BUNDLE_PATHまたは$GEM_HOME)のディレクトリ以外にする。
 一度指定するとBundlerがそのディレクトリを覚えてくれるため、次回以降は指定不要。
-  [[Gem - Bundler概要 - Qiita>http://qiita.com/hisonl/items/162f70e612e8e96dba50]]
 bundle install	Gemfileに書かれたgemパッケージをインストール
- [[How do I force Bundler to reinstall all of my gems? - Stack Overflow>https://stackoverflow.com/questions/45290135/how-do-i-force-bundler-to-reinstall-all-of-my-gems]]
 bundle install --redownload

** 更新 [#r9a8762c]
- [[bundlerでの運用方法>https://qiita.com/hazy_moon/items/ea6fdbc058256bbaafe0]]
 bundle update
 Gemfile.lockの記述を無視して、GemfileでのGemの指定やそのバージョン指定などに基づいて、gemを更新する。
 更新時にGemfile.lockを更新する。
- [[rubyのbundler自身をアップデートする>https://blog.bgbgbg.net/archives/3535]]
 bundlerで管理してれば、bundlerであげますが、bundler自身なので
 $ gem update bundler
- [[bundle install と bundle updateの違いについて - Qiita>https://qiita.com/lasershow/items/1a048d03ddaaba98171e]]
 bundle updateを実行すると、Bundlerは、gemfileを元にgemのインストールを行います。その後、gemfile.lockを更新します。
-- コメント:[[gem]] updateと混同しないこと。(2022/01/01)
- [[【Rails】bundlerのdefaultを変更する方法。 Warning: the running version of Bundler (x.x.x) is older than the version that created the lockfileの対処法。 - Qiita>https://qiita.com/shizen-shin/items/63099880b39c45b81220]]
 $ gem update --system
 gem自体のバージョンをアップデートする。
- [[【Rails】bundlerのdefaultを変更する方法。 Warning: the running version of Bundler (x.x.x) is older than the version that created the lockfileの対処法。>https://prograshi.com/framework/rails/bundler-version-error/]]
 エラー対処法
 Railsアプリケーションのルートディレクトリで gem install bundler:2.2.22 を実行する。
- [[bundlerのバージョンを固定してbundle installする方法 - Qiita>https://qiita.com/Nedward/items/ee70b8196398dc1e3017]]
 下記のようにオプションで-vをつけてバージョンを指定すると、そのバージョンのbundlerをインストールすることができる
 $ gem install bundler -v 1.16.1

** 設定 [#n91f91b7]
- [[Bundlerでビルドオプションを指定する - Qiita>https://qiita.com/thunders/items/101c6b329830fb1fb27d]]
 設定したBundlerの項目は、bundle configで確認することができます。

** クリーンナップ [#u4546e9c]
- [[定期的にbundle cleanupをしたいね - カクカクしかじか>https://fuqda.hatenablog.com/entry/2019/07/25/113018]]
 bundle cleanup というコマンドを打つとローカルのbundle install先の使われていないGemを綺麗に削除してくれるそうな...

** バッチファイル [#daa47103]
- [[bundleコマンドをバッチファイルから実行すると途中終了する - Qiita>https://qiita.com/tunepolo/items/6bdb95985ab5e54a9668]]
 バッチファイルからバッチファイルを呼び出すと呼び出し先のバッチファイルが終了したところで処理全体が停止するのが仕様である。対処法としてはバッチファイル形式の処理実行前にcallをつければ良い。
 call bundle -v


* [[Ruby]] [#kdbccfd2]
- [[bundlerのgemをrubyスクリプト実行時にロードする方法 - 小さな星がほらひとつ>http://blog.wackwack.net/entry/2016/06/05/095514]]
 gemのrequire前に以下のコードを追加します。
 require 'bundler'
 Bundler.require
- [[橋本商会 » Ruby書くならBundler使え>http://shokai.org/blog/archives/7262]]
 bundlerで指定したgemを使う(プログラム内で指定)
 require 'bundler/setup'


* [[macOS]] [#hfa57190]
- [[MacにHomeBrew,rbenv,bundlerをインストールする - Qiita>https://qiita.com/shinkuFencer/items/3679cfd966f6a61ccd1b]]
 bundler自体もGemなので、Bundlerだけはグローバルにインストールします。
 $ gem install bundler

* [[トラブル]] [#x40cb067]
+ bundlerの呼び出しに失敗する為、バージョンを指定してインストールした。([[2021]]/12/27)
 $ bundler -v
 Traceback (most recent call last):
	1: from /opt/homebrew/opt/ruby@2.7/bin/bundler:25:in `<main>'
 /opt/homebrew/opt/ruby@2.7/bin/bundler:25:in `load': cannot load such file -- /opt/homebrew/lib/ruby/gems/2.7.0/gems/bundler-2.2.23/exe/bundler (LoadError)
 $ gem list | grep bundler
 bundler (2.2.23, default: 2.2.22, 1.17.2)
 $ gem update --system
 Latest version already installed. Done.
 $ gem install bundler:2.2.23
 Successfully installed bundler-2.2.23
 Parsing documentation for bundler-2.2.23
 Done installing documentation for bundler after 0 seconds
 1 gem installed
 $ gem list | grep bundler
 bundler (2.2.23, default: 2.2.22, 1.17.2)
 $ bundler -v
 Bundler version 2.2.23
+ bundlerの呼び出しに失敗する為、不要なバージョンをアンインストールした。([[2024]]/04/30)
 $ gem list | grep bundler
 bundler (2.5.9, 2.4.12)
 $ gem uninstall bundler:2.4.12
 Successfully uninstalled bundler-2.4.12
 $ gem list | grep bundler
 bundler (2.5.9)
+ bundlerを更新後、Gemfileを更新した。([[2025]]/03/03)
 $ gem update bundler
 $ bundle update


* 関連 [#z5dd09db]
- [[Nokogiri]]

#related

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS