Как автоматически перезагружать изменения в Rails Engine?

У меня есть монтируемый движок Rails 4.1.0. В файле application_helper.rb движка:

module MyEngine
  module ApplicationHelper    
    def test123
      "test123"
    end    
  end
end

Метод находится в представлении general/index.html.erb представления фиктивного приложения:

%<= test123 %>

Это работает. Однако, когда я изменяю строку, возвращаемую def test123, и обновляю браузер, новая строка не отображается.

Конечно, при перезапуске веб-сервера в фиктивном приложении отображается новая строка.

Возникает вопрос, как перезагрузить файлы движка без перезапуска веб-сервера?

PS. Я предпочтительно ищу способ сделать это, используя сам Rails или конкретный гем, который решает эту проблему (но не общие драгоценные камни, такие как Guard, Spork и т. Д., Хотя, если все остальное не поможет, я рассмотрю и их).

PPS. Есть похожие вопросы по SO, но я перепробовал их все (даже если они для Rails 2.x, 3.x), и они не помогли мне.


person Zabba    schedule 24.11.2013    source источник


Ответы (2)


Вы должны явно требовать зависимых помощников:

# engines/my_engine/app/controllers/my_engine/application_controller.rb

require_dependency "my_engine/application_helper"  # This is a key point!

module MyEngine
  class ApplicationController < ::ApplicationController
    helper ApplicationHelper
    ...
person 907th    schedule 29.10.2014

вы можете использовать что-то вроде zeus, который очень помогает при просмотре файлов проекта на предмет изменений, за исключением некоторых случаев, когда вы меняете файлы конфигурации, он не работает, и его необходимо перезапустить вручную.

но в целом в большинстве случаев это работает более чем здорово

person a14m    schedule 12.12.2013