Как я могу перезагрузить файлы в / lib при каждом запросе? - PullRequest
3 голосов
/ 02 июня 2011

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

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 02 июня 2011

Вы можете добавить их в autoload_paths в файле application.rb, и они будут автоматически загружены вместе с моделями и контроллерами.

config.autoload_paths << "#{config.root}/lib"
2 голосов
/ 02 июня 2011

In config/application.rb:

config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]

Это перезагрузит все файлы Ruby в вашей папке lib, а также любые файлы Ruby в подкаталогах lib.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...