您已经激活了 rack 1.6.0,但是您的 Gemfile 需要 rack 1.6.4

You have already activated rack 1.6.0, but your Gemfile requires rack 1.6.4

类似于 problem with rack 1.3.2. You have already activated rack 1.3.2, but your Gemfile requires rack 1.2.3 -- 我在使用 Puma 和 Nginx 尝试 运行 Rails (4.2) 时遇到 You have already activated rack 1.6.0, but your Gemfile requires rack 1.6.4

bundle update rakerm Gemfile.lock && bundle install 似乎都没有帮助,到目前为止我唯一的解决方案是在 Gemfile.lock 中手动将 rack (1.6.4) 更改为 rack (1.6.0)

运行 像这样:bundle exec rails s。这将使用您的 Gemfile.lock

中的设置

一位经验丰富的 Rails 开发人员 highly recommends 使用 binstub。安装者:

bundle install --binstubs

和运行它通过相对路径:

./bin/rails server

或者最推荐的更新 PATH 并忘记捆绑程序问题:

export PATH="./bin:$PATH"
rails server

您需要卸载一个不需要的机架版本。

请这样做

gem uninstall rack -v 1.6.0

参考:How to force rack to work around the usual "You have already activated rack..." bug?

您只需在 cmd 下 运行 获取服务器中安装的最新机架即可解决此问题:

gem install rack

如果您在多个项目中使用本地或全局 gemset,则可能会出现这些问题。为什么不为每个项目创建单独的 gemset。

你可以使用 rvm

创建新的 gemset

rvm gemset create new_test

rvm gemset use new_test

bundle install

我遇到了这个问题:

这是我的解决方案:

解决方案 1:

此解决方案大部分时间都有效,只需更新导致问题的 gem。

bundle update rack

解决方案 2:

在某些情况下,解决方案 1 可能不起作用,您需要编辑 Gemfile.lock 文件。

只需打开您的 Gemfile.lock 文件,然后将版本更改为请求的更新。

在我的例子中,我在 Gemfile.lock 文件中定义了 rack 2.0.7,但我的应用程序需要 rack 2.1.2,我只需要在Gemfile.lock 文件。

然后我不得不卸载以前版本的 rack rack 2.0.7

 gem uninstall rack -v 2.0.7

并最终在生产环境中安装了新的 gem

bundle install --without development test

解决方案 3:

在极少数情况下,解决方案 1解决方案 2 可能不起作用,您需要编辑 Gemfile在更新 gem.

之前

在我的例子中,gem 是 puma,我在 Gemfile 中定义了 puma ~> 3.11,但我的申请需要 puma ~> 4.3.1。此时 运行 bundle update puma 和编辑我的 Gemfile.lock 文件都不起作用,因为 Gemfile 中指定的 puma ~> 3.11 版本不允许更新到 puma ~> 4.3.1

我只需要将 Gemfile 中的 puma 版本更改为 puma ~> 4.3.1,然后 运行 命令。

bundle update puma

就这些了。

希望对您有所帮助