您已经激活了机架1.6.0,但您的Gemfile需要机架1.6.4

时间:2015-08-02 19:56:18

标签: ruby-on-rails nginx rack gemfile

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)

6 个答案:

答案 0 :(得分:14)

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

请这样做

gem uninstall rack -v 1.6.0

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

答案 1 :(得分:2)

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

bundle install --binstubs

并通过相对路径运行它:

./bin/rails server

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

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

答案 2 :(得分:1)

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

中的设置

答案 3 :(得分:0)

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

gem install rack

答案 4 :(得分:0)

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

您可以使用rvm执行此操作

创建新的宝石集

rvm gemset create new_test

rvm gemset use new_test

bundle install

答案 5 :(得分:0)

我遇到了这个问题:

这是我的解决方案

解决方案1 ​​

此解决方案在很多时候都有效,只需更新引起问题的gem。

bundle update rack

解决方案2

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

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

在我的情况下,我在rack 2.0.7文件中定义了Gemfile.lock,但是我的应用程序需要rack 2.1.2,我只需要在{{ 1}}文件。

然后我必须卸载机架的先前版本rack 2.1.2

Gemfile.lock

最后在生产中安装了新宝石

rack 2.0.7

解决方案3

在极少数情况下,解决方案1 ​​解决方案2 可能不起作用,并且您需要在更新gem之前编辑 gem uninstall rack -v 2.0.7

在我的情况下,gem是bundle install --without development test ,我在Gemfile中定义了puma,但是我的应用程序需要puma ~> 3.11。此时运行Gemfile并编辑我的puma ~> 4.3.1文件是行不通的,因为Gemfile中指定的bundle update puma版本不允许更新到Gemfile.lock

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

puma ~> 4.3.1

仅此而已。

我希望这会有所帮助