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.
Classes and Modules
Public Class methods
Pass
all options to the sessions block, and use the block to define a request method for whether sessions are allowed.
# 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