如何在每次请求时都在/lib中重新加载文件



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文件。

相关内容

  • 没有找到相关文章

最新更新