module Roda::RodaPlugins::ConditionalSessions

  1. lib/roda/plugins/conditional_sessions.rb

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.

Methods

Public Class

  1. load_dependencies

Public Class methods

load_dependencies(app, opts=OPTS, &block)

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

[show source]
   # File lib/roda/plugins/conditional_sessions.rb
24 def self.load_dependencies(app, opts=OPTS, &block)
25   app.plugin :sessions, opts
26   app::RodaRequest.class_eval do
27     define_method(:use_sessions?, &block)
28     alias use_sessions? use_sessions?
29   end
30 end