我试图将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/

10-13 09:40