Rails在每个请求上加载控制器、助手和模型。
我的控制器有一堆模块,其中包括共享操作的方法
每次我更改模块时,我都必须重新启动Rails,以使操作中的更改生效
知道我如何告诉rails也重新加载这些模块吗?
更新:
我的目录结构是这样的:
应用程序/控制器/app1/users_controller.rbapp2/users_controller.rblib/模板/控制器/users_controller_template.rb
App1::UsersController和App2::UsersCoontroller都加载UsersControlTeplate,如下所示:
# app/controllers/app1/users_controller.rb
class App1::UsersController < App1::ApplicationController
require "templates/controllers/users_controller_template"
include Templates::Controllers::UsersControllerTemplate
end
# templates/controllers/users_controller_template.rb
module Templates::Controllers::UsersControllerTemplate
def self.included(base)
base.class_eval do
# some class macros called here
end
end
# actions defined here
def index
end
end
在application.rb中,我添加了:
config.autoload_paths += %W{ #{config.root}/lib/templates/ }
但我仍然需要重新加载服务器才能查看users_controller_template.rb 中所做的更改
有什么想法吗?
您可以将它们添加到application.rb文件中的autoload_paths
中,它们将与模型和控制器一起自动重新加载。
config.autoload_paths << "#{config.root}/lib"
在config/application.rb
:中
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
这将重新加载lib文件夹中的所有Ruby文件以及lib子目录中的任何Ruby文件。