如何在生产环境中使用bundler安装其他宝石?

时间:2016-10-18 13:48:05

标签: ruby bundler production-environment

我有一个临时服务器。而且我有一些问题我想在那里调查一下。但我忘了将byebug添加到Gemfile。我当然可以在本地添加它,运行bundle,提交到存储库,部署。但是不是有更简单的方法吗?

当我尝试远程更改Gemfile并运行bundle时,我得到:

You are trying to install in deployment mode after changing
your Gemfile. Run `bundle install` elsewhere and add the
updated Gemfile.lock to version control.

If this is a development machine, remove the /home/gccs/website-backend/releases/20161018143057/Gemfile freeze
by running `bundle install --no-deployment`.

You have added to the Gemfile:
* byebug

宝石与capistrano一起安装,基本上是这样的:

bundle install --path /home/user/app/shared/bundle --without development test --deployment --quiet

2 个答案:

答案 0 :(得分:1)

修改.bundle/configBUNDLE_FROZEN: '1'更改为'0'(或删除它)就足以让Bundler在部署环境中管理宝石。然后,您可以修改Gemfile,运行bundle,重新启动您的应用,并准备好使用自定义宝石。

如果您打算在应用程序运行时之外使用它们(例如,如果pry中需要rails console),则不需要重新启动服务器。

答案 1 :(得分:1)

您无法安装其他宝石的原因是捆绑包被冻结。您可以这样检查:

$ grep FROZEN .bundle/config
BUNDLE_FROZEN: '1'

如果您删除该行(按照mdesantis的建议)或更改" 1"到" 0",你可以安装你喜欢的任何宝石,就好像它是开发者机器一样。但是,如果不再需要,通常最好恢复该值。不确定bundler是否会在下次部署时自动执行此操作。