Rails引擎:仅在重新启动服务器时重新加载助手

Jos*_*eim 12 ruby-on-rails helper rails-engines

我目前正在尝试将功能转移到引擎中.到目前为止它运行良好,但我有点困惑为什么引擎的某些部分总是在发生变化时自动重新加载,而有些部分则没有.

具体来说,在添加辅助方法时,我必须重新启动Rails服务器,否则Rails不会看到它.这是正常的行为吗?这是我的引擎的相关部分:

组件/ iq_list.rb

# encoding: utf-8
require 'iq_list/engine'

# Load IqList Modules
module IqList
  extend ActiveSupport::Autoload
  autoload :Helpers
  autoload :Models
  autoload :Controllers
end
Run Code Online (Sandbox Code Playgroud)

组件/ iq_list/engine.rb

module IqList
  class Engine < ::Rails::Engine
  end
end
Run Code Online (Sandbox Code Playgroud)

组件/ iq_list/helpers.rb

module IqList
  module Helpers
    extend ActiveSupport::Autoload
    autoload :IqListHelper
  end
end
Run Code Online (Sandbox Code Playgroud)

组件/ iq_list /助理/ iq_list_helper.rb

module IqList
  module Helpers
    module IqListHelper
      def some_method
        # ...
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我对引擎还很陌生,上面的很多代码都是从别人的工作中拿走的,所以请耐心等待我.任何暗示正确的方向都受到高度赞赏.

小智 1

看来您可能用引擎找错了树。如果您试图简单地实现关注点分离,您可能只想创建一些普通的旧 ruby​​ 类并将它们放入lib/(当然以有组织的方式)。

引擎将与您的“当前”项目分开开发,很可能通过 gem 引入。AFAIK 中包含的宝石的更改将需要重新启动服务器。