Domanda

La funzionalità che sto cercando è simile al comando rake middleware in Rails, fatta eccezione per un'applicazione cremagliera generica.

È stato utile?

Soluzione

Ciò restituirà un elenco di tutte le applicazioni a cremagliera (tra cui 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)

Altri suggerimenti

$ 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-dentro-actiondispatch-e-rack /

questo è attesa da tempo, so

qui c'è un filo bello , la risposta definitiva è l'ultimo post

AGGIORNAMENTO secondo il commento di Marc-Andre:

Il seguente è l'ultimo post di questo link

Rack non ha un meccanismo per questo e poiché non si aggiunge tutto il middleware via @middleware, Sinatra non può dire che cosa middleware viene utilizzato. Né possono rotaie, btw, si può solo dirvi che cosa è possibile. Middleware non deve essere una lista lineare (vale a dire quando si utilizza un router rack o qualcosa del genere).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top