将 gem 添加到包中,而不将其添加到 Gemfile (rspec + fuubar)

Fil*_*uzi 1 ruby bundle rspec ruby-on-rails bundler

我使用“fuubar”作为我选择的 RSpec 格式化程序。在我的~/.rspecI中--format Fuubar,这意味着在任何 RSpec 运行中、在任何项目中(无论 Gemfile 内容如何)--format Fuubar都会使用。

我不想将其添加为项目的依赖项,因为这是非常个人化的事情,在某些项目中,您作为一个团队决定保持 Gemfile 的精简,而不使用不必要的 gem。

如何在--format Fuubar不将 Fuubar gem 添加到 Gemfile 的情况下运行 RSpec?

在未安装 fuubar 的情况下运行时出现的错误rspec

/Users/filip.bartuzi/.asdf/installs/ruby/2.6.2/lib/ruby/gems/2.6.0/gems/activesupport-5.1.6.2/lib/active_support/dependencies.rb:292:in `require': cannot load such file -- fuubar (LoadError)
Run Code Online (Sandbox Code Playgroud)

SZM*_*MER 5

使用捆绑器配置,您可以添加自定义Gemfile.local,它将继承项目中的所有依赖项Gemfile。正文Gemfile应类似于以下内容:

# Gemfile.local
eval_gemfile "./Gemfile"

group :development, :test do
  gem 'fuubar'
end
Run Code Online (Sandbox Code Playgroud)

然后在bundle命令之前,您应该传递环境变量BUNDLE_GEMFILE=Gemfile.local。这将导致以下命令:

BUNDLE_GEMFILE=Gemfile.local bundle exec rspec --format Fuubar spec
Run Code Online (Sandbox Code Playgroud)

别忘了BUNDLE_GEMFILE=Gemfile.local bundle install之前跑