我正在制作一个项目,当我运行生成命令时,出现以下错误:
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 版本那样使用版本说明符。我从未见过任何这样的例子。
如果你想要 v2.3.1,也许可以这样尝试:
ruby "2.3.1"
您在这里所做的尝试:
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
嗨,我也遇到了同样的问题。我终于找到了解决方案。以防万一有人感兴趣。我目前正在使用 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。