Lassen Sie sich die Liste der Middleware in einer allgemeinen Rack Anwendung bestellt?
-
25-09-2019 - |
Frage
Die Funktionalität ich suche ist ähnlich den rake middleware
Befehl in Rails, mit Ausnahme von einer allgemeinen Rack-Anwendung.
Lösung
Dies wird eine Liste von allen den Rack-Anwendungen (einschließlich 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)
Andere Tipps
$ 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/ 2013/11 / ruby-on-rails-inside-actiondispatch-and-Rack /
Das ist längst überfällig, ich weiß
hier ist ein schöner Thread , die endgültige Antwort ist der letzte Beitrag
AKTUALISIERT per Marc-Andre Kommentar:
Im Folgenden ist der letzte Beitrag von diesem link
Rack hat keinen Mechanismus dafür, und da nicht alle Middleware über @middleware hinzugefügt wird, Sinatra kann Ihnen nicht sagen, was Middleware verwendet wird. Ebenso wenig können Schienen, btw, es kann nur sagen, was möglich ist. Middleware keine lineare Liste sein (das heißt, wenn ein Rack-Router oder etwas verwenden).