Ruby on rails 您已经激活了rack 1.6.0,但您的Gemfile需要rack 1.6.4

Ruby on rails 您已经激活了rack 1.6.0,但您的Gemfile需要rack 1.6.4,ruby-on-rails,nginx,rack,gemfile,Ruby On Rails,Nginx,Rack,Gemfile,类似于--我遇到您已经激活了rack 1.6.0,但是您的Gemfile在尝试使用Puma和Nginx在生产中运行Rails(4.2)时需要rack 1.6.4 bundle update rakenorrm Gemfile.lock和&bundle install似乎有所帮助,到目前为止,我唯一的解决方案是手动将Gemfile.lock中的rack(1.6.4)更改为rack(1.6.0)。这将使用Gemfile.lock中的设置,由一位经验丰富的Rails开发人员使用binstubs。通过以

类似于--我遇到
您已经激活了rack 1.6.0,但是您的Gemfile在尝试使用Puma和Nginx在生产中运行Rails(4.2)时需要rack 1.6.4


bundle update rake
nor
rm Gemfile.lock和&bundle install
似乎有所帮助,到目前为止,我唯一的解决方案是手动将Gemfile.lock中的
rack(1.6.4)
更改为
rack(1.6.0)
。这将使用Gemfile.lock中的设置,由一位经验丰富的Rails开发人员使用binstubs。通过以下方式安装:

bundle install --binstubs
并通过相对路径运行:

./bin/rails server
或者最推荐的更新路径是什么,而不要考虑捆绑程序问题:

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

您需要卸载一个不需要的rack版本

请这样做

gem uninstall rack -v 1.6.0

参考:

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

gem install rack

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

您可以使用rvm执行此操作

创建新的gemeset

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
文件中定义了
rack2.0.7
,但我的应用程序需要
rack2.1.2
,我只需在
Gemfile.lock
文件中将其修改为
rack2.1.2

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

 gem uninstall rack -v 2.0.7
并最终在生产中安装了新的gem

bundle install --without development test
解决方案3

在极少数情况下,解决方案1解决方案2可能无法工作,您需要在更新gem之前编辑
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
就这些


我希望这有帮助

这与您的情况类似。您必须像这样删除机架版本1.6.0
gem卸载机架-v1.6.0
您尝试过吗?请检查下面的答案,这确实对技巧@Athar-tyvm起了作用!不,这是用彪马生产的。阿萨在上面的评论修正了这个问题。谢谢如果不正确修复数据库,这种情况还会再次发生,但请参见上面Athar的评论。无论您多么小心地安装或卸载gems,最终都会得到多个版本。运行it is bundle exec是正确的方法,可以消除您的应用程序中的版本模糊性deployment@Zepplock是的,“binstubs”是一种避免始终预结束bundle exec的方法。多个项目是我的问题,这是一个干净的解决方案。另外,将35; ruby gemset=new_test添加到Gemfile中会设置项目的gemset