【发布时间】:2018-01-07 12:44:22
【问题描述】:
我正在尝试调试一个简单的 ruby 控制台脚本,但在尝试要求 pry 时遇到加载错误:
- 我正在使用 rbenv 来管理环境。
- 我使用的是 Ruby 版本: 2.3.1.
- 尝试使用 Pry '~> 0.10.4'
/Users/gangelo/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': 无法加载这样的文件 -- pry (加载错误)
我过去在 Rails 应用程序中使用过 Pry 和 Byebug,从来没有遇到过这样的问题。在寻找解决方案时,我发现大多数问题与 Gemfile 中未包含 Pry 或 Gem 文件中正确环境中未包含 Pry gem 相关;这不是我的情况,我做错了什么?
# /Gemfile
group :development, :test do
gem 'pry', '~> 0.10.4'
end
在我的脚本中:
# /calculator/rpn_calculator_service.rb
module RealPage
module Calculator
# Provides Reverse Polish Notation computation services.
class RPNCalculatorService < CalculatorService
include Helpers::Arrays
def initialize
super RPNInputParser.new
end
def compute(input)
# Load error here :(
require 'pry'; binding.pry
# Code removed for brevity...
end
# Code removed for brevity...
end
end
end
【问题讨论】:
-
bundle exec pry -
@mudasobwa 谢谢。没有办法像在 Rails 应用程序中那样使用 binding.pry 简单地进入会话?
-
我不确定我是否遵循。全局安装
pry并在任何你想要的地方中断,或者强制加载gemset。rails的行为相同。 -
@gangelo 你不需要在类中要求“pry”。 Rails 在启动时会自动要求 gem 文件中列出的所有 gem。正如您在
application.rb中看到的rails 文档。# Require the gems listed in Gemfile, including any gems # you've limited to :test, :development, or :production. Bundler.require(*Rails.groups)我认为指定 gem 的版本不是一个好习惯。所有 require 语句都应该在类的顶部。 -
要使用 gemset,应该发出
bundle exec script,而不仅仅是script。
标签: ruby rbenv pry binding.pry