我试图将Tokbox SDK加载到rails 3中。我已将该库放置在/ lib目录中,因此当前我的目录结构如下所示:
/ lib
opentok.rb
/ OpenTok
Exceptions.rb
OpenTokSDK.rb
Session.rb
我正在使用application.rb中的以下内容加载/ lib目录中的所有文件:
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
我在/ lib目录中拥有的其他文件都可以自动加载,但是在我添加
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
在Rails 3中加载库的正确方法是什么?
最佳答案
自动加载器将使常量保持不变,因此“OpenTok”将使自动加载器查找“open_tok.rb”,而不是“opentok.rb”。尝试重命名lib / opentok.rb,它应该可以正常工作。
关于ruby-on-rails-3 - Rails 3库直到需要时才加载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4235782/