动态阻止Gemfile中的gem加载

时间:2013-06-29 15:13:29

标签: ruby-on-rails ruby-on-rails-3 deployment gem bundler

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

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

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

1 个答案:

答案 0 :(得分:2)

据我所知,如果您不想触摸Gemfile,则无法实现此目的。

一种解决方案只需要对您的Gemfile进行一次性更改。您可以将require: false添加到相关gem的行中,确保默认情况下不包含gem的文件:

gem 'gem_name', require: false

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

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

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