8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Bundler 2.X系でbundle execがdefaultバージョンを参照してしまう時の対処法

Last updated at Posted at 2019-09-28

bundle exec rails g ~が全く機能しなかったので、調査した件。


#####今回の実行環境

$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.14.6
BuildVersion:	18G95

今回起きたエラー内容は以下の通りです。

$ bundle exec rails g controller StaticPages home help about
/Users/iori_jp/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/bundler-2.0.2/lib/bundler/runtime.rb:319:in `check_for_activated_spec!': You have already activated bundler 1.17.2, but your Gemfile requires bundler 2.0.2. Since bundler is a default gem, you can either remove your dependency on it or try updating to a newer version of bundler that supports bundler as a default gem. (Gem::LoadError)

適用されているbundler gemのバージョンが1.17.2なので、2.0.2に変更してくださいとのことでした。
上記の参考ページ曰く、bundlerバージョンが1.17.2だと色々面倒らしく、1.17.3に変更した方が良いとのこと。


途中、試行錯誤で試したものが影響を持っている可能性があるため、メモ書き程度で参考にすることをオススメします...


まず、Gemfile.lockBUNDLED WITHを確認します。

$ cat Gemfile.lock | tail
RUBY VERSION
   ruby 2.6.1p33

BUNDLED WITH
   1.17.2

Gemfile.lockは、bundle installした時点で作成されます。
(ここでバージョンが1.17.3であれば、問題は別にありそうです。)
この後の作業として、bundlerのdefaultバージョンを 1.17.3
実行バージョン2.0.2をインストールしてから、bundle installします。

次にbundlerのバーションを確認します。

$ gem list bundler

*** LOCAL GEMS ***

bundler (2.0.2, default: 1.17.2)
$ bundle -v
Bundler version 1.17.2

gem update --systemを実施して、defaultのbundlerバージョンを1.17.3に変更します。

$ gem update --system

bundlerバージョン 2.0.2 をインストールします。
ここでgem install bundler -v 1.17.3のように指定することも可能
今回は最新版である2.0.2を使用するため、指定はしません。

$ gem install bundler
Successfully installed bundler-2.0.2
Parsing documentation for bundler-2.0.2
Done installing documentation for bundler after 1 seconds
1 gem installed

次にGemfile.lockを削除します。

$ rm Gemfile.lock

やっと、bundle install
ここでpathをオプションに入れることで、bundlerのバージョンをglobalでなく、
localで持つことができます。

$ bundle install --path=vendor/bundle

最後に、catでBUNDLED WITHのバージョンを確認して終わりです。

$ cat Gemfile.lock | tail
RUBY VERSION
   ruby 2.6.1p33

BUNDLED WITH
   2.0.2

これで無事、bundle exec rails g controller ~~できるようになりました。

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?