急切地在开发中加载目录

时间:2015-11-01 02:17:46

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

根据http://blog.arkency.com/2014/11/dont-forget-about-eager-load-when-extending-autoload/我知道我可以使用config.paths.add "extras", eager_load: true急切地在生产中加载目录。

但是对于[rails_root]/app/decorators目录,即使在开发环境中,我也要求其下的所有文件都是急切加载的。

是否有Rails方法可以做到这一点?我还需要在宝石中做到这一点。

要详细说明,我的问题是我的gem提供了一个BaseDecorator类:

class BaseDecorator
  ### Extend corresponding model
  def self.inherited(subclass)
    subclass.model_class.class_eval do
      define_method(:decorator) do
        @_decorator ||= subclass.new(self)
      end
    end
  end

  def self.model_class
    self.name.sub('Decorator','').constantize
  end
end

用户将继承此类(例如TopicDecorator)。完成后,我会自动创建一个decorator()Topic模型,该模型将链接到新的TopicDecorator实例。

但是,这意味着必须加载TopicDecorator,否则模型将无法使用decorator()方法。

我的意图是模型不应该知道它的装饰器存在。装饰者将完成扩展模型的工作。

我只是觉得这个实现应该很简单,需要的计算量更少。然而,有可能解决这个问题。

0 个答案:

没有答案