【发布时间】:2012-08-24 21:11:40
【问题描述】:
我目前正在尝试将功能转移到引擎中。到目前为止它工作得很好,但我有点困惑为什么引擎的某些部分总是在发生变化时自动重新加载,而有些则没有。
具体来说,添加helper方法的时候,必须重启Rails服务器,否则Rails是看不到的。这是正常行为吗?这是我的引擎的相关部分:
组件/iq_list.rb
# encoding: utf-8
require 'iq_list/engine'
# Load IqList Modules
module IqList
extend ActiveSupport::Autoload
autoload :Helpers
autoload :Models
autoload :Controllers
end
components/iq_list/engine.rb
module IqList
class Engine < ::Rails::Engine
end
end
components/iq_list/helpers.rb
module IqList
module Helpers
extend ActiveSupport::Autoload
autoload :IqListHelper
end
end
components/iq_list/helpers/iq_list_helper.rb
module IqList
module Helpers
module IqListHelper
def some_method
# ...
end
end
end
end
我对引擎还是很陌生,上面的很多代码都是我从别人的工作中提取的,所以请耐心等待。任何指向正确方向的提示都非常感谢。
【问题讨论】:
-
为什么你的代码在
components目录下?是什么让你这样做?组件是 Rails (1.2) 的一个古老特性。 -
你会把它放在哪里?如前所述,我从其他人那里获取了代码,我认为这是因为在
app/components内的东西正在正确地重新加载。您会在哪里放置您正在大力开发的引擎? -
引擎通常放在
vendor/engines目录下,应该会自动加载。请参考(文档)[guides.rubyonrails.org/engines.html] 了解如何开始使用引擎
标签: ruby-on-rails helper rails-engines