search
LoginSignup
34

More than 1 year has passed since last update.

posted at

updated at

Ruby Error[Your Ruby version is 2.6.3, but your Gemfile specified 2.6.5]

Ruby Error[Your Ruby version is 2.6.3, but your Gemfile specified 2.6.5]

上記のエラーに引っ掛かったので記事にしました。

環境

macOS Catalina 10.15.3

Rubyのversionを変えたくても変えられない。

スクリーンショット 2020-02-06 23.09.29.png

rbenvの導入

ここを参考にして、rbenvというRubyのversion管理ツールを導入した。

$ brew install rbenv ruby-build

.bash_profileへ記述

eval "$(rbenv init -)"

または

$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

初期化設定の反映

$ source ~/.bash_profile

目的とするversionのRubyをinstall

$ # install可能なversionを表示
$ rbenv install -l
$ # versionを指定してinstall
$ rbenv install 2.6.5
$ # インストールしたversionを使用可能な状態にする⇒shimsへの反映
$ rbenv rehash

README.md上に、新しいversionをinstallした後に関して、

Installs shims for all Ruby executables known to rbenv (i.e., ~/.rbenv/versions//bin/). Run this command after you install a new version of Ruby, or install a gem that provides commands.

と記述があるので、shimsをinstallするためにrbenv rehashを行います。

version切替

version切り替えに関して、このような記述があったので、ひとまず現在のディレクトリ下のversionを切り替えるために以下のようなコマンドを実行します。

$ rbenv local 2.6.5

もちろんglobal用も用意されています。

Current Directoryのversion確認

$ rbenv versions
  system
* 2.6.5 (set by /Users/[user_name]/.rbenv/version)

2.6.5と表示されています!
目的のversionを手に入れることができた!と思いきや、、、

解決されたと思ったら、何故か同じエラーが繰り返される

スクリーンショット 2020-02-06 23.09.29.png
何故でしょう?

参照している場所が違うのではいか?

bundlerの場所を調べる

$ which bundler
/Users/hoge/.rbenv/shims/bundler
(hogeにはusernameが入る)

中身を確認

$ cat /Users/hoge/.rbenv/shims/bundler

#!/usr/bin/env bash
set -e
[ -n "$RBENV_DEBUG" ] && set -x

program="${0##*/}"
if [ "$program" = "ruby" ]; then
  for arg; do
    case "$arg" in
    -e* | -- ) break ;;
    */* )
      if [ -f "$arg" ]; then
        export RBENV_DIR="${arg%/*}"
        break
      fi
      ;;
    esac
  done
fi

export RBENV_ROOT="/Users/hoge/.rbenv"
exec "/usr/local/Cellar/rbenv/1.1.2/libexec/rbenv" exec "$program" "$@"
(hogeにはusernameが入る)

間違っていなさそう。
他にも

$ which ruby
$ which bundle

などと同様なことを確認したが、参照先に間違いはなさそうだった。

しかし、ここが原因だと指摘している記事もあった。

解決(たまたま)

たまたま以下のコマンドを打ち込んだら解決された。

$ bundle install

そもそもbundler, bundleとは

  • bundler
    プロジェクト内で使うGemのパッケージ管理ツール。
  • bundle
    bundlerを扱うコマンド

結局のところ、なぜ解決されたのか

$ bundle install
(省略)
Bundle complete! 5 Gemfile dependencies, 104 gems now installed.
Bundled gems are installed into `./vendor/bundle`

因みに上記のコマンドを実行することで、Gemfileをもとにgemをインストールすることができる。
上記のコマンドで解決されたわけだが、その訳は、rbenvと依存関係にあったパッケージがinstallされていなかったからではないか。と推測する。

しかし、ここ

This happens when there is a difference between the version of Ruby you are using locally, and the versions specified in your Gemfile and Gemfile.lock.

と書かれていることから、カレントディレクトリで使おうとしているrubyのversionとGemfileに記載されているrubyのversionが異なっていたことが原因だと考える。

試しにGemfileを見てみました。

$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 3.0.3
  - RUBY VERSION: 2.6.5 (2019-10-01 patchlevel 114) [x86_64-darwin19]←確かに2.6.5になっている!!
  - INSTALLATION DIRECTORY: /Users/s09519/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0
  - USER INSTALLATION DIRECTORY: /Users/s09519/.gem/ruby/2.6.0
  - RUBY EXECUTABLE: /Users/s09519/.rbenv/versions/2.6.5/bin/ruby
  - GIT EXECUTABLE: /usr/bin/git
  - EXECUTABLE DIRECTORY: /Users/s09519/.rbenv/versions/2.6.5/bin
  - SPEC CACHE DIRECTORY: /Users/s09519/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Users/s09519/.rbenv/versions/2.6.5/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-19
  - GEM PATHS:
     - /Users/s09519/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0
     - /Users/s09519/.gem/ruby/2.6.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/s09519/.rbenv/versions/2.6.5/bin
     - /usr/local/Cellar/rbenv/1.1.2/libexec
     - /Users/s09519/.rbenv/shims
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin

実行結果の3行目に書かれている通り、2.6.5と書かれていました。
自分がうっかり$ rbenv lacal 2.6.5する場所を間違えてしまったかもしれません。(記憶してなくて申し訳ないです)

参考

https://qiita.com/_am_/items/c1dbeb11f40bbbac8fd9
https://qiita.com/kHigasa/items/2e9764e7e80d1bdd8186
https://qiita.com/hisonl/items/162f70e612e8e96dba50

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
What you can do with signing up
34