功能我找的是类似于 rake middleware 命令在轨道,除了一架通用应用程序。

有帮助吗?

解决方案

这将返回的所有齿条应用(包括中间件)的列表:

require 'rack'

def middleware_classes(app)                                                                                                                                              
  r = [app]

  while ((next_app = r.last.instance_variable_get(:@app)) != nil)
    r << next_app
  end

  r.map{|e| e.instance_variable_defined?(:@app) ? e.class : e }
end

app = Rack::Builder.parse_file('config.ru').first

p middleware_classes(app)

其他提示

$ rake middleware

use ActionDispatch::Static
use Rack::Lock
use #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x007ffd148f9468>
use Rack::Runtime
use Rack::MethodOverride
use ActionDispatch::RequestId
use Rails::Rack::Logger
use ActionDispatch::ShowExceptions
use ActionDispatch::DebugExceptions
use ActionDispatch::RemoteIp
use ActionDispatch::Reloader
use ActionDispatch::Callbacks
use ActiveRecord::Migration::CheckPending
use ActiveRecord::ConnectionAdapters::ConnectionManagement
use ActiveRecord::QueryCache
use ActionDispatch::Cookies
use ActionDispatch::Session::CookieStore
use ActionDispatch::Flash
use ActionDispatch::ParamsParser
use Rack::Head
use Rack::ConditionalGet
use Rack::ETag
run RackTest::Application.routes

http://pothibo.com/一十一分之二千〇十三/红宝石上导轨-内部-actiondispatch和 - 齿条/

这是姗姗来迟,我知道

这是一个很好的线, ,明确的答案是最后一个职位

更新了为每马克-安德烈*的评论:

以下是最后一个员额从这个 链接

架没有一个机制,和由于不是所有的中间加入通过@中间,西纳特拉不能告诉你什么中间件是使用。也不能轨,顺便说一句,它可以只告诉你什么是可能的。中间件并没有成为一个线性列表(即当使用一架路由器或某事)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top