您已经激活了 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 rake
和 rm 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
就这些了。
希望对您有所帮助
类似于 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 rake
和 rm 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
就这些了。
希望对您有所帮助