Вы не можете использовать метод Sinatra session
в промежуточном программном обеспечении Rack, но вы можете получить доступ к сеансу напрямую через хеш env
.
Убедитесь, что промежуточное программное обеспечение сеанса находится перед промежуточным программным обеспечением (поэтому в Sinatra enable :sessions
должно быть до use MyMiddleware
), тогда сеанс доступен через ключ 'rack.session'
:
class MyMiddleware
def initialize(app, options={})
@app = app
end
def call(env)
puts env['rack.session'].inspect
@app.call(env)
end
end
Вы можете предпочесть использовать объект Rack::Request
, чтобы упростить доступ к сеансу и другим частям хеша env
:
def call(env)
request = Rack::Request.new(env)
puts request.session.inspect
# other uses of request without needing to know what keys of env you need
@app.call(env)
end