bundle使用错误的ruby版本

Nik*_*iko 7 ruby bundle ruby-on-rails rbenv

我想跑

env RAILS_ENV=test bundle exec rake db:migrate

并得到以下错误

Your Ruby version is 2.1.7, but your Gemfile specified 2.2.3

ruby -v

给我

ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin15]

我正在使用rbenv,如果这很重要的话.rbenv versions给出以下内容: system * 2.2.3 (set by /Users/thatsme/Projects/demoproject/.ruby-version) 所以我没有ruby 2.1.7安装.Spring没有运行而且我已经运行了rbenv rehash.然后bundler gem安装.我对此很疯狂.有人可以告诉我为什么使用错误的ruby版本?谢谢!

Ric*_*een 17

运行下面的命令以某种方式帮助了我: rbenv exec gem install bundler

  • 对于“asdf”用户“asdf exec gem install bundler”。似乎适合我。 (2认同)

kev*_*kev 5

假设:您正在使用 RVM。这意味着在 RVM 之外安装了一个 ruby​​ 版本。通过运行清除您的 rvm rubies

rvm uninstall <ruby version>
Run Code Online (Sandbox Code Playgroud)

一旦您卸载了所有 rvm rubies do ruby -v,如果这返回指定 ruby​​ 版本的输出,那么这就是问题的根源。卸载它

sudo apt-get remove ruby
Run Code Online (Sandbox Code Playgroud)

现在安装您的 rvm rubiesrvm install <ruby version>并将其设置为默认值rvm use <ruby version>

现在安装捆绑器

gem install bundler
Run Code Online (Sandbox Code Playgroud)

并且做 bundle install


Set*_*hfi 5

太长了;

.bash_profile非常仔细地检查您的文件或文件的内容.bashrc。

所有答案都没有真正解决我的问题。这是我的解决方案。

这是我得到的错误:

$ bundle install
Your Ruby version is 3.0.1, but your Gemfile specified 2.7.1
Run Code Online (Sandbox Code Playgroud)

我检查了我的rbenv设置:

$ rbenv versions
  system
  2.4.1
  2.5.0
  2.7.0
* 2.7.1 (set by /Users/setoelka/awesome-project/.ruby-version)
  3.0.1
Run Code Online (Sandbox Code Playgroud)

我卸载了错误的版本,可能会发现新的错误。我想,我可以稍后再安装它。

$ rbenv uninstall 3.0.1
Run Code Online (Sandbox Code Playgroud)

它确实揭示了一个新错误:

$ bundle install
-bash: /Users/setoelka/.gem/ruby/3.0.0/bin/bundle: /Users/setoelka/.rbenv/versions/3.0.1/bin/ruby: bad interpreter: No such file or directory
Run Code Online (Sandbox Code Playgroud)

好吧,这很奇怪。我可以删除.gem那里的目录。

$ rm -rf ~/.gem/
Run Code Online (Sandbox Code Playgroud)

现在另一个新错误:

$ bundle install
-bash: /Users/setoelka/.gem/ruby/3.0.0/bin/bundle: No such file or directory
Run Code Online (Sandbox Code Playgroud)

看来我的 PATH 变量搞砸了。所以我这样做:

$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 3.2.27
  - RUBY VERSION: 2.7.1 (2020-03-31 patchlevel 83) [x86_64-darwin20]
  - INSTALLATION DIRECTORY: /Users/setoelka/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0
  - USER INSTALLATION DIRECTORY: /Users/setoelka/.local/share/gem/ruby/2.7.0
  - RUBY EXECUTABLE: /Users/setoelka/.rbenv/versions/2.7.1/bin/ruby
  - GIT EXECUTABLE: /usr/bin/git
  - EXECUTABLE DIRECTORY: /Users/setoelka/.rbenv/versions/2.7.1/bin
  - SPEC CACHE DIRECTORY: /Users/setoelka/.local/share/gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Users/setoelka/.rbenv/versions/2.7.1/etc
  - RUBYGEMS PLATFORMS:
     - ruby
     - x86_64-darwin-20
  - GEM PATHS:
     - /Users/setoelka/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0
     - /Users/setoelka/.local/share/gem/ruby/2.7.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/setoelka/.rbenv/versions/2.7.1/bin
     - /usr/local/Cellar/rbenv/1.1.2/libexec
     - /Users/setoelka/opt/anaconda3/bin
     - /Users/setoelka/opt/anaconda3/condabin
     - /Users/setoelka/.cargo/bin
     - /Users/setoelka/.gem/ruby/3.0.0/bin
     - /Users/setoelka/.nvm/versions/node/v16.5.0/bin
     - /Users/setoelka/.rbenv/shims
     - /Users/setoelka/.rbenv/shims
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /Library/Apple/usr/bin
Run Code Online (Sandbox Code Playgroud)

所以,很明显我在检查我的.bash_profile文件时错过了一些东西。这就是问题所在:

     - /Users/setoelka/.gem/ruby/3.0.0/bin
Run Code Online (Sandbox Code Playgroud)

这条线不知何故被埋在我的.bash_profile.


Dav*_*han -1

我有同样的问题

我需要跑

捆

重新安装我所有的宝石。然后

捆绑执行rails c