0
@@ -58,6 +58,7 @@ module Merb
0
# Runs all boot loader classes by calling their run methods.
0
subklasses = subclasses.dup
0
until subclasses.empty?
0
@@ -261,7 +262,6 @@ class Merb::BootLoader::Dependencies < Merb::BootLoader
0
enable_json_gem unless Merb::disabled?(:json)
0
- update_session_cookie_attributes
0
def self.load_dependencies
0
@@ -279,11 +279,6 @@ class Merb::BootLoader::Dependencies < Merb::BootLoader
0
Merb::BootLoader::Logger.run if updated_logger_options != Merb.logger.init_args
0
- def self.update_session_cookie_attributes
0
- Merb::Controller._session_expiry = Merb::Config[:session_expiry] || Merb::Const::WEEK * 2
0
- Merb::Controller._session_cookie_domain = Merb::Config[:session_cookie_domain]
0
# Determines the path for the environment configuration file
0
@@ -318,6 +313,23 @@ class Merb::BootLoader::Dependencies < Merb::BootLoader
0
+class Merb::BootLoader::MixinSession < Merb::BootLoader
0
+ # Mixin the session functionality; this is done before BeforeAppLoads
0
+ # so that SessionContainer and SessionStoreContainer can be subclassed by
0
+ # plugin session stores for example - these need to be loaded in a
0
+ # before_app_loads block or a BootLoader that runs after MixinSession.
0
+ # Note: access to Merb::Config is needed, so it needs to run after
0
+ # Merb::BootLoader::Dependencies is done.
0
+ require 'merb-core/dispatch/session'
0
+ Merb::Controller.send(:include, ::Merb::SessionMixin)
0
+ Merb::Request.send(:include, ::Merb::SessionMixin::RequestMixin)
0
class Merb::BootLoader::BeforeAppLoads < Merb::BootLoader
0
# Call any before_app_loads hooks that were registered via before_app_loads
0
@@ -548,6 +560,48 @@ class Merb::BootLoader::MimeTypes < Merb::BootLoader
0
+class Merb::BootLoader::Cookies < Merb::BootLoader
0
+ require 'merb-core/dispatch/cookies'
0
+ Merb::Controller.send(:include, Merb::CookiesMixin)
0
+ Merb::Request.send(:include, Merb::CookiesMixin::RequestMixin)
0
+class Merb::BootLoader::SetupSession < Merb::BootLoader
0
+ # Enable the configured session container(s); any class that inherits from
0
+ # SessionContainer will be considered by its session_store_type attribute.
0
+ # Require all standard session containers.
0
+ Dir[Merb.framework_root / "merb-core" / "dispatch" / "session" / "*.rb"].each do |file|
0
+ base_name = File.basename(file, ".rb")
0
+ require file unless base_name == "container" || base_name == "store_container"
0
+ Merb::Config[:session_id_key] ||= "_session_id"
0
+ # List of all session_stores from :session_stores and :session_store config options.
0
+ config_stores = Merb::Config.session_stores
0
+ # Register all configured session stores - any loaded session container class
0
+ # (subclassed from Merb::SessionContainer) will be available for registration.
0
+ Merb::SessionContainer.subclasses.each do |class_name|
0
+ if(store = Object.full_const_get(class_name)) &&
0
+ config_stores.include?(store.session_store_type)
0
+ Merb::Request.register_session_type(store.session_store_type, class_name)
0
+ # Mixin the Merb::Session module to add app-level functionality to sessions
0
+ Merb::SessionContainer.send(:include, Merb::Session)
0
class Merb::BootLoader::AfterAppLoads < Merb::BootLoader
0
# Call any after_app_loads hooks that were registered via after_app_loads in
0
@@ -573,66 +627,6 @@ class Merb::BootLoader::SetupStubClasses < Merb::BootLoader
0
-class Merb::BootLoader::MixinSessionContainer < Merb::BootLoader
0
- # Mixin the correct session container.
0
- Merb.register_session_type('memory',
0
- Merb.framework_root / "merb-core" / "dispatch" / "session" / "memory",
0
- "Using in-memory sessions; sessions will be lost whenever the server stops.")
0
- Merb.register_session_type('memcache',
0
- Merb.framework_root / "merb-core" / "dispatch" / "session" / "memcached",
0
- "Using 'memcached' sessions")
0
- Merb.register_session_type('cookie', # Last session type becomes the default
0
- Merb.framework_root / "merb-core" / "dispatch" / "session" / "cookie",
0
- "Using 'share-nothing' cookie sessions (4kb limit per client)")
0
- Merb::Controller.class_eval do
0
- session_store = Merb::Config[:session_store].to_s
0
- if ["", "false", "none"].include?(session_store)
0
- Merb.logger.warn "Not Using Sessions"
0
- elsif reg = Merb.registered_session_types[session_store]
0
- Merb::BootLoader::MixinSessionContainer.check_for_secret_key if session_store == "cookie"
0
- Merb::BootLoader::MixinSessionContainer.check_for_session_id_key
0
- include ::Merb::SessionMixin
0
- Merb.logger.warn reg[:description]
0
- Merb.logger.warn "Session store not found, '#{Merb::Config[:session_store]}'."
0
- Merb.logger.warn "Defaulting to CookieStore Sessions"
0
- Merb::BootLoader::MixinSessionContainer.check_for_secret_key
0
- Merb::BootLoader::MixinSessionContainer.check_for_session_id_key
0
- require Merb.registered_session_types['cookie'][:file]
0
- include ::Merb::SessionMixin
0
- Merb.logger.warn "(plugin not installed?)"
0
- # Sets the controller session ID key if it has been set in config.
0
- def self.check_for_session_id_key
0
- if Merb::Config[:session_id_key]
0
- Merb::Controller._session_id_key = Merb::Config[:session_id_key]
0
- # Attempts to set the session secret key. This method will exit if the key
0
- # does not exist or is shorter than 16 charaters.
0
- def self.check_for_secret_key
0
- unless Merb::Config[:session_secret_key] && (Merb::Config[:session_secret_key].length >= 16)
0
- Merb.logger.warn("You must specify a session_secret_key in your init file, and it must be at least 16 characters\nbailing out...")
0
- Merb::Controller._session_secret_key = Merb::Config[:session_secret_key]
0
class Merb::BootLoader::ChooseAdapter < Merb::BootLoader
0
# Choose the Rack adapter/server to use and set Merb.adapter.