2012-07-16 12 views
5

Ho una gemma personalizzata e sto incontrando un LoadError davvero strano quando lo installo come un gioiello e cerco di richiederlo in irb.Weird LoadError su rubino personalizzato gemma

Tutto funziona correttamente con i miei test rspec all'interno della cartella del progetto. Questo si verifica solo quando lo si utilizza come una vera gemma in irb.

Il file che genera un'eccezione LoadError a (/lib/mws/api/order_response.rb) esiste effettivamente. Ho provato a rinominare il file e ad aggiornare il file che lo richiede (/lib/mws.rb). Ho provato a ricreare il file pensando che forse ci fosse un problema con le autorizzazioni. Niente funziona.

Se commento la riga richiesta per quel file specifico, tutto funziona. Non c'è niente di speciale nel file. Ci sono altri 4 file quasi identici (*_response.rb).

Mi sento come se stessi prendendo pillole pazze. Devo trascurare qualcosa ma di sicuro non lo vedo.

Trace:

[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>' 

file con la richiede (/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 

File sto richiedendo (/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 

E la mia struttura dei file

enter image description here

risposta

2

Può dovrebbe verificare nel /Users/chris/.rvm/gems/ruby-1.9.3-p194/gems/mws-0.1.18/lib/mws/api se il file si trova lì (e non dispone delle autorizzazioni oscuri).

Se non è il caso, probabilmente hai dimenticato di aggiungerlo nel tuo gemspec.

Se è presente, provare a richiedere/caricarlo con il percorso assoluto (a scopo di debug).

+0

Questa è stata praticamente la risposta, ma ho spiegato perché di seguito: http://stackoverflow.com/questions/11499140/weird-loaderror-on-custom-ruby-gem/11820819#11820819 –

4

Per chiunque fosse interessato, stavo usando Jeweler per gestire la costruzione di questo gioiello. A quanto pare, Jeweler usa il tuo repository Git quando costruisce un gemspec.

Se non sono stati aggiunti tutti i file necessari al proprio repository git, l'attività di jeweler's gemspec rake non li includerà quando si genera un nuovo file gemspec.

+2

Wow. Questa risposta mi ha aiutato molto oggi. Pensavo che stavo impazzendo o qualcosa del genere. :) – oesgalha

+0

Contento di aver potuto aiutare. Mi ha anche buttato per un cappio. –

Problemi correlati