【问题标题】:Add a gem to the bundle without adding it the Gemfile (rspec + fuubar)将 gem 添加到包中而不添加 Gemfile (rspec + fuubar)
【发布时间】:2020-01-17 00:30:15
【问题描述】:

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

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

如何在不将 Fuubar gem 添加到您的 Gemfile 的情况下使用 --format Fuubar 运行 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)

【问题讨论】:

    标签: ruby-on-rails ruby rspec bundle bundler


    【解决方案1】:

    使用bundler config,您可以添加自定义Gemfile.local,它将继承项目Gemfile的所有依赖项。 Gemfile 的正文应该类似于下面的一个:

    # Gemfile.local
    eval_gemfile "./Gemfile"
    
    group :development, :test do
      gem 'fuubar'
    end
    

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

    BUNDLE_GEMFILE=Gemfile.local bundle exec rspec --format Fuubar spec
    

    别忘了在之前运行BUNDLE_GEMFILE=Gemfile.local bundle install

    【讨论】:

    • 自动加载 Gemfile.local 对打包程序来说是一个不错的功能。
    • 我原则上喜欢这个解决方案,但是当我运行BUNDLE_GEMFILE=Gemfile.local bundle install 时它会产生gem 不兼容问题,即使bundle install 工作正常。还没弄清楚原因。
    • 通过在运行BUNDLE_GEMFILE=Gemfile.local bundle install 之前将Gemfile.lock 复制到Gemfile.local.lock 解决了上述不兼容问题。建议我们的 Gemfile 需要大修...
    • @AndyB 即使在bundle install 之前复制锁也可能会更新您的项目依赖项(如果额外的开发gem 需要不同的版本)。正确锁定Gemfile 就足够了。
    【解决方案2】:

    我会使用gem 命令安装它:

    gem install fuubar
    

    请注意,如果您在每个项目中使用不同版本的 ruby​​ 或不同的 gemset,则需要安装多次(每个版本/gemset 一次)。

    【讨论】:

    • 这不起作用。 gem install fuubar 成功,但是当你运行 bundle show fuubar 它返回 Could not find gem 'fuubar'
    • 也:bundle exec gem install fuubar 不能解决问题
    • 它没有添加到包 (Gemfile.lock),但它存在于您安装的 gems 中
    • 还是会导致require': cannot load such file -- fuubar (LoadError)你自己试过了吗?
    猜你喜欢
    • 1970-01-01
    • 2019-09-18
    • 2013-10-16
    • 2015-05-07
    • 2016-06-24
    • 2020-04-19
    • 2017-04-12
    • 2023-03-07
    • 2020-07-08
    相关资源
    最近更新 更多