Module: Roda::RodaPlugins::ConditionalSessions

Defined in:
lib/roda/plugins/conditional_sessions.rb

Overview

The conditional_sessions plugin loads the sessions plugin. However, it only allows sessions if the block passed to the plugin returns truthy. The block is evaluated in request context. This is designed for use in applications that want to use sessions for some requests, and want to be sure that sessions are not used for other requests. For example, if you want to make sure that sessions are not used for requests with paths starting with /static, you could do:

plugin :conditional_sessions, secret: ENV["SECRET"] do
  !path_info.start_with?('/static')
end

The the request session, session_created_at, and session_updated_at methods raise a RodaError exception when sessions are not allowed. The request persist_session and route scope clear_session methods do nothing when sessions are not allowed.

Defined Under Namespace

Modules: InstanceMethods, RequestMethods

Class Method Summary collapse

Class Method Details

.load_dependencies(app, opts = OPTS, &block) ⇒ Object

Pass all options to the sessions block, and use the block to define a request method for whether sessions are allowed.



24
25
26
27
28
29
30
# File 'lib/roda/plugins/conditional_sessions.rb', line 24

def self.load_dependencies(app, opts=OPTS, &block)
  app.plugin :sessions, opts
  app::RodaRequest.class_eval do
    define_method(:use_sessions?, &block)
    alias use_sessions? use_sessions?
  end
end