2011-06-03 83 views
0

通常情況下,我把文件放在鐵軌lib文件夾中,他們似乎被自動加載。軌在lib文件夾中使用文件 - 導軌2.3.5

我最近嘗試把這個文件: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'

到我的模型文件的頂部。

爲什麼在這種情況下我是否需要這樣做?這是做事的正確方式嗎?

感謝 喬爾

回答

1

梁2將按照慣例加載文件。所以,當你要求:

Net::FTPS::Implicit::new 

...它會查找該文件:

lib/net/ftps/implicit 

...定義類。

我不認爲Rails的2實際上是在lib文件夾中加載了一切 - 要求的東西時,它只是看起來有一個文件。

+1

我也很警惕在Ruby的Net模塊中定義類,除非你有充分的理由 – Gareth 2011-06-03 20:57:00

+0

@Gareth,同意! +1 – Jits 2011-06-03 21:11:55

0

的Rails 3不加載./lib目錄自動了。如果您想重新在Rails的這種行爲3 加入線下到你的應用程序配置:

config.autoload_paths += %W(#{config.root}/lib) 

這也是這個問題here的重新發布。

+0

我相信原來的海報是專門詢問Rails 2的 – Jits 2011-06-03 21:12:27