0

Gemfile我有一个不寻常的情况,我需要根据环境变量的值来防止加载特定的 gem 。

此时修改Gemfile不是一个好的解决方案,因为 bundler 是在--deploymentmode 下使用的,这意味着对 Gemfile 的任何更改都需要 git commit,生成Gemfile.lockby bundle install --no-deployment,然后重新发布bundle install --deployment.

我不熟悉 Bundler 代码库,我欢迎有关如何在不过度破解/修补 Bundler 的情况下实现这一点的想法。

4

1 回答 1

2

据我所知,如果您不想触摸Gemfile.

一种解决方案只需要对您的Gemfile. 您可以添加require: false到相关 gem 的行中,确保 gem 的文件默认不包含在内:

gem 'gem_name', require: false

然后,您可以使用以下内容添加文件config/initializers

if ENV['MY_ENV_VARIABLE']
  require 'gem_name'
end 

根据 gem 的作用,这可能会或可能不会起作用,但这是一个可能的解决方案。

于 2013-06-29T17:20:23.280 回答