根据Rails 2.x中的Rails engines extending functionality,可以做到
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中我需要做些什么才能获得这样的引擎列表?
需要这样做答案 0 :(得分:15)
这已经改变了Rails 4.1。已接受的答案已弃用,现在获取已安装的Rines应用程序引擎的新方法是:
::Rails::Engine.subclasses.map(&:instance)
Here's a reference to the commit in github进行更改(并显示在初始弃用后如何实施...)
如果您需要使用Rails 4.1中的先前解决方案:
module Rails
class Engine
class Railties
def self.engines
@engines ||= Rails::Engine.subclasses.map(&:instance)
end
end
end
end
答案 1 :(得分:13)
截至2011年5月10日和Rails 3.1 beta,现在是
Rails::Application::Railties.engines
答案 2 :(得分:2)
尝试:
Rails::Application.railties.engines
答案 3 :(得分:0)
对于Rails 4,最好的方法是:
Rails.application.railties