Frage

Die Funktionalität ich suche ist ähnlich den rake middleware Befehl in Rails, mit Ausnahme von einer allgemeinen Rack-Anwendung.

War es hilfreich?

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).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top