我有一个不寻常的情况,我需要根据环境变量的值来阻止Gemfile
中的特定gem加载。
此时修改Gemfile
不是一个好的解决方案,因为在--deployment
模式下使用了bundler,这意味着对Gemfile的任何更改都需要git commit,生成Gemfile.lock
by bundle install --no-deployment
然后重新发布bundle install --deployment
。
我不熟悉Bundler代码库,我欢迎有关如何实现这一目标的想法,而不会过度修改/修补Bundler。
答案 0 :(得分:2)
据我所知,如果您不想触摸Gemfile
,则无法实现此目的。
一种解决方案只需要对您的Gemfile
进行一次性更改。您可以将require: false
添加到相关gem的行中,确保默认情况下不包含gem的文件:
gem 'gem_name', require: false
然后,您可以使用以下内容向config/initializers
添加文件:
if ENV['MY_ENV_VARIABLE']
require 'gem_name'
end
根据宝石的作用,这可能会或可能不会起作用,但这是一种可能的解决方案。