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谢谢。我已经添加了我的用例:)