如何在Rails 3应用程序中获取所有引擎的列表
根据Rails引擎扩展 Rails 2.x中的function ,可以做到
Rails::Initializer.new(Rails.configuration).plugin_loader.engines
此代码在Rails 3中不起作用
ActionController::RoutingError (undefined method `new' for Rails::Initializer:Module): config/application.rb:12:in `require_or_load'
在Rails 3中我需要做什么才能获得这样的引擎列表?
这是在主应用程序中扩展Rails 3引擎的控制器所需的
截至2011年10月10日和Rails 3.1测试版,它现在
Rails::Application::Railties.engines
这已经改变了Rails 4.1。 已弃用的答案已被弃用,现在获取已安装的Rines应用程序的新方法是:
::Rails::Engine.subclasses.map(&:instance)
这是对github中的提交进行更改的引用 (并且还显示了在初始弃用后如何实现它…)
如果您需要使用Rails 4.1中的先前解决方案:
module Rails class Engine class Railties def self.engines @engines ||= Rails::Engine.subclasses.map(&:instance) end end end end
尝试:
Rails::Application.railties.engines
对于Rails 4,最好的方法是:
Rails.application.railties