Question

La fonctionnalité que je cherche est similaire à la commande rake middleware dans Rails, sauf pour une application de support générique.

Était-ce utile?

La solution

Ceci renvoie une liste de toutes les applications en rack (y compris 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)

Autres conseils

$ 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-et-crémaillère /

est attendue depuis longtemps, je sais

voici un joli fil , la réponse définitive est le dernier message

MISE À JOUR selon le commentaire de Marc-André:

Voici le dernier message de ce lien

rack ne dispose pas d'un mécanisme pour cela et puisque tous middleware est ajouté par @middleware, Sinatra ne peut pas vous dire ce que le middleware est utilisé. Ni peuvent rails, btw, il peut simplement vous dire ce qui est possible. Middleware ne doit pas être une liste linéaire (à savoir l'utilisation d'un routeur de rack ou quelque chose).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top