2012-07-16 34 views
5

Tengo una joya personalizada y me encuentro con un LoadError realmente extraño cuando lo instalo como una gema e intento de requerirlo en irb.Weird LoadError en joya de rubí personalizada

Todo funciona bien con mis pruebas rspec dentro de la carpeta del proyecto. Esto solo ocurre cuando se lo usa como una gema real en irb.

El archivo arroja una excepción LoadError en (/lib/mws/api/order_response.rb) de hecho existe. Intenté cambiar el nombre del archivo y actualizar el archivo que lo requiere (/lib/mws.rb). Intenté volver a crear el archivo pensando que tal vez había un problema de permisos. Nada funciona.

Si comento la línea de solicitud para ese archivo específico, todo funciona. No hay nada especial sobre el archivo. Hay otros 4 archivos casi idénticos (*_response.rb).

Siento que estoy tomando pastillas locas. Debo estar pasando por alto algo, pero seguro que no lo veo.

Traza:

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

de archivos con la requiere (/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 

del archivo que estoy requiriendo (/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 

Y mi estructura de archivos

enter image description here

Respuesta

2

Puede debe comprobar en /Users/chris/.rvm/gems/ruby-1.9.3-p194/gems/mws-0.1.18/lib/mws/api si el archivo se encuentra allí (y no tiene permisos oscuros).

Si ese no es el caso, probablemente se haya olvidado de agregarlo a su gemspec.

Si está allí, intente requerir/cargarlo con la ruta absoluta (para fines de depuración).

+0

Esto fue más o menos la respuesta, pero he detallado por qué a continuación: http://stackoverflow.com/questions/11499140/weird-loaderror-on-custom-ruby-gem/11820819#11820819 –

4

Para cualquier persona interesada, estaba usando el joyero para manejar la construcción de esta joya. Como resultado, Joyero usa tu repositorio de Git cuando construye un gemspec.

Si no ha agregado todos los archivos necesarios a su repositorio de git, la tarea de rastrillo gemspec de Jeweller no los incluirá al generar un nuevo archivo gemspec.

+2

Wow. Esta respuesta me ayudó mucho hoy. Pensé que me estaba volviendo loco o algo así. :) – oesgalha

+0

Me alegro de poder ayudar. Me lanzó a un bucle también. –

Cuestiones relacionadas