如何在Rails引擎中自动重新加载更改?

时间:2013-11-24 07:14:11

标签: ruby-on-rails-4 rails-engines

我有一个Rails 4.1.0可安装引擎。在引擎的application_helper.rb中:

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

该方法位于虚拟应用的视图general/index.html.erb视图中:

%<= test123 %>

这很有效。但是,当我更改def test123返回的字符串并刷新浏览器时,不会显示新字符串。

当然,在虚拟应用程序中重新启动Web服务器会显示新字符串。

所以问题是,如何在不重新启动Web服务器的情况下重新加载引擎的文件?

PS。我最好找一种方法来使用Rails本身,或者解决这个问题的特定gem(但不是像Guard,Spork等通用宝石,尽管如果其他所有方法都失败了,我也会考虑这些。)

PPS。在SO上有类似的问题,但我已经尝试了所有这些问题(即使它们适用于Rails 2.x,3.x),但它们并没有为我工作。

2 个答案:

答案 0 :(得分: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
    ...

答案 1 :(得分:0)

你可以使用像zeus这样的东西,这有助于观察项目文件的变化,除非在某些情况下,当你更改配置文件时它不起作用,需要手动重新启动。

但总体上在大多数情况下,这比真棒

更有效