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
-
.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.
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 |