La funzionalità che sto cercando è simile al comando rake middleware
in Rails, ad eccezione di un'applicazione rack generica.Ottenere l'elenco ordinato di middleware in un'applicazione rack generica?
risposta
Questo restituirà un elenco di tutte le applicazioni a cremagliera (compresi 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)
questo è attesa da tempo, lo so
here's a nice thread, la risposta definitiva è l'ultimo post
AGGIORNATO secondo il commento di Marc-Andre:
Il seguente è l'ultimo post di questo link
Rack non ha un meccanismo per questo e dal momento che non tutti i middleware sono aggiunti tramite @middleware, Sinatra non può dirti quale middleware è usato. Nessuno dei due può rotaie, btw, può solo dirti cosa è possibile. Il middleware non deve essere un elenco lineare (ad esempio quando si utilizza un router Rack o qualcosa del genere).
-1. L'intero punto di SO non è quello di dover passare attraverso la lista dei messaggi. Copia e migliora la risposta giusta e aggiungi quel link come fonte. –
> 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/
Dalla descrizione, è chiaro che sa di 'rake middleware'. Vuole questo per un'app non Rails. –
- 1. Traccia stack "trapping" middleware rack
- 2. middleware rack e sicurezza thread
- 3. middleware Trigger Rack su percorsi Rails specifici
- 4. Algoritmi di parametri Alter Rails dal middleware rack
- 5. È possibile accedere al logger Rails da un middleware rack?
- 6. Come si utilizza un middleware Rack solo per determinati percorsi?
- 7. Qual è la variabile "env" nel middleware Rack?
- 8. Come ottenere l'attuale ambiente Rack in Rake?
- 9. Strutturazione di servizi in un modello middleware come in rack e wsgi
- 10. Hello World rack middleware con rails 3: come elaborare il corpo di tutte le richieste
- 11. come ottenere indice di elementi array ordinato
- 12. Come ottenere l'indice ordinato di un vettore?
- 13. Rack rack. La variabile di input viene troncata?
- 14. Come utilizzare il middleware da un motore in un motore
- 15. stream in rack
- 16. Test del middleware con Rspec
- 17. Come si esegue il proxy delle richieste AJAX con Rack Middleware?
- 18. "No such middleware per inserire prima: Rack :: Lock (RuntimeError)" dopo l'aggiornamento a Rails 4
- 19. Come ottenere DIFF sul set ordinato
- 20. C# Elenco ordinato: come ottenere l'elemento successivo?
- 21. Utilizzo di `Rack :: Session :: Pool` su` Rack :: Session :: Cookie`
- 22. funzione generica per ottenere dimensioni di qualsiasi struttura in golang
- 23. Ordinato dizionario ordinato sul valore in C# (cache LRU)
- 24. Usa Rack :: CommonLogger in Sinatra
- 25. Come servire file statici tramite Rack?
- 26. - Domini dinamici dei cookie con Rack
- 27. Ottenere l'elenco ordinato degli attributi di un modulo Python
- 28. Logit ordinato in Python?
- 29. Hash ordinato in JavaScript
- 30. Lancio rack EOFError (corpo con contenuto errato)
+1 ha funzionato come un incantesimo. Ho inserito tutto questo in uno script 'test-rack.rb' e l'ho eseguito tramite' ruby test-rack.rb'. (la domanda modificata per aggiungere il rack mancante richiede;) –