Sha256: 2a75fa71422df42ffaacec2ae67754355961552d0bb7841019a99304ba6415dd

Contents?: true

Size: 1.4 KB

Versions: 11

Compression:

Stored size: 1.4 KB

Contents

# frozen_string_literal: true

require 'aws-sessionstore-dynamodb'
require 'action_dispatch/middleware/session/abstract_store'

module ActionDispatch
  module Session
    # Uses the Dynamo DB Session Store implementation to create a class that
    # extends ActionDispatch::Session. Rails will create a :dynamodb_store
    # configuration for session_store from this class name.
    #
    # This class will use the Rails secret_key_base unless otherwise provided.
    #
    # Configuration can also be provided in YAML files from Rails config, either
    # in "config/session_store.yml" or "config/session_store/#\\{Rails.env}.yml".
    # Configuration files that are environment-specific will take precedence.
    #
    # @see https://docs.aws.amazon.com/sdk-for-ruby/aws-sessionstore-dynamodb/api/Aws/SessionStore/DynamoDB/Configuration.html
    class DynamodbStore < Aws::SessionStore::DynamoDB::RackMiddleware
      include StaleSessionCheck
      include SessionObject

      def initialize(app, options = {})
        options[:config_file] ||= config_file if File.exist?(config_file)
        options[:secret_key] ||= Rails.application.secret_key_base
        super
      end

      private

      def config_file
        file = Rails.root.join("config/dynamo_db_session_store/#{Rails.env}.yml")
        file = Rails.root.join('config/dynamo_db_session_store.yml') unless File.exist?(file)
        file
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
aws-sdk-rails-4.1.0 lib/action_dispatch/session/dynamodb_store.rb
aws-sdk-rails-4.0.3 lib/action_dispatch/session/dynamodb_store.rb
aws-sdk-rails-4.0.2 lib/action_dispatch/session/dynamodb_store.rb
aws-sdk-rails-4.0.1 lib/action_dispatch/session/dynamodb_store.rb
aws-sdk-rails-4.0.0 lib/action_dispatch/session/dynamodb_store.rb
aws-sdk-rails-3.13.0 lib/action_dispatch/session/dynamodb_store.rb
aws-sdk-rails-3.12.0 lib/action_dispatch/session/dynamodb_store.rb
aws-sdk-rails-3.11.0 lib/action_dispatch/session/dynamodb_store.rb
aws-sdk-rails-3.10.0 lib/action_dispatch/session/dynamodb_store.rb
aws-sdk-rails-3.9.1 lib/action_dispatch/session/dynamodb_store.rb
aws-sdk-rails-3.9.0 lib/action_dispatch/session/dynamodb_store.rb