Alex Rivera | Logout

Rails 3 library not loading until require

Asked 2010-11-21T00:27:34.933
25

I'm trying to load the Tokbox SDK in rails 3. I've placed the library in my /lib directory, so currently my directory structure looks like so:

/lib
  opentok.rb
  /OpenTok
    Exceptions.rb
    OpenTokSDK.rb
    Session.rb

I'm loading all files in the /lib directory using the following in application.rb:

config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]

Other files I have in the /lib directory are auto-loading just fine, but this library does not load until I add a require 'OpenTok':

ruby-1.9.2-p0 > OpenTok
NameError: uninitialized constant OpenTok
ruby-1.9.2-p0 > OpenTok::OpenTokSDK
NameError: uninitialized constant OpenTok
ruby-1.9.2-p0 > require 'OpenTok'
 => ["OpenTok"]
ruby-1.9.2-p0 > OpenTok
 => OpenTok
ruby-1.9.2-p0 > OpenTok::OpenTokSDK
 => OpenTok::OpenTokSDK 

What is the correct way to load the library in Rails 3?

Edit
Report

1 Answer

30

The autoloader will snake case the constant, so "OpenTok" would make the autoloader look for "open_tok.rb", not "opentok.rb". Try renaming lib/opentok.rb and it should work fine.

answered 2010-11-21T00:30:52.437

Your Answer