2013-06-29 45 views
0

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

修改Gemfile不此时一个好的解决方案,因为捆绑在--deployment模式,这意味着对任何的Gemfile更改需要git的承诺,代Gemfile.lock使用bundle install --no-deployment,然后再发行bundle install --deployment

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

回答

2

据我所知,如果你不想触碰你的Gemfile,没有办法做到这一点。

一个解决方案只需要一次性更改您的Gemfile。你可以添加require: false到有问题的宝石行,确保创业板的文件不会默认包含:

gem 'gem_name', require: false 

然后,你可以用一些文件添加到config/initializers这样的:

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

取决于创业板做什么,这可能会或可能不会工作,但这是一个可能的解决方案。

+0

这将工作,并+1它不是哈克。 – Sim