Module: GlobalSession::Rails
- Defined in:
- lib/global_session/rails/action_controller_instance_methods.rb,
lib/global_session/rails/action_controller_class_methods.rb,
lib/global_session/rails.rb
Overview
Rails integration for GlobalSession.
The configuration file for Rails apps is located in config/global_session.yml
and a generator (global_session_config) is available for creating a sensible default.
There is also a generator (global_session_authority) for creating authority keypairs.
The main integration touchpoint for Rails is the module ActionControllerInstanceMethods, which gets mixed into ActionController::Base. This is where all of the magic happens..
Defined Under Namespace
Modules: ActionControllerClassMethods, ActionControllerInstanceMethods
Class Attribute Summary collapse
-
.configuration ⇒ Object
Single Configuration object used by entire Rails app.
-
.directory ⇒ Object
Single Directory object used by entire Rails app.
-
.keystore ⇒ Object
Single Keystore object used by entire Rails app.
Class Method Summary collapse
Class Attribute Details
.configuration ⇒ Object
Single Configuration object used by entire Rails app
46 47 48 |
# File 'lib/global_session/rails.rb', line 46 def configuration @configuration end |
.directory ⇒ Object
Single Directory object used by entire Rails app
49 50 51 |
# File 'lib/global_session/rails.rb', line 49 def directory @directory end |
.keystore ⇒ Object
Single Keystore object used by entire Rails app
52 53 54 |
# File 'lib/global_session/rails.rb', line 52 def keystore @keystore end |
Class Method Details
.activate(rails_config, &block) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/global_session/rails.rb', line 55 def self.activate(rails_config, &block) config_file = File.join(::Rails.root, 'config', 'global_session.yml') self.configuration = GlobalSession::Configuration.new(config_file, ::Rails.env) dir_name = self.configuration['directory'] || 'GlobalSession::Directory' begin dir_klass = dir_name.constantize rescue NameError => e raise GlobalSession::ConfigurationError, "Unknown/malformed directory class '#{dir_name}' in config file: #{e.}" end unless dir_klass.ancestors.include?(GlobalSession::Directory) raise GlobalSession::ConfigurationError, "Specified directory class '#{dir_name}' does not inherit from GlobalSession::Directory" end if self.configuration['keystore'].blank? || self.configuration['keystore']['public'].blank? # Support legacy behavior (config/authorities dir always contains pub keys) = File.join(::Rails.root, 'config', 'authorities') self.directory = dir_klass.new(self.configuration, ) self.keystore = self.directory.keystore else # Prefer modern behavior (configuration tells us where to find pub keys) self.directory = dir_klass.new(self.configuration) end # Add our middleware to the stack. rails_config.middleware.insert_before(ActionController::Base.session_store, ::Rack::Cookies) rails_config.middleware.insert_before(ActionController::Base.session_store, ::Rack::GlobalSession, self.configuration, self.directory, &block) return true end |