Получить упорядоченный список промежуточного программного обеспечения в общем стоечном приложении? - PullRequest
24 голосов
/ 24 октября 2010

Функциональность, которую я ищу, похожа на команду rake middleware в Rails, за исключением универсального стоечного приложения.

Ответы [ 3 ]

28 голосов
/ 21 декабря 2013
$ 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/

17 голосов
/ 31 июля 2012

Будет возвращен список всех приложений стойки (включая промежуточное ПО):

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)
0 голосов
/ 27 августа 2011

это давно пора, я знаю

вот хорошая тема , окончательный ответ - последний пост

ОБНОВЛЕНО согласно комментарию Марка-Андре:

Это последнее сообщение этой ссылки

В стойке нет механизма для этого, и поскольку не все промежуточное ПО добавляется через @middleware, Синатра не может сказать вам, какое промежуточное ПО используется. Рельсы тоже не могут, кстати, он может просто сказать вам, что это возможно. Промежуточное программное обеспечение не обязательно должно быть линейным списком (т. Е. При использовании Rack-маршрутизатора или чего-либо еще).

...