Rails会在每个请求中加载控制器、帮助程序和模型。
我的控制器有一堆包含共享操作的模块。
每次更改模块时,我都需要重新启动Rails才能使操作的更改生效。
你有什么想法可以告诉Rails也重新加载这些模块吗?
更新:
我的目录结构如下:
app/ controllers/ app1/ users_controller.rb app2/ users_controller.rb lib/ templates/ controllers/ users_controller_template.rb
App1 :: UsersController和App2 :: UsersController都像这样加载UsersControllerTeplate:
但是我仍然需要重新加载服务器才能看到在users_controller_template.rb中所做的更改。有任何想法吗?
我的控制器有一堆包含共享操作的模块。
每次更改模块时,我都需要重新启动Rails才能使操作的更改生效。
你有什么想法可以告诉Rails也重新加载这些模块吗?
更新:
我的目录结构如下:
app/ controllers/ app1/ users_controller.rb app2/ users_controller.rb lib/ templates/ controllers/ users_controller_template.rb
App1 :: UsersController和App2 :: UsersController都像这样加载UsersControllerTeplate:
# 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中所做的更改。有任何想法吗?