shoryuken 5.0.3 → 5.1.1

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: 64491bd4386735606adc6883e2f9118c8d14eb996f3e6f0eff54cd567a362333
4
- data.tar.gz: 2257c6730d6f6dd687a2e72246670977e8bea00d5e4d1259d935a57647ffadad
3
+ metadata.gz: 0d08b7287c9dcb2c488715f1313e11d9a9645c068d90fc160c76dbc57ff5d795
4
+ data.tar.gz: 1e6009538535c438a02267e948d5f3eacaedf4aa1283950733bfc51972dcf872
5
5
  SHA512:
6
- metadata.gz: dea5b0b639fcfc604b5179bed637755a70e2eb6670ab62895c0fcbda45931bab7dedf15d3d2b03877351080d8ed98c236e2c10d718addb573d9dcf0ec735d679
7
- data.tar.gz: 5b7f057295393124a48e7eb1c4ebf2f360f5e05fe496f7710d3ee7320331e2c2184e2a06dd9c737ecec1022d9a16f826f0f2ef6fd01276776a0359cdf49036f5
6
+ metadata.gz: dfc89030844c19828865a6495a4dcf4ef8e46f361303c4c906a0f1d56b2e9fdc46baebcd9eb6ee826a65a173dde4ed2d1a2e1ebc8dae64a8ed131fc5ebe65f13
7
+ data.tar.gz: af2ac18ce6d1445fd261344220b72271d78e10c4034bf565c782d4baad44f946459348342b1fbcbaa75fbe8984ef2655aad78cad2a7128feee5603466fc736d5
@@ -0,0 +1,57 @@
1
+ name: Specs
2
+
3
+ on:
4
+ - push
5
+ - pull_request
6
+
7
+ jobs:
8
+ all_specs:
9
+ name: All Specs
10
+ strategy:
11
+ matrix:
12
+ ruby: ['2.4.4', '2.5.1', '2.6.3']
13
+ gemfile: ['Gemfile', 'Gemfile.aws-sdk-core-v2']
14
+ runs-on: ubuntu-20.04
15
+ env:
16
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
17
+ steps:
18
+ - name: Checkout code
19
+ uses: actions/checkout@v2
20
+ - uses: ruby/setup-ruby@v1
21
+ with:
22
+ ruby-version: ${{ matrix.ruby }}
23
+ bundler-cache: true
24
+ - name: Run specs
25
+ env:
26
+ SPEC_ALL: true
27
+ run: bundle exec rake spec
28
+ rails_specs:
29
+ name: Rails Specs
30
+ strategy:
31
+ matrix:
32
+ rails: ['4.2', '5.2', '6.0', '6.1']
33
+ include:
34
+ - rails: '4.2'
35
+ ruby: '2.2'
36
+ gemfile: gemfiles/rails_4_2.gemfile
37
+ - rails: '5.2'
38
+ ruby: '2.5'
39
+ gemfile: gemfiles/rails_5_2.gemfile
40
+ - rails: '6.0'
41
+ ruby: '2.6'
42
+ gemfile: gemfiles/rails_6_0.gemfile
43
+ - rails: '6.1'
44
+ ruby: '3.0'
45
+ gemfile: gemfiles/rails_6_1.gemfile
46
+ runs-on: ubuntu-20.04
47
+ env:
48
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
49
+ steps:
50
+ - name: Checkout code
51
+ uses: actions/checkout@v2
52
+ - uses: ruby/setup-ruby@v1
53
+ with:
54
+ ruby-version: ${{ matrix.ruby }}
55
+ bundler-cache: true
56
+ - name: Run Rails specs
57
+ run: bundle exec rake rails_specs
data/.reek.yml ADDED
@@ -0,0 +1,5 @@
1
+ ---
2
+ detectors:
3
+
4
+ UtilityFunction:
5
+ public_methods_only: true
data/.rubocop.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  AllCops:
2
2
  Exclude:
3
3
  - '**/Gemfile'
4
- TargetRubyVersion: 2.3
4
+ TargetRubyVersion: 2.4
5
5
 
6
6
  Metrics/PerceivedComplexity:
7
7
  Enabled: false
data/Appraisals ADDED
@@ -0,0 +1,28 @@
1
+ appraise 'rails_4_2' do
2
+ group :test do
3
+ gem 'activejob', '~> 4.2'
4
+ end
5
+
6
+ group :development do
7
+ gem 'appraisal', '~> 2.2'
8
+ remove_gem 'pry-byebug'
9
+ end
10
+ end
11
+
12
+ appraise 'rails_5_2' do
13
+ group :test do
14
+ gem 'activejob', '~> 5.2'
15
+ end
16
+ end
17
+
18
+ appraise 'rails_6_0' do
19
+ group :test do
20
+ gem 'activejob', '~> 6.0'
21
+ end
22
+ end
23
+
24
+ appraise 'rails_6_1' do
25
+ group :test do
26
+ gem 'activejob', '~> 6.1'
27
+ end
28
+ end
data/CHANGELOG.md CHANGED
@@ -1,3 +1,41 @@
1
+ ## [v5.1.1] - 2021-02-10
2
+
3
+ - Fix regression in Ruby 3.0 introduced in Shoryuken 5.1.0, where enqueueing jobs with ActiveJob to workers that used keyword arguments would fail
4
+ - [#654](https://github.com/phstc/shoryuken/pull/654)
5
+
6
+ ## [v5.1.0] - 2021-02-06
7
+
8
+ - Add support for specifying SQS SendMessage parameters with ActiveJob `.set`
9
+ - [#635](https://github.com/phstc/shoryuken/pull/635)
10
+ - [#648](https://github.com/phstc/shoryuken/pull/648)
11
+ - [#651](https://github.com/phstc/shoryuken/pull/651)
12
+
13
+ - Unpause FIFO queues on worker completion
14
+ - [#644](https://github.com/phstc/shoryuken/pull/644)
15
+
16
+ - Add multiple versions of Rails to test matrix
17
+ - [#647](https://github.com/phstc/shoryuken/pull/647)
18
+
19
+ - Migrate from Travis CI to Github Actions
20
+ - [#649](https://github.com/phstc/shoryuken/pull/649)
21
+ - [#650](https://github.com/phstc/shoryuken/pull/650)
22
+ - [#652](https://github.com/phstc/shoryuken/pull/652)
23
+
24
+ ## [v5.0.6] - 2020-12-30
25
+
26
+ - Load ShoryukenConcurrentSendAdapter when loading Rails
27
+ - [#642](https://github.com/phstc/shoryuken/pull/642)
28
+
29
+ ## [v5.0.5] - 2020-06-07
30
+
31
+ - Add ability to configure queue by ARN
32
+ - [#603](https://github.com/phstc/shoryuken/pull/603)
33
+
34
+ ## [v5.0.4] - 2020-02-20
35
+
36
+ - Add endpoint option to SQS CLI
37
+ - [#595](https://github.com/phstc/shoryuken/pull/595)
38
+
1
39
  ## [v5.0.3] - 2019-11-30
2
40
 
3
41
  - Add support for sending messages asynchronous with Active Job using `shoryuken_concurrent_send`
data/Gemfile CHANGED
@@ -4,7 +4,7 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  group :test do
7
- gem 'activejob', '~> 4'
7
+ gem 'activejob'
8
8
  gem 'aws-sdk-core', '~> 3'
9
9
  gem 'aws-sdk-sqs'
10
10
  gem 'codeclimate-test-reporter', require: nil
@@ -14,5 +14,7 @@ group :test do
14
14
  end
15
15
 
16
16
  group :development do
17
+ gem 'appraisal', git: 'https://github.com/thoughtbot/appraisal.git'
18
+ gem 'pry-byebug', '3.9.0'
17
19
  gem 'rubocop'
18
20
  end
data/README.md CHANGED
@@ -1,10 +1,12 @@
1
+ **I'm looking for Shoryuken maintainers, are you interested on helping to maintain Shoryuken? Fill up this form https://forms.gle/8kTso8ixa9Sfp6rJ9**
2
+
1
3
  # Shoryuken
2
4
 
3
5
  ![Shoryuken](shoryuken.jpg)
4
6
 
5
7
  Shoryuken _sho-ryu-ken_ is a super-efficient [Amazon SQS](https://aws.amazon.com/sqs/) thread-based message processor.
6
8
 
7
- [![Build Status](https://travis-ci.org/phstc/shoryuken.svg)](https://travis-ci.org/phstc/shoryuken)
9
+ [![Build Status](https://github.com/ruby-shoryuken/shoryuken/workflows/Specs/badge.svg)](https://github.com/ruby-shoryuken/shoryuken/actions)
8
10
  [![Code Climate](https://codeclimate.com/github/phstc/shoryuken/badges/gpa.svg)](https://codeclimate.com/github/phstc/shoryuken)
9
11
 
10
12
  ## Key features
@@ -21,7 +23,7 @@ Shoryuken _sho-ryu-ken_ is a super-efficient [Amazon SQS](https://aws.amazon.com
21
23
 
22
24
  ## Requirements
23
25
 
24
- Ruby 2.0 or greater.
26
+ Ruby 2.4 or greater.
25
27
 
26
28
  ## Installation
27
29
 
@@ -64,3 +66,17 @@ For more information check the [wiki page](https://github.com/phstc/shoryuken/wi
64
66
  3. Commit your changes (`git commit -am 'Add some feature'`)
65
67
  4. Push to the branch (`git push origin my-new-feature`)
66
68
  5. Create a new Pull Request
69
+
70
+ ### Testing
71
+
72
+ To run all specs against the latest dependency vesions, execute
73
+
74
+ ```sh
75
+ bundle exec rake spec
76
+ ```
77
+
78
+ To run all Rails-related specs against all supported versions of Rails, execute
79
+
80
+ ```sh
81
+ bundle exec appraisal rake rails_specs
82
+ ```
data/Rakefile CHANGED
@@ -4,6 +4,9 @@ $stdout.sync = true
4
4
  begin
5
5
  require 'rspec/core/rake_task'
6
6
  RSpec::Core::RakeTask.new(:spec)
7
+
8
+ rails_task = RSpec::Core::RakeTask.new(:rails_specs)
9
+ rails_task.pattern = 'spec/shoryuken/{environment_loader_spec,extensions/active_job_*}.rb'
7
10
  rescue LoadError
8
11
  end
9
12
 
data/bin/cli/sqs.rb CHANGED
@@ -5,6 +5,7 @@ module Shoryuken
5
5
  module CLI
6
6
  class SQS < Base
7
7
  namespace :sqs
8
+ class_option :endpoint, aliases: '-e', type: :string, default: ENV['SHORYUKEN_SQS_ENDPOINT'], desc: 'Endpoint URL'
8
9
 
9
10
  no_commands do
10
11
  def normalize_dump_message(message)
@@ -19,8 +20,15 @@ module Shoryuken
19
20
  }
20
21
  end
21
22
 
23
+ def client_options
24
+ endpoint = options[:endpoint]
25
+ {}.tap do |hash|
26
+ hash[:endpoint] = endpoint unless endpoint.to_s.empty?
27
+ end
28
+ end
29
+
22
30
  def sqs
23
- @_sqs ||= Aws::SQS::Client.new
31
+ @_sqs ||= Aws::SQS::Client.new(client_options)
24
32
  end
25
33
 
26
34
  def find_queue_url(queue_name)
@@ -0,0 +1 @@
1
+ *.gemfile.lock
@@ -0,0 +1,20 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ group :test do
6
+ gem "activejob", "~> 4.2"
7
+ gem "aws-sdk-core", "~> 3"
8
+ gem "aws-sdk-sqs"
9
+ gem "codeclimate-test-reporter", require: nil
10
+ gem "httparty"
11
+ gem "multi_xml"
12
+ gem "simplecov"
13
+ end
14
+
15
+ group :development do
16
+ gem "appraisal", "~> 2.2"
17
+ gem "rubocop"
18
+ end
19
+
20
+ gemspec path: "../"
@@ -0,0 +1,21 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ group :test do
6
+ gem "activejob", "~> 5.2"
7
+ gem "aws-sdk-core", "~> 3"
8
+ gem "aws-sdk-sqs"
9
+ gem "codeclimate-test-reporter", require: nil
10
+ gem "httparty"
11
+ gem "multi_xml"
12
+ gem "simplecov"
13
+ end
14
+
15
+ group :development do
16
+ gem "appraisal", git: "https://github.com/thoughtbot/appraisal.git"
17
+ gem "pry-byebug", "3.9.0"
18
+ gem "rubocop"
19
+ end
20
+
21
+ gemspec path: "../"
@@ -0,0 +1,21 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ group :test do
6
+ gem "activejob", "~> 6.0"
7
+ gem "aws-sdk-core", "~> 3"
8
+ gem "aws-sdk-sqs"
9
+ gem "codeclimate-test-reporter", require: nil
10
+ gem "httparty"
11
+ gem "multi_xml"
12
+ gem "simplecov"
13
+ end
14
+
15
+ group :development do
16
+ gem "appraisal", git: "https://github.com/thoughtbot/appraisal.git"
17
+ gem "pry-byebug", "3.9.0"
18
+ gem "rubocop"
19
+ end
20
+
21
+ gemspec path: "../"
@@ -0,0 +1,21 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ group :test do
6
+ gem "activejob", "~> 6.1"
7
+ gem "aws-sdk-core", "~> 3"
8
+ gem "aws-sdk-sqs"
9
+ gem "codeclimate-test-reporter", require: nil
10
+ gem "httparty"
11
+ gem "multi_xml"
12
+ gem "simplecov"
13
+ end
14
+
15
+ group :development do
16
+ gem "appraisal", git: "https://github.com/thoughtbot/appraisal.git"
17
+ gem "pry-byebug", "3.9.0"
18
+ gem "rubocop"
19
+ end
20
+
21
+ gemspec path: "../"
data/lib/shoryuken.rb CHANGED
@@ -89,6 +89,7 @@ module Shoryuken
89
89
  end
90
90
 
91
91
  if Shoryuken.active_job?
92
+ require 'shoryuken/extensions/active_job_extensions'
92
93
  require 'shoryuken/extensions/active_job_adapter'
93
94
  require 'shoryuken/extensions/active_job_concurrent_send_adapter'
94
95
  end
@@ -70,7 +70,11 @@ module Shoryuken
70
70
  ::Rails.application.config.eager_load = true
71
71
  end
72
72
  end
73
- require 'shoryuken/extensions/active_job_adapter' if Shoryuken.active_job?
73
+ if Shoryuken.active_job?
74
+ require 'shoryuken/extensions/active_job_extensions'
75
+ require 'shoryuken/extensions/active_job_adapter'
76
+ require 'shoryuken/extensions/active_job_concurrent_send_adapter'
77
+ end
74
78
  require File.expand_path('config/environment.rb')
75
79
  end
76
80
  end
@@ -33,8 +33,12 @@ module ActiveJob
33
33
  def enqueue(job, options = {}) #:nodoc:
34
34
  register_worker!(job)
35
35
 
36
+ job.sqs_send_message_parameters.merge! options
37
+
36
38
  queue = Shoryuken::Client.queues(job.queue_name)
37
- queue.send_message(message(queue, job, options))
39
+ send_message_params = message queue, job
40
+ job.sqs_send_message_parameters = send_message_params
41
+ queue.send_message send_message_params
38
42
  end
39
43
 
40
44
  def enqueue_at(job, timestamp) #:nodoc:
@@ -50,35 +54,29 @@ module ActiveJob
50
54
  delay
51
55
  end
52
56
 
53
- def message(queue, job, options = {})
57
+ def message(queue, job)
54
58
  body = job.serialize
59
+ job_params = job.sqs_send_message_parameters
60
+
61
+ attributes = job_params[:message_attributes] || {}
55
62
 
56
- msg = {}
63
+ msg = {
64
+ message_body: body,
65
+ message_attributes: attributes.merge(MESSAGE_ATTRIBUTES)
66
+ }
57
67
 
58
68
  if queue.fifo?
59
69
  # See https://github.com/phstc/shoryuken/issues/457
60
70
  msg[:message_deduplication_id] = Digest::SHA256.hexdigest(JSON.dump(body.except('job_id')))
61
71
  end
62
72
 
63
- msg[:message_body] = body
64
- msg[:message_attributes] = message_attributes
65
-
66
- msg.merge(options)
73
+ msg.merge(job_params.except(:message_attributes))
67
74
  end
68
75
 
69
76
  def register_worker!(job)
70
77
  Shoryuken.register_worker(job.queue_name, JobWrapper)
71
78
  end
72
79
 
73
- def message_attributes
74
- @message_attributes ||= {
75
- 'shoryuken_class' => {
76
- string_value: JobWrapper.to_s,
77
- data_type: 'String'
78
- }
79
- }
80
- end
81
-
82
80
  class JobWrapper #:nodoc:
83
81
  include Shoryuken::Worker
84
82
 
@@ -88,6 +86,13 @@ module ActiveJob
88
86
  Base.execute hash
89
87
  end
90
88
  end
89
+
90
+ MESSAGE_ATTRIBUTES = {
91
+ 'shoryuken_class' => {
92
+ string_value: JobWrapper.to_s,
93
+ data_type: 'String'
94
+ }
95
+ }.freeze
91
96
  end
92
97
  end
93
98
  end