是否可以要求Gemfile之外的文件?

例如,我正在开发一个gem,当我正在开发时,我使用pry而不是IRB,并使用debugger进行调试。 但是,我不希望可能的贡献者必须安装它们(因为它们可能不需要它们)。 我的第一个想法是将它们放入Bundler组:

 source :rubygems gemspec group :extras do gem "pry" gem "debugger" end 

然后人们可以使用:

 $ bundle install --without extras 

但我希望它是默认的,它们没有安装。 什么是完美的是他们不在我的Gemfile ,但我仍然可以要求它们(如果它们存在于计算机上)。 这个解决方案没问题,因为我不关心它们被锁定的版本。 可以吗?

bundle install是“选择退出” – 无论你指定 – 没有--without some_group ,它安装一切。

如果你绝对不想在你的Gemfile中拥有一个给定的gem,那么你可以在你的bundle之外gem install那个rogue gem。 然后它会在irb和直接ruby (但是如果你试图在bundle exec下运行的代码中require它,你很明显会遇到错误)。

您可以根据环境变量将条件添加到Gemfile中。 例:

 source :rubygems gemspec if ENV['WITH_EXTRAS'] == '1' gem "pry" gem "debugger" end 

然后,如果将环境变量设置为'1' ,则仅安装/加载gem,例如WITH_EXTRAS=1 bundle install