我正在构建一个 Rails 3 应用程序,用户可以选择多个模板之一来构建一个简单的网站。当应用程序启动时,我正在尝试初始化所有可用的模板。这本质上是一个文件,让我定义它们所有,然后对于每个模板调用
问题是,在开发模式下,使调用
Template.add(template)
,它会将它们存储在 @@templates
中,并且我可以通过 Template.find(name)
访问它们。问题是,在开发模式下,使调用
Template.add
的初始化器在第一次请求时被加载,然后在 reload!
上被清除。我已经阅读了有关 config.to_prepare
的文章,但它对我不起作用,可能是因为我是这样要求模板的:# template config at app/templates/template_name/template_name.rb
path = File.expand_path(Rails.root + 'app/templates')
Dir[File.join(path, '/*')].each do |template|
name = File.basename(template)
require File.join(path, name, "#{name}.rb")
end
我应该怎么做才能在reload!
之后重新加载这些文件,或者根本不让它们被删除?如果你有更好的处理方法,请告诉我。我在Rails方面还有很多需要学习的地方,特别是配置方面。
目前我通过在类中加载数据来临时避免这个问题。请帮我摆脱这种丑陋、非模块化的麻烦。
to_prepare
时,所有内容都在第一次运行时加载,然后之后就不再加载了。我想这是因为我使用的是require
而不是load
。 - coreyward