2

I use middleware class in Rack, Ruby on Rails and Sinatra applications.

Rack application

config.ru:

use Rack::Session::Cookie, key: '_dummy_session', secret: '...'
use MyMiddleware
run Dummy.new

Ruby on Rails application

config/initializers/secret_token.rb:

Dummy::Application.config.secret_key_base = '...'

config/initializers/session_store.rb:

Dummy::Application.config.session_store :cookie_store, key: '_dummy_session'

config/initializers/my_middleware.rb:

Dummy::Application.config.middleware.use 'MyMiddleware'

Middleware class

lib/my_middleware.rb:

class MyMiddleware
  def initialize(app)
    @app = app
  end

  def call(env)
    ...
    @app.call(env)
  end
end

How can I get the name of session cookie ('_dummy_session') in MyMiddleware#call method?

  • The name? Do you mean the string used for the key, `'_dummy_session'`? – ian Aug 05 '13 at 21:12
  • Yes, '_dummy_session'. –  Aug 05 '13 at 23:50
  • If you look at `env` after `@app.call(env)` is called you'll see the session inside it. Take a look in the env for `"HTTP_COOKIE"`, `"rack.request.cookie_hash"`, and inside of that last one `"rack.request.cookie_string"`. – ian Aug 06 '13 at 12:29
  • See http://stackoverflow.com/questions/9113162/accessing-session-in-sinatra-middleware – bryanbraun May 13 '14 at 14:19

0 Answers0