LoadError in gem

Hi,

I'm trying to package a library into a gem. I write the main file with autoload, just like Rack's.

module RenrenAPI

  autoload :Authentication, "renren_api/authentication"
  autoload :SignatureCalculator, "renren_api/signature_calculator"
  autoload :HTTPAdapter, "renren_api/http_adapter"

end

But when I use the gem, I get a LoadError.

RenrenAPI::Authentication

LoadError: no such file to load -- renren_api/authentication

The file does exist. Does anyone can tell me what the problem is with my library, which does not happen to Rack.

Best regards,
Zhi-Qiang Lei
zhiqiang.lei@gmail.com

You can check the load path:

p $:

before your code to check where Ruby is looking for requires. BTW,
Ruby 1.9 removed "." from the load path.

Jesus.

···

On Wed, Apr 27, 2011 at 5:56 PM, Zhi-Qiang Lei <zhiqiang.lei@gmail.com> wrote:

Hi,

I'm trying to package a library into a gem. I write the main file with autoload, just like Rack's.

module RenrenAPI

autoload :Authentication, "renren_api/authentication"
autoload :SignatureCalculator, "renren_api/signature_calculator"
autoload :HTTPAdapter, "renren_api/http_adapter"

end

But when I use the gem, I get a LoadError.

RenrenAPI::Authentication

LoadError: no such file to load -- renren_api/authentication

The file does exist. Does anyone can tell me what the problem is with my library, which does not happen to Rack.

I find the problem is I made a wrong gemspec.

    spec.files = Dir["{lib/*,spec/*}"] + %w{README}

It didn't package the file under "lib/renren_api/". To change it like this will solve this problem.

    spec.files = Dir["{lib/**/*,spec/*}"] + %w{README}

Thanks.

Best regards,
Zhi-Qiang Lei
zhiqiang.lei@gmail.com

···

On Apr 27, 2011, at 11:56 PM, Zhi-Qiang Lei wrote:

Hi,

I'm trying to package a library into a gem. I write the main file with autoload, just like Rack's.

module RenrenAPI

autoload :Authentication, "renren_api/authentication"
autoload :SignatureCalculator, "renren_api/signature_calculator"
autoload :HTTPAdapter, "renren_api/http_adapter"

end

But when I use the gem, I get a LoadError.

RenrenAPI::Authentication

LoadError: no such file to load -- renren_api/authentication

The file does exist. Does anyone can tell me what the problem is with my library, which does not happen to Rack.

Best regards,
Zhi-Qiang Lei
zhiqiang.lei@gmail.com

Hi,

I'm trying to package a library into a gem. I write the main file with autoload, just like Rack's.

module RenrenAPI

autoload :Authentication, "renren_api/authentication"
autoload :SignatureCalculator, "renren_api/signature_calculator"
autoload :HTTPAdapter, "renren_api/http_adapter"

end

But when I use the gem, I get a LoadError.

RenrenAPI::Authentication

LoadError: no such file to load -- renren_api/authentication

The file does exist. Does anyone can tell me what the problem is with my library, which does not happen to Rack.

You can check the load path:

p $:

before your code to check where Ruby is looking for requires. BTW,
Ruby 1.9 removed "." from the load path.

Jesus.

It shows that the lib directory is in the load path. (/Users/siegfried/.rvm/gems/ruby-1.9.2-head/gems/renren-api-0.3.1/lib)

bogon% irb
ruby-1.9.2-head :001 > require "renren_api"
=> true
ruby-1.9.2-head :002 > RenrenAPI::Authentication
LoadError: no such file to load -- renren_api/authentication
  from (irb):2
  from /Users/siegfried/.rvm/rubies/ruby-1.9.2-head/bin/irb:16:in `<main>'
ruby-1.9.2-head :003 > p $:
["/Users/siegfried/.rvm/gems/ruby-1.9.2-head/gems/renren-api-0.3.1/lib", "/Users/siegfried/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1", "/Users/siegfried/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.6.0", "/Users/siegfried/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby", "/Users/siegfried/.rvm/rubies/ruby-1.9.2-head/lib/ruby/vendor_ruby/1.9.1", "/Users/siegfried/.rvm/rubies/ruby-1.9.2-head/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin10.6.0", "/Users/siegfried/.rvm/rubies/ruby-1.9.2-head/lib/ruby/vendor_ruby", "/Users/siegfried/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1", "/Users/siegfried/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/x86_64-darwin10.6.0"]

The directory structure is:

~lib/
>~renren_api/
> >-authentication.rb
> >-http_adapter.rb
> `-signature_calculator.rb
`-renren_api.rb

The code I mentioned is the content of lib/renren_api.rb

Best regards,
Zhi-Qiang Lei
zhiqiang.lei@gmail.com

···

On Apr 28, 2011, at 12:07 AM, Jesús Gabriel y Galán wrote:

On Wed, Apr 27, 2011 at 5:56 PM, Zhi-Qiang Lei <zhiqiang.lei@gmail.com> wrote:

What happens in your irb session if you type:

require "renren_api/authentication"

?

···

--
Posted via http://www.ruby-forum.com/.

I receive a LoadError.

ruby-1.9.2-head :001 > require "renren_api/authentication"
LoadError: no such file to load -- renren_api/authentication
  from <internal:lib/rubygems/custom_require>:29:in `require'
  from <internal:lib/rubygems/custom_require>:29:in `require'
  from (irb):1
  from /Users/siegfried/.rvm/rubies/ruby-1.9.2-head/bin/irb:16:in `<main>'

Best regards,
Zhi-Qiang Lei
zhiqiang.lei@gmail.com

···

On Apr 28, 2011, at 1:54 AM, Brian Candler wrote:

What happens in your irb session if you type:

require "renren_api/authentication"

?

--
Posted via http://www.ruby-forum.com/\.