自定义ruby gem上的奇怪LoadError

Chr*_*ngs 5 ruby gem

我有一个自定义宝石,当我将它作为一个宝石安装并尝试在irb中需要它时遇到一个非常奇怪的LoadError.

使用项目文件夹中的rspec测试,一切正常.这仅在将其用作irb中的实际gem时发生.

它在(/lib/mws/api/order_response.rb)处抛出LoadError异常的文件确实存在.我已经尝试重命名文件并更新需要它的文件(/lib/mws.rb).我尝试重新创建文件,认为可能存在权限问题.什么都行不通.

如果我注释掉该特定文件的require行,一切正常.这个文件没什么特别的.其他4个文件几乎与它相同(*_response.rb).

我觉得我正在服用疯狂的药片.我必须忽略一些东西,但我肯定不会看到它.

跟踪:

chris@Samus:~$ irb
1.9.3p194 :001 > require 'mws'
LoadError: cannot load such file -- mws/api/order_response
    from /Users/chris/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /Users/chris/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /Users/chris/.rvm/gems/ruby-1.9.3-p194/gems/mws-0.1.18/lib/mws.rb:14:in `<top (required)>'
    from /Users/chris/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `require'
    from /Users/chris/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require'
    from /Users/chris/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
    from (irb):1
    from /Users/chris/.rvm/rubies/ruby-1.9.3-p194/bin/irb:16:in `<main>'
Run Code Online (Sandbox Code Playgroud)

带有requires(/lib/mws.rb)的文件

require 'mws/base'
require 'mws/connection'
require 'mws/utility'

require 'mws/api/seller'
require 'mws/api/product'
require 'mws/api/order'
require 'mws/api/report'

require 'mws/api/general_response'
require 'mws/api/product_response'
require 'mws/api/report_response'
require 'mws/api/seller_response'
require 'mws/api/order_response' # <--- the offending line

module MWS
  # @see Base#initialize MWS::Base for instantiation details.
  # @return [Base] returns MWS::Base object.
  def self.new(merchant_id, access_key, secret_key)
    MWS::Base.new(merchant_id, access_key, secret_key)
  end
end

# The below is for documentation generation purposes.

# MWS is a wrapper for the Amazon Marketplace Web Service (MWS) API.
module MWS
  # API handles all the Amazon MWS API specific stuff.
  module API
  end
  # Utilities contains various functions needed throughout MWS. Utilities is a mixin to multiple classes.
  module Utilities
  end
end
Run Code Online (Sandbox Code Playgroud)

文件我需要(/lib/mws/api/order_response.rb):

module MWS
  module API

    # Class for parsing Amazon's XML responses into managable objects.
    class OrderResponse

      # Include GeneralResponse instance methods as class methods
      extend GeneralResponse

    end
  end
end
Run Code Online (Sandbox Code Playgroud)

和我的文件结构

在此输入图像描述

J-_*_*_-L 2

Can 应该检查/Users/chris/.rvm/gems/ruby-1.9.3-p194/gems/mws-0.1.18/lib/mws/api该文件是否位于那里(并且没有模糊的权限)。

如果情况并非如此,您可能忘记将其添加到您的 gemspec 中。

如果存在,请尝试使用绝对路径请求/加载它(用于调试目的)。