对于使用 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'
我正在写一个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'