我的Rails 3.2应用程序中有一个初始化程序,它包含基于配置文件启动时的模块。它看起来像这样:
Array(Settings.site.authentications).map(&:to_sym).each do |sym|
AuthAuth.class_eval do
include Object.const_get(sym)
end
end
Array(Settings.site.authorizations).map(&:to_sym).each do |sym|
AuthAuth.class_eval do
include Object.const_get(sym)
end
end
# This exception is never raised when I start the server. So the includes
# appear to be working correctly.
raise "method not found!" unless AuthAuth.new.respond_to? :dynamically_included_method
AuthAuth
用于ApplicationController
中的:before_filter
,以确保用户经过身份验证和授权。它工作正常,并且要求我有一个可配置的方法来为每个站点设置授权和身份验证逻辑。
但是,我注意到,当我在开发模式下运行服务器时,如果我对应用程序中的任何类进行代码更改,AuthAuth
将恢复为默认行为,而不包含所包含的模块。
除初始化文件外,是否有适当的地方包含此代码?
这是一个相对较小的问题。在每次代码更改后重启开发服务器都很容易,但我很好奇。