Gemfile 未使用指定的 ruby 版本

问题描述 投票:0回答:3

我正在制作一个项目,当我运行生成命令时,出现以下错误:

fullpath: /Users/adamgoldberg/shopify-sinatra-app/theappearsystemcontrol6
Your Ruby version is 2.3.1, but your Gemfile specified 2.2.2
Bundler::RubyVersionMismatch: Your Ruby version is 2.3.1, but your Gemfile specified 2.2.2
  /Users/adamgoldberg/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/definition.rb:417:in `validate_ruby!'
  /Users/adamgoldberg/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler.rb:91:in `setup'
  /Users/adamgoldberg/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/setup.rb:19:in `<top (required)>'
  /Users/adamgoldberg/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
  /Users/adamgoldberg/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'bundler: failed to load command: rake (/Users/adamgoldberg/.rbenv/versions/2.3.1/bin/rake)

我的项目必须使用 ruby 版本 2.3.1,因此我尝试更改 Gemfile 版本。 我的 gemfile 现在包含这个:

ruby "~> 2.3"

我尝试了各种命令,以便 Gemfile 识别出我想使用不同的 ruby 版本。我试过了:

bundle update
bundle install
gem bundle install
rbenv rehash

甚至我的 Gemfile.lock 也说它正在使用 2.3.1:

RUBY VERSION
    ruby 2.3.1p112

我什至删除了项目并重新开始。

请帮忙


更新:我删除了项目并重新启动。这是我从主目录中执行的具体步骤

ruby -v: #2.3.1
git clone https://github.com/kevinhughes27/shopify-sinatra-app.git
gem install shopify-sinatra-app
shopify-sinatra-app-generator new myshop

又出现了和上面一样的错误:

Your Ruby version is 2.3.1, but your Gemfile specified 2.2.2

我的 Gemfile 看起来像这样:

source 'https://rubygems.org'
gemspec

它实际上是空的...我什至没有指定 ruby 版本 然后我就跑了

bundle install 
bundle update

仍然出现同样的错误。 然后我在 Gemspect 中指定了 ruby 版本,现在看起来像这样:

source 'https://rubygems.org'
ruby "2.3.1"
gemspec

但仍然出现同样的错误

ruby-on-rails ruby bundle rbenv gemfile
3个回答
0
投票

我认为您不能像 Ruby 版本那样使用版本说明符。我从未见过任何这样的例子。

如果你想要 v2.3.1,也许可以这样尝试:

ruby "2.3.1"

0
投票

您在这里所做的尝试:

ruby "~> 2.3"

似乎是正确的方法,但您应该使用精确的 Ruby 版本:

ruby "2.3.1"

值得一提的是,如果您不愿意,则不一定需要在任何地方手动指定您的 ruby 版本。


更新答案

我克隆了 gem 并尝试安装它。我遇到了同样的错误。我弄清楚了

2.2.2
依赖项的来源在哪里。它位于 gem 的源代码中,对我来说就是
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/shopify-sinatra-app-0.3.0
。在
examples/Gemfile
中有一条
ruby '2.2.2'
线。

我尝试删除此行,但安装 activesupport 时出现不同的错误。我认为使用这个 gem 生成应用程序的最简单的解决方案可能是安装 ruby 2.2.2


0
投票

嗨,我也遇到了同样的问题。我终于找到了解决方案。以防万一有人感兴趣。我目前正在使用 rbenv。我发现当我用

rbenv shell 2.7.3
切换版本时。它将我当前的版本从 3.3.4 切换到 2.7.3。然而,当我运行
ruby -v
时,它仍然显示 3.3.4 我仔细检查了我的 /.zshenv 文件是否有

export PATH="$HOME/.rbenv/bin:$PATH"

确保它在路径上。然后我锁定我的 /.zshrc 并发现 我的路径上还有另一个版本管理器,例如 RVM。所以我评论掉了

export PATH="/usr/local/opt/ruby/bin:$PATH"
PATH=$PATH:~/.local/bin
export PATH

接下来我确保在环境之后评估 rbenv。

source $HOME/.zshenv
eval "$(rbenv init - zsh)" <--- below the source

在此之下,Ruby 或 rbenv 的路径上没有其他内容。我在某个时间点同时安装了 rvm 和 rbenv。不是很好的练习,当时我只是在学习。无论如何,我希望这对安装 ruby 和 rbenv 或任何其他版本管理器的人有所帮助。或者对切换 ruby 版本感到困惑。

其他一些有帮助的命令

man rbenv
rbenv versions
rbenv shell x.x.x
这仅适用于较新版本的 ruby on Rails。

© www.soinside.com 2019 - 2024. All rights reserved.