对于使用 Gemfile 的 Ruby 应用程序,无法要求通过 Bundler.setup 进行窥探

Unable to require pry via Bundler.setup for a Ruby application that uses a Gemfile

我正在写一个simple ruby application(主要是使用 PORO 的)。我已经向它添加了一个 Gemfile,我试图通过 Gemfile 要求撬 gem(这对于在调试时添加断点很有用,随着应用程序的增长),但我无法要求 gem 使用 Bundler.setup,使用 Bundler.require 时一切正常。

我正在努力避免使用 Bundler.require,例如 this blog 中所述的原因。

Employee.rb 文件中,我有以下代码 -

# require 'bundler'
# require 'bundler/setup'
# Bundler.setup(:default, :test, :development)

Bundler.require(:default, :development, :test)

def total_score(scores)
  binding.pry #added on purpose , just to see if the app stops at this breakpoint
  scores.inject(:+)
end

当我使用 Bundler.setup(取消注释上面注释的行)而不是 Bundler.require 时,我的应用程序根目录给出的命令 rspec spec . 出现以下错误-

 Failure/Error: expect(total_score(scores)).to eq(16)
 NoMethodError:
   undefined method `pry' for #<Binding:0x007fbda22b79d0>
 # ./Employee.rb:9:in `total_score'
 # ./spec/employee_spec.rb:5:in `block (3 levels) in <top (required)>'

此外,根据 bundler docs, I tried even doing a require rubygems, but even that doesn't help. Ideally, I would want to avoid using require rubygems for reasons mentioned in this link.

再补充一点

如何让我的应用程序使用 Bundler.setup 来要求撬 gem,而不同时执行 require rubygems,也不使用 Bunder.require

Bundler.setup 只会将 gem 添加到加载路径,而 Bundler.require 会同时添加到加载路径和 require。

我建议使用 Bundler.setup 以便您的代码启动更快。然后当你需要撬的时候,这样做:

require 'pry'