aws-sdk-rails 2.0.0 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
 - data/lib/action_dispatch/session/dynamodb_store.rb +32 -0
 - data/lib/aws-sdk-rails.rb +5 -35
 - data/lib/aws/rails/mailer.rb +10 -10
 - data/lib/aws/rails/notifications.rb +33 -0
 - data/lib/aws/rails/railtie.rb +67 -0
 - data/lib/generators/dynamo_db/session_store_migration/USAGE +13 -0
 - data/lib/generators/dynamo_db/session_store_migration/session_store_migration_generator.rb +46 -0
 - data/lib/generators/dynamo_db/session_store_migration/templates/dynamo_db_session_store.yml +70 -0
 - data/lib/generators/dynamo_db/session_store_migration/templates/session_store_migration.rb +9 -0
 - data/lib/tasks/dynamo_db/session_store.rake +8 -0
 - metadata +49 -13
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 2 
     | 
    
         
            +
            SHA256:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: b16c1ca75c59341fdc3696d91648fda6901937f31b5b4c55b5d1ccf3bcc9af47
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 9c9c22d4740ea76b06fa7ee6b8d525450fc982e3c73db0fe81234356dbd71a86
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 2ef9e3bf5bde8d91b25635e2bed4028a163547f6e8eabb3ece2e08d1482e6edce16386a916240f344dcce27bc8efec3c5c424236fed6f150e4a6912165648914
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 0052b3633ce5fc655f4b6fdd80851049196e1c7c7a7d6cc92e17d52fc6fcc8ae69712bc411d3f0feb369dfd835e23912c67802ff32abe3654cf3b4feee87c02a
         
     | 
| 
         @@ -0,0 +1,32 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'aws-sessionstore-dynamodb'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module ActionDispatch
         
     | 
| 
      
 4 
     | 
    
         
            +
              module Session
         
     | 
| 
      
 5 
     | 
    
         
            +
                # Uses the Dynamo DB Session Store implementation to create a class that
         
     | 
| 
      
 6 
     | 
    
         
            +
                # extends ActionDispatch::Session. Rails will create a :dynamodb_store
         
     | 
| 
      
 7 
     | 
    
         
            +
                # configuration for session_store from this class name.
         
     | 
| 
      
 8 
     | 
    
         
            +
                #
         
     | 
| 
      
 9 
     | 
    
         
            +
                # This class will use the Rails secret_key_base unless otherwise provided.
         
     | 
| 
      
 10 
     | 
    
         
            +
                #
         
     | 
| 
      
 11 
     | 
    
         
            +
                # Configuration can also be provided in YAML files from Rails config, either
         
     | 
| 
      
 12 
     | 
    
         
            +
                # in "config/session_store.yml" or "config/session_store/#{Rails.env}.yml".
         
     | 
| 
      
 13 
     | 
    
         
            +
                # Configuration files that are environment-specific will take precedence.
         
     | 
| 
      
 14 
     | 
    
         
            +
                #
         
     | 
| 
      
 15 
     | 
    
         
            +
                # @see https://docs.aws.amazon.com/sdk-for-ruby/aws-sessionstore-dynamodb/api/Aws/SessionStore/DynamoDB/Configuration.html
         
     | 
| 
      
 16 
     | 
    
         
            +
                class DynamodbStore < Aws::SessionStore::DynamoDB::RackMiddleware
         
     | 
| 
      
 17 
     | 
    
         
            +
                  def initialize(app, options = {})
         
     | 
| 
      
 18 
     | 
    
         
            +
                    options[:config_file] ||= config_file if config_file.exist?
         
     | 
| 
      
 19 
     | 
    
         
            +
                    options[:secret_key] ||= Rails.application.secret_key_base
         
     | 
| 
      
 20 
     | 
    
         
            +
                    super
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                  private
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                  def config_file
         
     | 
| 
      
 26 
     | 
    
         
            +
                    file = Rails.root.join("config/dynamo_db_session_store/#{Rails.env}.yml")
         
     | 
| 
      
 27 
     | 
    
         
            +
                    file = Rails.root.join('config/dynamo_db_session_store.yml') unless file.exist?
         
     | 
| 
      
 28 
     | 
    
         
            +
                    file
         
     | 
| 
      
 29 
     | 
    
         
            +
                  end
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
              end
         
     | 
| 
      
 32 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/aws-sdk-rails.rb
    CHANGED
    
    | 
         @@ -1,37 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module Aws
         
     | 
| 
       4 
     | 
    
         
            -
              module Rails
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
                # @api private
         
     | 
| 
       7 
     | 
    
         
            -
                class Railtie < ::Rails::Railtie
         
     | 
| 
       8 
     | 
    
         
            -
                  initializer "aws-sdk-rails.initialize" do |app|
         
     | 
| 
       9 
     | 
    
         
            -
                    # Initialization Actions
         
     | 
| 
       10 
     | 
    
         
            -
                    Aws::Rails.add_action_mailer_delivery_method
         
     | 
| 
       11 
     | 
    
         
            -
                    Aws::Rails.log_to_rails_logger
         
     | 
| 
       12 
     | 
    
         
            -
                  end
         
     | 
| 
       13 
     | 
    
         
            -
                end
         
     | 
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
       14 
2 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                #
         
     | 
| 
       19 
     | 
    
         
            -
                # @param [Symbol] name The name of the ActionMailer delivery method to
         
     | 
| 
       20 
     | 
    
         
            -
                #   register.
         
     | 
| 
       21 
     | 
    
         
            -
                # @param [Hash] options The options you wish to pass on to the
         
     | 
| 
       22 
     | 
    
         
            -
                #   Aws::SES::Client initialization method.
         
     | 
| 
       23 
     | 
    
         
            -
                def self.add_action_mailer_delivery_method(name = :aws_sdk, options = {})
         
     | 
| 
       24 
     | 
    
         
            -
                  ActiveSupport.on_load(:action_mailer) do
         
     | 
| 
       25 
     | 
    
         
            -
                    self.add_delivery_method(name, Aws::Rails::Mailer, options)
         
     | 
| 
       26 
     | 
    
         
            -
                  end
         
     | 
| 
       27 
     | 
    
         
            -
                end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                # Configures the AWS SDK for Ruby's logger to use the Rails logger.
         
     | 
| 
       30 
     | 
    
         
            -
                def self.log_to_rails_logger
         
     | 
| 
       31 
     | 
    
         
            -
                  Aws.config[:logger] = ::Rails.logger
         
     | 
| 
       32 
     | 
    
         
            -
                  nil
         
     | 
| 
       33 
     | 
    
         
            -
                end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
              end
         
     | 
| 
       36 
     | 
    
         
            -
            end
         
     | 
| 
      
 3 
     | 
    
         
            +
            require_relative 'aws/rails/mailer'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require_relative 'aws/rails/railtie'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require_relative 'aws/rails/notifications'
         
     | 
| 
       37 
6 
     | 
    
         | 
| 
      
 7 
     | 
    
         
            +
            require_relative 'action_dispatch/session/dynamodb_store'
         
     | 
    
        data/lib/aws/rails/mailer.rb
    CHANGED
    
    | 
         @@ -1,23 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            require 'aws-sdk-ses'
         
     | 
| 
       2 
4 
     | 
    
         | 
| 
       3 
5 
     | 
    
         
             
            module Aws
         
     | 
| 
       4 
6 
     | 
    
         
             
              module Rails
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
7 
     | 
    
         
             
                # Provides a delivery method for ActionMailer that uses Amazon Simple Email
         
     | 
| 
       7 
8 
     | 
    
         
             
                # Service.
         
     | 
| 
       8 
     | 
    
         
            -
                # 
     | 
| 
      
 9 
     | 
    
         
            +
                #
         
     | 
| 
       9 
10 
     | 
    
         
             
                # Once you have an SES delivery method you can configure Rails to
         
     | 
| 
       10 
11 
     | 
    
         
             
                # use this for ActionMailer in your environment configuration
         
     | 
| 
       11 
12 
     | 
    
         
             
                # (e.g. RAILS_ROOT/config/environments/production.rb)
         
     | 
| 
       12 
13 
     | 
    
         
             
                #
         
     | 
| 
       13 
     | 
    
         
            -
                #     config.action_mailer.delivery_method = : 
     | 
| 
      
 14 
     | 
    
         
            +
                #     config.action_mailer.delivery_method = :ses
         
     | 
| 
       14 
15 
     | 
    
         
             
                #
         
     | 
| 
       15 
     | 
    
         
            -
                # Uses the AWS SDK for Ruby 
     | 
| 
       16 
     | 
    
         
            -
                #  
     | 
| 
      
 16 
     | 
    
         
            +
                # Uses the AWS SDK for Ruby's credential provider chain when creating an SES
         
     | 
| 
      
 17 
     | 
    
         
            +
                # client instance.
         
     | 
| 
       17 
18 
     | 
    
         
             
                class Mailer
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
19 
     | 
    
         
             
                  # @param [Hash] options Passes along initialization options to
         
     | 
| 
       20 
     | 
    
         
            -
                  #   [Aws::SES::Client.new]( 
     | 
| 
      
 20 
     | 
    
         
            +
                  #   [Aws::SES::Client.new](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/SES/Client.html#initialize-instance_method).
         
     | 
| 
       21 
21 
     | 
    
         
             
                  def initialize(options = {})
         
     | 
| 
       22 
22 
     | 
    
         
             
                    @client = SES::Client.new(options)
         
     | 
| 
       23 
23 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -33,15 +33,15 @@ module Aws 
     | 
|
| 
       33 
33 
     | 
    
         
             
                      send_opts[:destinations] = message.destinations
         
     | 
| 
       34 
34 
     | 
    
         
             
                    end
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
     | 
    
         
            -
                    @client.send_raw_email(send_opts)
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
      
 36 
     | 
    
         
            +
                    @client.send_raw_email(send_opts).tap do |response|
         
     | 
| 
      
 37 
     | 
    
         
            +
                      message.header[:ses_message_id] = response.message_id
         
     | 
| 
      
 38 
     | 
    
         
            +
                    end
         
     | 
| 
       38 
39 
     | 
    
         
             
                  end
         
     | 
| 
       39 
40 
     | 
    
         | 
| 
       40 
41 
     | 
    
         
             
                  # ActionMailer expects this method to be present and to return a hash.
         
     | 
| 
       41 
42 
     | 
    
         
             
                  def settings
         
     | 
| 
       42 
43 
     | 
    
         
             
                    {}
         
     | 
| 
       43 
44 
     | 
    
         
             
                  end
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
45 
     | 
    
         
             
                end
         
     | 
| 
       46 
46 
     | 
    
         
             
              end
         
     | 
| 
       47 
47 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,33 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require 'aws-sdk-core'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'active_support/notifications'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            module Aws
         
     | 
| 
      
 7 
     | 
    
         
            +
              module Rails
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                # Instruments client operation calls for ActiveSupport::Notifications
         
     | 
| 
      
 10 
     | 
    
         
            +
                # Each client operation will produce an event with name:
         
     | 
| 
      
 11 
     | 
    
         
            +
                # <operation>.<service>.aws
         
     | 
| 
      
 12 
     | 
    
         
            +
                # @api private
         
     | 
| 
      
 13 
     | 
    
         
            +
                class Notifications < Seahorse::Client::Plugin
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                  def add_handlers(handlers, config)
         
     | 
| 
      
 16 
     | 
    
         
            +
                    # This plugin needs to be first
         
     | 
| 
      
 17 
     | 
    
         
            +
                    # which means it is called first in the stack, to start recording time,
         
     | 
| 
      
 18 
     | 
    
         
            +
                    # and returns last
         
     | 
| 
      
 19 
     | 
    
         
            +
                    handlers.add(Handler, step: :initialize, priority: 99)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                  class Handler < Seahorse::Client::Handler
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                    def call(context)
         
     | 
| 
      
 25 
     | 
    
         
            +
                      event_name = "#{context.operation_name}.#{context.config.api.metadata['serviceId']}.aws"
         
     | 
| 
      
 26 
     | 
    
         
            +
                      ActiveSupport::Notifications.instrument(event_name, context: context) do
         
     | 
| 
      
 27 
     | 
    
         
            +
                        @handler.call(context)
         
     | 
| 
      
 28 
     | 
    
         
            +
                      end
         
     | 
| 
      
 29 
     | 
    
         
            +
                    end
         
     | 
| 
      
 30 
     | 
    
         
            +
                  end
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,67 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Aws
         
     | 
| 
      
 4 
     | 
    
         
            +
              # Use the Rails namespace.
         
     | 
| 
      
 5 
     | 
    
         
            +
              module Rails
         
     | 
| 
      
 6 
     | 
    
         
            +
                # @api private
         
     | 
| 
      
 7 
     | 
    
         
            +
                class Railtie < ::Rails::Railtie
         
     | 
| 
      
 8 
     | 
    
         
            +
                  initializer 'aws-sdk-rails.initialize',
         
     | 
| 
      
 9 
     | 
    
         
            +
                              before: :load_config_initializers do
         
     | 
| 
      
 10 
     | 
    
         
            +
                    # Initialization Actions
         
     | 
| 
      
 11 
     | 
    
         
            +
                    Aws::Rails.use_rails_encrypted_credentials
         
     | 
| 
      
 12 
     | 
    
         
            +
                    Aws::Rails.add_action_mailer_delivery_method
         
     | 
| 
      
 13 
     | 
    
         
            +
                    Aws::Rails.log_to_rails_logger
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  rake_tasks do
         
     | 
| 
      
 17 
     | 
    
         
            +
                    load 'tasks/dynamo_db/session_store.rake'
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                # This is called automatically from the SDK's Railtie, but can be manually
         
     | 
| 
      
 22 
     | 
    
         
            +
                # called if you want to specify options for building the Aws::SES::Client.
         
     | 
| 
      
 23 
     | 
    
         
            +
                #
         
     | 
| 
      
 24 
     | 
    
         
            +
                # @param [Symbol] name The name of the ActionMailer delivery method to
         
     | 
| 
      
 25 
     | 
    
         
            +
                #   register.
         
     | 
| 
      
 26 
     | 
    
         
            +
                # @param [Hash] options The options you wish to pass on to the
         
     | 
| 
      
 27 
     | 
    
         
            +
                #   Aws::SES::Client initialization method.
         
     | 
| 
      
 28 
     | 
    
         
            +
                def self.add_action_mailer_delivery_method(name = :ses, options = {})
         
     | 
| 
      
 29 
     | 
    
         
            +
                  ActiveSupport.on_load(:action_mailer) do
         
     | 
| 
      
 30 
     | 
    
         
            +
                    add_delivery_method(name, Aws::Rails::Mailer, options)
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                # Configures the AWS SDK for Ruby's logger to use the Rails logger.
         
     | 
| 
      
 35 
     | 
    
         
            +
                def self.log_to_rails_logger
         
     | 
| 
      
 36 
     | 
    
         
            +
                  Aws.config[:logger] = ::Rails.logger
         
     | 
| 
      
 37 
     | 
    
         
            +
                  nil
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                # Configures the AWS SDK with credentials from Rails encrypted credentials.
         
     | 
| 
      
 41 
     | 
    
         
            +
                def self.use_rails_encrypted_credentials
         
     | 
| 
      
 42 
     | 
    
         
            +
                  # limit the config keys we merge to credentials only
         
     | 
| 
      
 43 
     | 
    
         
            +
                  aws_credential_keys = %i[access_key_id secret_access_key session_token]
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                  Aws.config.merge!(
         
     | 
| 
      
 46 
     | 
    
         
            +
                    ::Rails.application
         
     | 
| 
      
 47 
     | 
    
         
            +
                      .try(:credentials)
         
     | 
| 
      
 48 
     | 
    
         
            +
                      .try(:aws)
         
     | 
| 
      
 49 
     | 
    
         
            +
                      .to_h.slice(*aws_credential_keys)
         
     | 
| 
      
 50 
     | 
    
         
            +
                  )
         
     | 
| 
      
 51 
     | 
    
         
            +
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                # Adds ActiveSupport Notifications instrumentation to AWS SDK
         
     | 
| 
      
 54 
     | 
    
         
            +
                # client operations.  Each operation will produce an event with a name:
         
     | 
| 
      
 55 
     | 
    
         
            +
                # <operation>.<service>.aws.  For example, S3's put_object has an event
         
     | 
| 
      
 56 
     | 
    
         
            +
                # name of: put_object.S3.aws
         
     | 
| 
      
 57 
     | 
    
         
            +
                def self.instrument_sdk_operations
         
     | 
| 
      
 58 
     | 
    
         
            +
                  Aws.constants.each do |c|
         
     | 
| 
      
 59 
     | 
    
         
            +
                    m = Aws.const_get(c)
         
     | 
| 
      
 60 
     | 
    
         
            +
                    if m.is_a?(Module) && m.const_defined?(:Client) &&
         
     | 
| 
      
 61 
     | 
    
         
            +
                       m.const_get(:Client).superclass == Seahorse::Client::Base
         
     | 
| 
      
 62 
     | 
    
         
            +
                      m.const_get(:Client).add_plugin(Aws::Rails::Notifications)
         
     | 
| 
      
 63 
     | 
    
         
            +
                    end
         
     | 
| 
      
 64 
     | 
    
         
            +
                  end
         
     | 
| 
      
 65 
     | 
    
         
            +
                end
         
     | 
| 
      
 66 
     | 
    
         
            +
              end
         
     | 
| 
      
 67 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,13 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Description:
         
     | 
| 
      
 2 
     | 
    
         
            +
                Generates a migration file for deleting and a creating a DynamoDB
         
     | 
| 
      
 3 
     | 
    
         
            +
                sessions table, and a configuration file for the session store.
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Example:
         
     | 
| 
      
 6 
     | 
    
         
            +
                rails generate dynamo_db:session_store_migration <MIGRATION_NAME>
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                This will create:
         
     | 
| 
      
 9 
     | 
    
         
            +
                    db/migrate/#{VERSION}_#{MIGRATION_NAME}.rb
         
     | 
| 
      
 10 
     | 
    
         
            +
                    config/dynamo_db_session_store.yml
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                The migration will be run when the command rake db:migrate is run
         
     | 
| 
      
 13 
     | 
    
         
            +
                in the command line.
         
     | 
| 
         @@ -0,0 +1,46 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rails/generators/named_base'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # This class generates a migration file for deleting and creating
         
     | 
| 
      
 4 
     | 
    
         
            +
            # a DynamoDB sessions table.
         
     | 
| 
      
 5 
     | 
    
         
            +
            module DynamoDb
         
     | 
| 
      
 6 
     | 
    
         
            +
              module Generators
         
     | 
| 
      
 7 
     | 
    
         
            +
                # Generates an ActiveRecord migration that creates and deletes a DynamoDB
         
     | 
| 
      
 8 
     | 
    
         
            +
                # Session table.
         
     | 
| 
      
 9 
     | 
    
         
            +
                class SessionStoreMigrationGenerator < Rails::Generators::NamedBase
         
     | 
| 
      
 10 
     | 
    
         
            +
                  include Rails::Generators::Migration
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                  source_root File.expand_path('templates', __dir__)
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                  # Desired name of migration class
         
     | 
| 
      
 15 
     | 
    
         
            +
                  argument :name, type: :string, default: 'create_dynamo_db_sessions_table'
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                  # @return [Rails Migration File] migration file for creation and deletion
         
     | 
| 
      
 18 
     | 
    
         
            +
                  #   of a DynamoDB session table.
         
     | 
| 
      
 19 
     | 
    
         
            +
                  def generate_migration_file
         
     | 
| 
      
 20 
     | 
    
         
            +
                    migration_template(
         
     | 
| 
      
 21 
     | 
    
         
            +
                      'session_store_migration.rb',
         
     | 
| 
      
 22 
     | 
    
         
            +
                      "db/migrate/#{name.underscore}.rb"
         
     | 
| 
      
 23 
     | 
    
         
            +
                    )
         
     | 
| 
      
 24 
     | 
    
         
            +
                  end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                  def copy_sample_config_file
         
     | 
| 
      
 27 
     | 
    
         
            +
                    template(
         
     | 
| 
      
 28 
     | 
    
         
            +
                      'dynamo_db_session_store.yml',
         
     | 
| 
      
 29 
     | 
    
         
            +
                      'config/dynamo_db_session_store.yml'
         
     | 
| 
      
 30 
     | 
    
         
            +
                    )
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                  # Next migration number - must be implemented
         
     | 
| 
      
 34 
     | 
    
         
            +
                  def self.next_migration_number(_dir = nil)
         
     | 
| 
      
 35 
     | 
    
         
            +
                    Time.now.utc.strftime('%Y%m%d%H%M%S')
         
     | 
| 
      
 36 
     | 
    
         
            +
                  end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                  private
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                  # @return [String] activerecord migration version
         
     | 
| 
      
 41 
     | 
    
         
            +
                  def migration_version
         
     | 
| 
      
 42 
     | 
    
         
            +
                    "#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}"
         
     | 
| 
      
 43 
     | 
    
         
            +
                  end
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
      
 45 
     | 
    
         
            +
              end
         
     | 
| 
      
 46 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,70 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Uncomment and manipulate the key value pairs below
         
     | 
| 
      
 2 
     | 
    
         
            +
            # in order to configure the DynamoDB Session Store Application.
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            # [String] The secret key for HMAC encryption. This defaults to
         
     | 
| 
      
 5 
     | 
    
         
            +
            # `Rails.application.secret_key_base`. You can use a different key if desired.
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
            # secret_key: SECRET_KEY
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            # [String] Session table name.
         
     | 
| 
      
 10 
     | 
    
         
            +
            #
         
     | 
| 
      
 11 
     | 
    
         
            +
            # table_name: Sessions
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            # [String] Session table hash key name.
         
     | 
| 
      
 14 
     | 
    
         
            +
            #
         
     | 
| 
      
 15 
     | 
    
         
            +
            # table_key: session_id
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            # [Boolean] Define as true or false depending on if you want a strongly
         
     | 
| 
      
 18 
     | 
    
         
            +
            # consistent read.
         
     | 
| 
      
 19 
     | 
    
         
            +
            # See AWS DynamoDB documentation for table consistent_read for more
         
     | 
| 
      
 20 
     | 
    
         
            +
            # information on this setting.
         
     | 
| 
      
 21 
     | 
    
         
            +
            #
         
     | 
| 
      
 22 
     | 
    
         
            +
            # consistent_read: true
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            # [Integer] Maximum number of reads consumed per second before
         
     | 
| 
      
 25 
     | 
    
         
            +
            # DynamoDB returns a ThrottlingException. See AWS DynamoDB documentation
         
     | 
| 
      
 26 
     | 
    
         
            +
            # or table read_capacity for more information on this setting.
         
     | 
| 
      
 27 
     | 
    
         
            +
            #
         
     | 
| 
      
 28 
     | 
    
         
            +
            # read_capacity: 10
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            # [Integer] Maximum number of writes consumed per second before
         
     | 
| 
      
 31 
     | 
    
         
            +
            # DynamoDB returns a ThrottlingException. See AWS DynamoDB documentation
         
     | 
| 
      
 32 
     | 
    
         
            +
            # or table write_capacity for more information on this setting.
         
     | 
| 
      
 33 
     | 
    
         
            +
            #
         
     | 
| 
      
 34 
     | 
    
         
            +
            # write_capacity: 5
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            # [Boolean] Define as true or false depending on whether you want all errors to be
         
     | 
| 
      
 37 
     | 
    
         
            +
            # raised up the stack.
         
     | 
| 
      
 38 
     | 
    
         
            +
            #
         
     | 
| 
      
 39 
     | 
    
         
            +
            # raise_errors: false
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            # [Integer] Maximum number of seconds earlier
         
     | 
| 
      
 42 
     | 
    
         
            +
            # from the current time that a session was created.
         
     | 
| 
      
 43 
     | 
    
         
            +
            # By default this is 7 days.
         
     | 
| 
      
 44 
     | 
    
         
            +
            #
         
     | 
| 
      
 45 
     | 
    
         
            +
            # max_age: 604800
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            # [Integer] Maximum number of seconds
         
     | 
| 
      
 48 
     | 
    
         
            +
            # before the current time that the session was last accessed.
         
     | 
| 
      
 49 
     | 
    
         
            +
            # By default this is 5 hours.
         
     | 
| 
      
 50 
     | 
    
         
            +
            #
         
     | 
| 
      
 51 
     | 
    
         
            +
            # max_stale: 18000
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            # [Boolean] Define as true or false for whether you want to enable locking
         
     | 
| 
      
 54 
     | 
    
         
            +
            # for all accesses to session data.
         
     | 
| 
      
 55 
     | 
    
         
            +
            #
         
     | 
| 
      
 56 
     | 
    
         
            +
            # enable_locking: false
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            # [Integer] Time in milleseconds after which lock will expire.
         
     | 
| 
      
 59 
     | 
    
         
            +
            #
         
     | 
| 
      
 60 
     | 
    
         
            +
            # lock_expiry_time: 500
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
            # [Integer] Time in milleseconds to wait before retrying to obtain
         
     | 
| 
      
 63 
     | 
    
         
            +
            # lock once an attempt to obtain lock has been made and has failed.
         
     | 
| 
      
 64 
     | 
    
         
            +
            #
         
     | 
| 
      
 65 
     | 
    
         
            +
            # lock_retry_delay: 500
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
            # [Integer] Maximum time in seconds to wait to acquire lock
         
     | 
| 
      
 68 
     | 
    
         
            +
            # before giving up.
         
     | 
| 
      
 69 
     | 
    
         
            +
            #
         
     | 
| 
      
 70 
     | 
    
         
            +
            # lock_max_wait_time: 1
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: aws-sdk-rails
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 3.2.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Amazon Web Services
         
     | 
| 
       8 
     | 
    
         
            -
            autorequire: 
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2020-11-13 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: aws-sdk-ses
         
     | 
| 
         @@ -24,34 +24,71 @@ dependencies: 
     | 
|
| 
       24 
24 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
26 
     | 
    
         
             
                    version: '1'
         
     | 
| 
      
 27 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 28 
     | 
    
         
            +
              name: aws-sessionstore-dynamodb
         
     | 
| 
      
 29 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 30 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '2'
         
     | 
| 
      
 34 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 35 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 37 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 38 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 39 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 40 
     | 
    
         
            +
                    version: '2'
         
     | 
| 
       27 
41 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
42 
     | 
    
         
             
              name: railties
         
     | 
| 
       29 
43 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       30 
44 
     | 
    
         
             
                requirements:
         
     | 
| 
       31 
45 
     | 
    
         
             
                - - ">="
         
     | 
| 
       32 
46 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       33 
     | 
    
         
            -
                    version:  
     | 
| 
      
 47 
     | 
    
         
            +
                    version: 5.2.0
         
     | 
| 
       34 
48 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       35 
49 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       36 
50 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       37 
51 
     | 
    
         
             
                requirements:
         
     | 
| 
       38 
52 
     | 
    
         
             
                - - ">="
         
     | 
| 
       39 
53 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       40 
     | 
    
         
            -
                    version:  
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 54 
     | 
    
         
            +
                    version: 5.2.0
         
     | 
| 
      
 55 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 56 
     | 
    
         
            +
              name: rails
         
     | 
| 
      
 57 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 58 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 59 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 60 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 61 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 62 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 63 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 64 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 65 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 66 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 67 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 68 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 69 
     | 
    
         
            +
            description: Integrates the AWS Ruby SDK with Ruby on Rails
         
     | 
| 
       42 
70 
     | 
    
         
             
            email:
         
     | 
| 
       43 
     | 
    
         
            -
            -  
     | 
| 
      
 71 
     | 
    
         
            +
            - mamuller@amazon.com
         
     | 
| 
      
 72 
     | 
    
         
            +
            - alexwoo@amazon.com
         
     | 
| 
       44 
73 
     | 
    
         
             
            executables: []
         
     | 
| 
       45 
74 
     | 
    
         
             
            extensions: []
         
     | 
| 
       46 
75 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       47 
76 
     | 
    
         
             
            files:
         
     | 
| 
      
 77 
     | 
    
         
            +
            - lib/action_dispatch/session/dynamodb_store.rb
         
     | 
| 
       48 
78 
     | 
    
         
             
            - lib/aws-sdk-rails.rb
         
     | 
| 
       49 
79 
     | 
    
         
             
            - lib/aws/rails/mailer.rb
         
     | 
| 
      
 80 
     | 
    
         
            +
            - lib/aws/rails/notifications.rb
         
     | 
| 
      
 81 
     | 
    
         
            +
            - lib/aws/rails/railtie.rb
         
     | 
| 
      
 82 
     | 
    
         
            +
            - lib/generators/dynamo_db/session_store_migration/USAGE
         
     | 
| 
      
 83 
     | 
    
         
            +
            - lib/generators/dynamo_db/session_store_migration/session_store_migration_generator.rb
         
     | 
| 
      
 84 
     | 
    
         
            +
            - lib/generators/dynamo_db/session_store_migration/templates/dynamo_db_session_store.yml
         
     | 
| 
      
 85 
     | 
    
         
            +
            - lib/generators/dynamo_db/session_store_migration/templates/session_store_migration.rb
         
     | 
| 
      
 86 
     | 
    
         
            +
            - lib/tasks/dynamo_db/session_store.rake
         
     | 
| 
       50 
87 
     | 
    
         
             
            homepage: https://github.com/aws/aws-sdk-rails
         
     | 
| 
       51 
88 
     | 
    
         
             
            licenses:
         
     | 
| 
       52 
     | 
    
         
            -
            - Apache 
     | 
| 
      
 89 
     | 
    
         
            +
            - Apache-2.0
         
     | 
| 
       53 
90 
     | 
    
         
             
            metadata: {}
         
     | 
| 
       54 
     | 
    
         
            -
            post_install_message: 
     | 
| 
      
 91 
     | 
    
         
            +
            post_install_message:
         
     | 
| 
       55 
92 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       56 
93 
     | 
    
         
             
            require_paths:
         
     | 
| 
       57 
94 
     | 
    
         
             
            - lib
         
     | 
| 
         @@ -66,9 +103,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       66 
103 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       67 
104 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       68 
105 
     | 
    
         
             
            requirements: []
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
            signing_key: 
         
     | 
| 
      
 106 
     | 
    
         
            +
            rubygems_version: 3.0.3
         
     | 
| 
      
 107 
     | 
    
         
            +
            signing_key:
         
     | 
| 
       72 
108 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       73 
     | 
    
         
            -
            summary: AWS SDK for Ruby Rails Plugin
         
     | 
| 
      
 109 
     | 
    
         
            +
            summary: AWS SDK for Ruby on Rails Plugin
         
     | 
| 
       74 
110 
     | 
    
         
             
            test_files: []
         
     |