2012-07-16 7 views
5

私は宝石としてインストールしてirbでそれを要求しようとすると、私はカスタム宝石を持っていて、本当に奇妙なLoadErrorに遭遇しています。カスタムルビーの宝石に奇妙なLoadError

プロジェクトフォルダ内のrspecテストですべてうまく動作します。これは、irbの実際の宝石として使用する場合にのみ発生します。

LoadError例外をスローするファイル(/lib/mws/api/order_response.rb)は、実際に存在します。私はファイルの名前を変更し、それを必要とするファイルを更新しようとしました(/lib/mws.rb)。私はおそらく許可の問題があると思ってファイルを再作成しようとしました。何も動作しません。

特定のファイルのrequire行をコメントアウトすると、すべて動作します。ファイルには何も特別なものはありません。それとほぼ同じ4つのファイルがあります(*_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 
:私は必要だが必要です( /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 

ファイル(/lib/mws/api/order_response.rb)と

[email protected]:~$ 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>' 

ファイル

そして、私のファイル構造

enter image description here

答えて

2

ファイルがある場合/Users/chris/.rvm/gems/ruby-1.9.3-p194/gems/mws-0.1.18/lib/mws/apiにチェックすべきことができます(とあいまいな権限がありません)。

そうでない場合は、gemspecに追加していない可能性があります。

そこにある場合は、絶対パスでデバッグする必要があります。

+0

これはかなり答えでしたが、私は以下の理由を詳しく説明しました:http://stackoverflow.com/questions/11499140/weird-loaderror-on-custom-ruby-gem/11820819#11820819 –

4

興味のある方は、この宝石の製作にJewelerを使用していました。明らかになったように、Jewelerはgemspecを構築するときにGitリポジトリを使用します。

gitリポジトリに必要なファイルをすべて追加していない場合は、新しいgemspecファイルを生成するときに、Jewelerのgemspec rakeタスクには含まれません。

+2

うわー。この回答は、今日私に多くの助けになりました。私は夢中になると思った。 :) – oesgalha

+0

うれしい私は助けることができます。それもループのために私を投げた。 –

関連する問題