通常我把文件放在rails lib文件夹中,它们似乎是自动加载的。
我最近尝试将此文件:https://gist.github.com/85632放入我的lib文件夹中。
当我尝试做时,从我的一个模特:
ftp = Net::FTPS::Implicit::new(
我明白了:
NameError: uninitialized constant Net::FTPS
from /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:440:in `load_missing_constant'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:80:in `const_missing'
from /Users/jnylund/Projects/aras/app/models/notifier.rb:372:in `send_ftp_file'
我通过添加: 要求'ftps_implicit'
到我的模型文件的顶部。
为什么在这种情况下我需要这样做?这是正确的做事方式吗?
感谢 乔尔
答案 0 :(得分:1)
Rails 2将按照惯例加载文件。所以当你要求时:
Net::FTPS::Implicit::new
...它会查找文件:
lib/net/ftps/implicit
...定义该类。
我认为Rails 2实际上不会在lib
文件夹中加载所有内容 - 它只会在请求某些内容时查找文件。
答案 1 :(得分:0)
Rails 3不再自动加载./lib目录。如果要在Rails 3中重新激活此行为 将以下行添加到您的应用程序配置:
config.autoload_paths += %W(#{config.root}/lib)
这也是这个问题here的转贴。