Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在开发中加载目录_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 在开发中加载目录

Ruby on rails 在开发中加载目录,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,据我所知,我可以使用config.path.add“extras”,eager\u load:true在生产环境中急切加载目录 然而,对于[rails\u root]/app/decorators目录,即使在开发环境中,我也需要立即加载它下面的所有文件 有没有办法做到这一点?我也需要在宝石中这样做 更详细地说,我的问题是我的gem提供了一个BaseDecorator类: class BaseDecorator ### Extend corresponding model def sel

据我所知,我可以使用
config.path.add“extras”,eager\u load:true
在生产环境中急切加载目录

然而,对于
[rails\u root]/app/decorators
目录,即使在开发环境中,我也需要立即加载它下面的所有文件

有没有办法做到这一点?我也需要在宝石中这样做


更详细地说,我的问题是我的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()
方法

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


我只是觉得这个实现应该很简单,并且需要更少的计算。不过,可能有办法解决这个问题。

嗨,这里提到的博客文章的作者。为什么您需要在gem中加载应用程序中的文件?这是一个有趣的问题,但表明解决方案中可能存在不匹配。通常,是你的应用程序将gems用作库。为什么您的gem需要从应用程序加载代码?还有其他问题,将这些装饰器作为依赖项传递给gem,而不是直接从gem加载,不是更好吗?@RobertPankowecki谢谢。我已经添加了我的用例:)嗨,这里提到的博客文章的作者。为什么您需要在gem中加载应用程序中的文件?这是一个有趣的问题,但表明解决方案中可能存在不匹配。通常,是你的应用程序将gems用作库。为什么您的gem需要从应用程序加载代码?还有其他问题,将这些装饰器作为依赖项传递给gem,而不是直接从gem加载,不是更好吗?@RobertPankowecki谢谢。我已经添加了我的用例:)