【问题标题】:Dynamically preventing a gem in Gemfile from loading动态阻止 Gemfile 中的 gem 加载
【发布时间】:2013-06-29 15:13:29
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    据我所知,如果您不想触摸您的Gemfile,则没有任何方法可以做到这一点。

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

    gem 'gem_name', require: false
    

    然后,您可以将文件添加到config/initializers,如下所示:

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

    根据 gem 的功能,这可能有效也可能无效,但这是一个可能的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-19
      • 2014-01-25
      • 1970-01-01
      • 2020-04-19
      • 1970-01-01
      • 2013-10-16
      相关资源
      最近更新 更多