aws-sdk-rails 3.6.0 → 3.6.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 49d723b9b6fd27217d47fec5d67a8e215eea7249b190dcd724d949539c4fccdc
4
- data.tar.gz: 0d99a46f3109fa5ea2950045a4e24ea85f630c9458d510bffe208dca65fcce22
3
+ metadata.gz: 02dc930917c099420e224d5193b65a406ed2b8fa5f7a082515f692e99c06f421
4
+ data.tar.gz: b37670c127021772d0f2e76b4ac3a0ce4a0b35c112c1f9eed21b8c30ca981b00
5
5
  SHA512:
6
- metadata.gz: 3411b20bf529a39dc0c3f45259f5b470cf74885a8c87937c5f874714ba0f840c33e6609f9904c673d0879bacddb30e1f8d9d2f8173ca229a7d4d264be6880e05
7
- data.tar.gz: e2e4626edffb9ee1be443330ec975875ac97569034d985a551f24557d33c3c09cc6120f4f47a48bad15673f3481d52d5544349f8e2f109127a0714f0354d1b41
6
+ metadata.gz: 496f7fe7c27beebd9cd99e5eac7e785ba197cf8913bc28bc60511192fb32caf7b9fa6caa088a0ea75eae7824a468256688d3060f8176efd0c1fa2962611c06a9
7
+ data.tar.gz: 366e891aea46c737de15b2b58b5b593a980a277b0c2c20c87e28b8b9be446ce5a906e3f1f445bbcf0a63cc8332702d851d97d90c9db31c45fbc82e07d3186a67
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.6.0
1
+ 3.6.3
@@ -1,4 +1,5 @@
1
1
  require 'aws-sessionstore-dynamodb'
2
+ require 'action_dispatch/middleware/session/abstract_store'
2
3
 
3
4
  module ActionDispatch
4
5
  module Session
@@ -9,11 +10,14 @@ module ActionDispatch
9
10
  # This class will use the Rails secret_key_base unless otherwise provided.
10
11
  #
11
12
  # 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
+ # in "config/session_store.yml" or "config/session_store/#\\{Rails.env}.yml".
13
14
  # Configuration files that are environment-specific will take precedence.
14
15
  #
15
16
  # @see https://docs.aws.amazon.com/sdk-for-ruby/aws-sessionstore-dynamodb/api/Aws/SessionStore/DynamoDB/Configuration.html
16
17
  class DynamodbStore < Aws::SessionStore::DynamoDB::RackMiddleware
18
+ include StaleSessionCheck
19
+ include SessionObject
20
+
17
21
  def initialize(app, options = {})
18
22
  options[:config_file] ||= config_file if config_file.exist?
19
23
  options[:secret_key] ||= Rails.application.secret_key_base
@@ -11,16 +11,16 @@ module ActiveJob
11
11
  _enqueue(job)
12
12
  end
13
13
 
14
- def enqueue_at(job, timestamp, opts={})
14
+ def enqueue_at(job, timestamp)
15
15
  delay = (timestamp - Time.now.to_f).floor
16
16
  raise ArgumentError, 'Unable to queue a job with a delay great than 15 minutes' if delay > 15.minutes
17
- _enqueue(job, delay_seconds: delay)
17
+ _enqueue(job, nil, delay_seconds: delay)
18
18
  end
19
19
 
20
20
  private
21
21
 
22
- def _enqueue(job, send_message_opts = {})
23
- body = job.serialize
22
+ def _enqueue(job, body = nil, send_message_opts = {})
23
+ body ||= job.serialize
24
24
  queue_url = Aws::Rails::SqsActiveJob.config.queue_url_for(job.queue_name)
25
25
  send_message_opts[:queue_url] = queue_url
26
26
  send_message_opts[:message_body] = Aws::Json.dump(body)
@@ -30,13 +30,15 @@ module ActiveJob
30
30
  # job_id is unique per initialization of job
31
31
  # Remove it from message dup id to ensure run-once behavior
32
32
  # with ActiveJob retries
33
- send_message_opts[:message_deduplication_id] =
34
- Digest::SHA256.hexdigest(
35
- Aws::Json.dump(body.except('job_id'))
36
- )
33
+ send_message_opts[:message_deduplication_id] =
34
+ Digest::SHA256.hexdigest(Aws::Json.dump(body.except('job_id')))
37
35
 
38
- send_message_opts[:message_group_id] = Aws::Rails::SqsActiveJob.config.message_group_id
36
+ message_group_id = job.message_group_id if job.respond_to?(:message_group_id)
37
+ message_group_id ||= Aws::Rails::SqsActiveJob.config.message_group_id
38
+
39
+ send_message_opts[:message_group_id] = message_group_id
39
40
  end
41
+
40
42
  Aws::Rails::SqsActiveJob.config.client.send_message(send_message_opts)
41
43
  end
42
44
 
@@ -18,19 +18,22 @@ module ActiveJob
18
18
 
19
19
  private
20
20
 
21
- def _enqueue(job, send_message_opts = {})
21
+ def _enqueue(job, body = nil, send_message_opts = {})
22
22
  # FIFO jobs must be queued in order, so do not queue async
23
23
  queue_url = Aws::Rails::SqsActiveJob.config.queue_url_for(job.queue_name)
24
24
  if Aws::Rails::SqsActiveJob.fifo?(queue_url)
25
- super(job, send_message_opts)
25
+ super(job, body, send_message_opts)
26
26
  else
27
- Concurrent::Promise
28
- .execute { super(job, send_message_opts) }
29
- .on_error do |e|
30
- Rails.logger.error "Failed to queue job #{job}. Reason: #{e}"
31
- error_handler = Aws::Rails::SqsActiveJob.config.async_queue_error_handler
32
- error_handler.call(e, job, send_message_opts) if error_handler
33
- end
27
+ # Serialize is called here because the job’s locale needs to be
28
+ # determined in this thread and not in some other thread.
29
+ body = job.serialize
30
+ Concurrent::Promises
31
+ .future { super(job, body, send_message_opts) }
32
+ .rescue do |e|
33
+ Rails.logger.error "Failed to queue job #{job}. Reason: #{e}"
34
+ error_handler = Aws::Rails::SqsActiveJob.config.async_queue_error_handler
35
+ error_handler&.call(e, job, send_message_opts)
36
+ end
34
37
  end
35
38
  end
36
39
  end
@@ -11,7 +11,7 @@ module Aws
11
11
 
12
12
  def initialize(app)
13
13
  @app = app
14
- @logger = ActiveSupport::Logger.new(STDOUT)
14
+ @logger = ::Rails.logger
15
15
  end
16
16
 
17
17
  def call(env)
@@ -20,7 +20,7 @@ module Aws
20
20
  # Pass through unless user agent is the SQS Daemon
21
21
  return @app.call(env) unless from_sqs_daemon?(request)
22
22
 
23
- @logger.debug('aws-rails-sdk middleware detected call from Elastic Beanstalk SQS Daemon.')
23
+ @logger.debug('aws-sdk-rails middleware detected call from Elastic Beanstalk SQS Daemon.')
24
24
 
25
25
  # Only accept requests from this user agent if it is from localhost or a docker host in case of forgery.
26
26
  unless request.local? || sent_from_docker_host?(request)
@@ -48,10 +48,7 @@ module Aws
48
48
  aws_credential_keys = %i[access_key_id secret_access_key session_token]
49
49
 
50
50
  Aws.config.merge!(
51
- ::Rails.application
52
- .try(:credentials)
53
- .try(:aws)
54
- .to_h.slice(*aws_credential_keys)
51
+ ::Rails.application.credentials[:aws].to_h.slice(*aws_credential_keys)
55
52
  )
56
53
  end
57
54
 
@@ -26,7 +26,6 @@ module Aws
26
26
  # @api private
27
27
  DEFAULTS = {
28
28
  max_messages: 10,
29
- visibility_timeout: 120,
30
29
  shutdown_timeout: 15,
31
30
  queues: {},
32
31
  logger: ::Rails.logger,
@@ -50,6 +49,8 @@ module Aws
50
49
  # The max number of messages to poll for in a batch.
51
50
  #
52
51
  # @option options [Integer] :visibility_timeout
52
+ # If unset, the visibility timeout configured on the
53
+ # SQS queue will be used.
53
54
  # The visibility timeout is the number of seconds
54
55
  # that a message will not be processable by any other consumers.
55
56
  # You should set this value to be longer than your expected job runtime
@@ -99,7 +100,7 @@ module Aws
99
100
  job_queue = job_queue.to_sym
100
101
  raise ArgumentError, "No queue defined for #{job_queue}" unless queues.key? job_queue
101
102
 
102
- queues[job_queue.to_sym]
103
+ queues[job_queue]
103
104
  end
104
105
 
105
106
  # @api private
@@ -17,7 +17,6 @@ module Aws
17
17
  DEFAULT_OPTS = {
18
18
  threads: 2*Concurrent.processor_count,
19
19
  max_messages: 10,
20
- visibility_timeout: 60,
21
20
  shutdown_timeout: 15,
22
21
  backpressure: 10
23
22
  }
@@ -9,11 +9,11 @@ module AwsRecord
9
9
  end
10
10
 
11
11
  def create_model
12
- template "model.rb", File.join("app/models", class_path, "#{file_name}.rb")
12
+ template "model.erb", File.join("app/models", class_path, "#{file_name}.rb")
13
13
  end
14
14
 
15
15
  def create_table_config
16
- template "table_config.rb", File.join("db/table_config", class_path, "#{file_name}_config.rb") if options["table_config"]
16
+ template "table_config.erb", File.join("db/table_config", class_path, "#{file_name}_config.rb") if options["table_config"]
17
17
  end
18
18
 
19
19
  end
@@ -18,7 +18,7 @@ module DynamoDb
18
18
  # of a DynamoDB session table.
19
19
  def generate_migration_file
20
20
  migration_template(
21
- 'session_store_migration.rb',
21
+ 'session_store_migration.erb',
22
22
  "db/migrate/#{name.underscore}.rb"
23
23
  )
24
24
  end
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: 3.6.0
4
+ version: 3.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-20 00:00:00.000000000 Z
11
+ date: 2022-09-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-record
@@ -136,13 +136,13 @@ files:
136
136
  - lib/generators/aws_record/generated_attribute.rb
137
137
  - lib/generators/aws_record/model/USAGE
138
138
  - lib/generators/aws_record/model/model_generator.rb
139
- - lib/generators/aws_record/model/templates/model.rb
140
- - lib/generators/aws_record/model/templates/table_config.rb
139
+ - lib/generators/aws_record/model/templates/model.erb
140
+ - lib/generators/aws_record/model/templates/table_config.erb
141
141
  - lib/generators/aws_record/secondary_index.rb
142
142
  - lib/generators/dynamo_db/session_store_migration/USAGE
143
143
  - lib/generators/dynamo_db/session_store_migration/session_store_migration_generator.rb
144
144
  - lib/generators/dynamo_db/session_store_migration/templates/dynamo_db_session_store.yml
145
- - lib/generators/dynamo_db/session_store_migration/templates/session_store_migration.rb
145
+ - lib/generators/dynamo_db/session_store_migration/templates/session_store_migration.erb
146
146
  - lib/tasks/aws_record/migrate.rake
147
147
  - lib/tasks/dynamo_db/session_store.rake
148
148
  homepage: https://github.com/aws/aws-sdk-rails
@@ -164,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
164
164
  - !ruby/object:Gem::Version
165
165
  version: '0'
166
166
  requirements: []
167
- rubygems_version: 3.0.3
167
+ rubygems_version: 3.2.26
168
168
  signing_key:
169
169
  specification_version: 4
170
170
  summary: AWS SDK for Ruby on Rails Plugin