【问题标题】:Cannot load 'pry' - `require': cannot load such file -- pry (LoadError)无法加载“pry”-“require”:无法加载此类文件--pry (LoadError)
【发布时间】: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


【解决方案1】:

我在尝试运行我的 gem cars 时收到了类似的错误:

/Users/giovanni/.rvm/rubies/ruby-2.2.3/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- pry (LoadError)
    from /Users/giovanni/.rvm/rubies/ruby-2.2.3/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/giovanni/.rvm/gems/ruby-2.2.3/gems/cars-0.0.6/bin/cars:3:in `<top (required)>'
    from /Users/giovanni/.rvm/gems/ruby-2.2.3/bin/cars:23:in `load'
    from /Users/giovanni/.rvm/gems/ruby-2.2.3/bin/cars:23:in `<main>'
    from /Users/giovanni/.rvm/gems/ruby-2.2.3/bin/ruby_executable_hooks:15:in `eval'
    from /Users/giovanni/.rvm/gems/ruby-2.2.3/bin/ruby_executable_hooks:15:in `<main>'

我推断可能我的gem没有安装所以我就跑了:

➜  ~ gem install pry
Fetching: coderay-1.1.2.gem (100%)
Successfully installed coderay-1.1.2
Fetching: method_source-0.9.0.gem (100%)
Successfully installed method_source-0.9.0
Fetching: pry-0.11.3.gem (100%)
Successfully installed pry-0.11.3
3 gems installed

然后像往常一样执行我的 gem

【讨论】:

  • 是的,我可以这样做,但我不想全局安装它。不知道为什么我不能简单地将它用作捆绑宝石的一部分。
【解决方案2】:

bundler.io 中的这些步骤对我有用:

  1. 更新到最新版本的 bundler:gem install bundler

  2. 尝试再安装一次:bundle install

【讨论】:

    猜你喜欢
    • 2014-05-27
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 2022-09-26
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多