0
0

BundlerとRubygemsの依存性によるトラブルシュート

Posted at

環境

Ubuntu20.4
Ruby2.6.0

はじめに

自分の開発環境から別の環境にRailsのソースを移行して、bundlerを動かそうとしたところ、動かないといった問題に遭遇したため、そのトラブルシュートの記事です。

Bundelrの公式サイトのBlogによると、この問題に関する是正内容が、2019年1月4日の記事で発表されています。わりと古い内容なので、今更な話題ではあります。

内容

Bundlerのバージョンを確認したところつぎのエラーが発生しました。

$bundle -v
Traceback (most recent call last):
        2: from /usr/local/rbenv/versions/2.5.0/bin/bundle:23:in `<main>'
        1: from /usr/local/rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
/usr/local/rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)

こちらの環境にbundlerはちゃんとインストールされています。

$gem list | grep bundler
bundler (2.0.2)

自分の開発環境のbundlerのバージョンを確認したところ、移行先の環境とbundlerのバージョンが異なることが判明しました。

$bundle -v
Bundler version 1.17.2

結果的には、別環境のbundlerをv2からv1にバージョンダウンさせることで問題は解決されました。

$bundle install -v '1.17.2'
$bundle -v
Bundler version 1.17.2

原因は?

bundlerとrubygemsの依存性の問題があったようです。移行先の環境では、rubygemsが2.7、bundlerが2.0.2で、自分の環境では、rubygemsが2.6、bundlerが1.17.2でした。このバージョンどうしの組み合わせでは問題はないのですが、bundlerが2.0.2の環境にrubygems2.6を持ち込んだところ、bundlerが動かなくなりました。そもそも、bundler v1では、rubygemsが2.7以降が動かないようです。

bundlerをrubygems2.7以降に対応させるには、bundler v2にバージョンアップさせる必要があります。rubygemsを2.7より古いバージョンで使いたい場合は、逆にbundlerをv1にバージョンダウンさせて対応せざるを得ないことになります。

0
0
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
0
0