dan*_*iel 15 ruby-on-rails ruby-on-rails-3
我有一个类ConstData:
class ConstData
US_CITIES = ['miami', 'new york']
EUROPERN_CITIES = ['madrid', 'london']
end
Run Code Online (Sandbox Code Playgroud)
它存储在/lib/const_data.rb下
我的想法是在模型,控制器或视图中我可以做到:
ConstData::US_CITIES 获得US_CITIES等
Rails应该自动加载这个类,我从以下网址获取:http: //groups.google.com/group/rubyonrails-talk/browse_thread/thread/662abfd1df9b2612?hl = en
但这不起作用.任何人都可以解释我如何做到这一点?
Dam*_*IEU 48
@daniel的帖子是从2008年开始的.自那时起,Rails发生了变化.
事实上,最近.Rails3不会自动加载lib /目录.
你可以很容易地重新激活它.打开config/application.rb并在配置(在Application类中)添加以下内容:
config.autoload_paths += %W(#{config.root}/lib)
Run Code Online (Sandbox Code Playgroud)
然后你的lib/dir将被自动加载.
小智 13
autoload_paths不能为你工作的原因你被迫做了:
Dir["lib/**/*.rb"].each do |path|
require_dependency path
end
Run Code Online (Sandbox Code Playgroud)
是因为你忘了命名你的课程.
lib/awesome/stuffs.rb应该包含这样的类/模块:
class/module Awesome::Stuffs
....
Run Code Online (Sandbox Code Playgroud)
但你有:
class/module Stuffs
....
Run Code Online (Sandbox Code Playgroud)
Rails只能自动加载其名称与其文件路径和文件名匹配的类和模块.
:)
| 归档时间: |
|
| 查看次数: |
18015 次 |
| 最近记录: |