我有一个远程运行的应用程序,我刚刚将rails
升级到版本4.2.8,它也升级了其他宝石。之后我跑了service unicorn restart
,但是独角兽的日志给了我这个错误:
您已经激活了unicorn 5.2.0,但您的Gemfile需要unicorn 5.3.0。将
bundle exec
添加到您的命令可能会解决此问题。 (GEM :: LoadError)
我已尝试成功返回gem uninstall unicorn -v 5.2.0
,然后成功返回gem install -v 5.3.0
。之后,我运行service unicorn restart
,但错误仍然存在。
我注意到了bundle exec
的建议,但我不确定我应该在这个命令前加上什么。
答案 0 :(得分:1)
尝试删除你的gemfile.lock文件,然后再次运行bundle install,它会从头开始重新填充,通常可以解决我的gem冲突。
答案 1 :(得分:0)
这意味着您计算机上运行的独角兽版本与应用程序中指定的版本不同。 service unicorn
可能指向安装在服务器/计算机上的独角兽,而不是指向你的应用程序版本的独角兽,对吗?然后当它启动您的应用程序时,您的应用程序正在尝试加载不同版本的gem。
您还可以在应用的上下文中运行独角兽,例如bundle exec unicorn
- How to start rails server in production mode using unicorn and config file?。
答案 2 :(得分:0)
如果你找到了解决方案,那就好了。如果没有,下次使用2.3.1@myapp这样的独特gemset创建一个新的rails应用程序。 这样,当您部署到远程服务器时,您将避免这种类型的宝石冲突。
答案 3 :(得分:0)
这可能是因为您的计算机上有两个不同的宝石来源。
如果您使用RVM和gemsets之类的东西,请确保使用正确的gemset。特别是,请确保您的gem install
和gem uninstall
对应用程序特定的宝石集进行操作,而不是对系统范围内的宝石进行操作。您可以在https://rvm.io/gemsets找到详细信息。
Bundler还为每个应用程序生成一个单独的gemset。因此,如果您使用bundler,则必须先使用bundle exec
(例如bundle exec rspec spec
)来运行所有命令。如果要从捆绑中删除gem,请将其从Gemfile中删除,然后运行bundle update gem_in_question
(这也将更新您的Gemfile.lock)。您可以在http://bundler.io/v1.14/guides/using_bundler_in_application.html#executing-commands---bundle-exec找到更多信息。
我希望这有助于解决您的问题。