activejob-dispatch_rider 1.0.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ad8cd41d0e457743dd03943aba4efc40af19e52c
4
+ data.tar.gz: 5e59ba98d4aa917747e82772361b46ab3b3e3fd0
5
+ SHA512:
6
+ metadata.gz: 47b37f3ba16b43eb15f8fbbbf22303befdc0064e940d78ea5893c45ed8685c4adfce13caaf5e155b702d4f1cb276fa99aaefb99af58476dbb989cde3677a9599
7
+ data.tar.gz: 10c278700fc385c817c430e0f9a5ad6bb87b689674b4d7bdac4179288a20839759e085f0eb8fd8daee401c2f3664c423dbcbc48b042895510ed110764291dce4
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in activejob-dispatch_rider.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,141 @@
1
+ # ActiveJob::DispatchRider
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/activejob-dispatch_rider.svg)](http://badge.fury.io/rb/activejob-dispatch_rider)
4
+ [![Code Climate](https://codeclimate.com/github/payrollhero/activejob-dispatch_rider/badges/gpa.svg)](https://codeclimate.com/github/payrollhero/activejob-dispatch_rider)
5
+ [![Test Coverage](https://codeclimate.com/github/payrollhero/activejob-dispatch_rider/badges/coverage.svg)](https://codeclimate.com/github/payrollhero/activejob-dispatch_rider)
6
+
7
+ [![Circle CI](https://circleci.com/gh/payrollhero/activejob-dispatch_rider.png?style=badge)](https://circleci.com/gh/payrollhero/activejob-dispatch_rider)
8
+
9
+
10
+ 'ActiveJob::DispatchRider' adds `DispatchRider` support for `ActiveJob`.
11
+
12
+ ## Installation
13
+
14
+ Add this line to your application's Gemfile:
15
+
16
+ ```ruby
17
+ gem "activejob-dispatch_rider"
18
+ ```
19
+
20
+ And then execute:
21
+
22
+ $ bundle
23
+
24
+ Or install it yourself as:
25
+
26
+ $ gem install activejob-dispatch_rider
27
+
28
+ ## Usage
29
+
30
+ Configure `ActiveJob` and `DispatchRider`.
31
+
32
+ ### Stand-alone
33
+
34
+ ```ruby
35
+ # publisher app
36
+
37
+ # Set the ActiveJob's queue adapter
38
+ ActiveJob::Base.queue_adapter = :dispatch_rider
39
+
40
+ # Configure DispatchRider::Publisher as you would normally do
41
+ DispatchRider::Publisher.configure notification_services: { file_system: {} },
42
+ destinations: {
43
+ low_priority: {
44
+ service: :file_system,
45
+ channel: :low_priority,
46
+ options: { path: "tmp/queue/low" }
47
+ },
48
+ high_priority: {
49
+ service: :file_system,
50
+ channel: :high_priority,
51
+ options: { path: "tmp/queue/high" }
52
+ }
53
+ }
54
+ ```
55
+
56
+ ```ruby
57
+ # subscriber app for low priority channel
58
+ DispatchRider.configure do |config|
59
+ config.queue_kind = "file_system"
60
+ config.queue_info = { path: "tmp/queue/low" }
61
+ end
62
+ ```
63
+
64
+ ```ruby
65
+ # subscriber app for high priority channel
66
+ DispatchRider.configure do |config|
67
+ config.queue_kind = "file_system"
68
+ config.queue_info = { path: "tmp/queue/high" }
69
+ end
70
+ ```
71
+
72
+ ### Rails
73
+
74
+
75
+ ```ruby
76
+ # config/application.rb
77
+ module YourApp
78
+ class Application < Rails::Application
79
+ # ...
80
+ config.active_job.queue_adapter = :dispatch_rider
81
+ # ...
82
+ end
83
+ end
84
+ ```
85
+
86
+ ```ruby
87
+ # Configure DispatchRider::Publisher as you would normally do
88
+
89
+ # config/initializers/dispatch_rider.rb
90
+ DispatchRider::Publisher.configure notification_services: { file_system: {} },
91
+ destinations: {
92
+ low_priority: {
93
+ service: :file_system,
94
+ channel: :low_priority,
95
+ options: { path: "tmp/queue/low" }
96
+ },
97
+ high_priority: {
98
+ service: :file_system,
99
+ channel: :high_priority,
100
+ options: { path: "tmp/queue/high" }
101
+ }
102
+ }
103
+
104
+ # subscriber app for low priority channel
105
+ DispatchRider.configure do |config|
106
+ config.queue_kind = "file_system"
107
+ config.queue_info = { path: "tmp/queue/low" }
108
+ end
109
+ ```
110
+
111
+ Once the preliminary setup is done create active jobs like you normally would.
112
+ Match the destination channel name of `DispatchRider` with the queue name of
113
+ `ActiveJob`.
114
+
115
+ ```ruby
116
+ # call_and_welcome_customer.rb
117
+ class CallAndWelcomeCustomer < ActiveJob::Base
118
+ queue_as :high_priority
119
+
120
+ def perform(customer, welcome_message:)
121
+ call_phone customer.phone_number
122
+ say welcome_message
123
+ # ...
124
+ end
125
+ # ...
126
+ end
127
+ ```
128
+
129
+ To perform the job later enqueue it by calling `.perform_later`.
130
+ ```ruby
131
+ CallAndWelcomeCustomer.perform_later Customer.find_by_name!("Smith"),
132
+ welcome_message: "Welcome Mr. Smith!"
133
+ ```
134
+
135
+ ## Contributing
136
+
137
+ 1. Fork it ( https://github.com/payrollhero/activejob-dispatch_rider/fork )
138
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
139
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
140
+ 4. Push to the branch (`git push origin my-new-feature`)
141
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'activejob/dispatch_rider/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "activejob-dispatch_rider"
8
+ spec.version = ActiveJob::DispatchRider::VERSION
9
+ spec.authors = ["Ronald Maravilla", "Fred Baa"]
10
+ spec.email = ["more.ron.too@gmail.com", "frederickbaa@gmail.com"]
11
+ spec.summary = %q{'ActiveJob::DispatchRider' adds `DispatchRider` support for `ActiveJob`.}
12
+ spec.description = %q{'ActiveJob::DispatchRider' adds `DispatchRider` support for `ActiveJob`.}
13
+ spec.homepage = "https://github.com/payrollhero/activejob-dispatch_rider"
14
+ spec.license = "BSD-3-Clause"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "activejob"
22
+ spec.add_dependency "dispatch-rider"
23
+ spec.add_development_dependency "bundler", "~> 1.7"
24
+ spec.add_development_dependency "rake", "~> 10.0"
25
+ spec.add_development_dependency "rspec"
26
+ spec.add_development_dependency "codeclimate-test-reporter"
27
+ end
data/circle.yml ADDED
@@ -0,0 +1,3 @@
1
+ machine:
2
+ ruby:
3
+ version: 2.2.2
@@ -0,0 +1,12 @@
1
+ require "activejob/dispatch_rider/version"
2
+ require "active_job"
3
+ require "dispatch-rider"
4
+ require "dispatch_rider_active_job_handler"
5
+
6
+ module ActiveJob
7
+ module DispatchRider
8
+ # Your code goes here...
9
+ end
10
+ end
11
+
12
+ require "activejob/queue_adapters/dispatch_rider_adapter"
@@ -0,0 +1,5 @@
1
+ module ActiveJob
2
+ module DispatchRider
3
+ VERSION = "1.0.0"
4
+ end
5
+ end
@@ -0,0 +1,30 @@
1
+ module ActiveJob
2
+ module QueueAdapters
3
+ # Adds support for DispatchRider to ActiveJob.
4
+ class DispatchRiderAdapter
5
+ class << self
6
+ # @param [ActiveJob::Base] job
7
+ def enqueue(job)
8
+ publisher.publish destinations: Array(job.queue_name),
9
+ message: {
10
+ subject: "dispatch_rider_active_job_handler",
11
+ body: job.serialize
12
+ }
13
+ end
14
+
15
+ def enqueue_at(*)
16
+ raise NotImplementedError,
17
+ "This queueing backend does not support scheduling jobs. To "\
18
+ "see what features are supported go to "\
19
+ "http://api.rubyonrails.org/classes/ActiveJob/QueueAdapters.html"
20
+ end
21
+
22
+ private
23
+
24
+ def publisher
25
+ @publisher ||= ::DispatchRider::Publisher.new
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,6 @@
1
+ # Generic DispatchRider handler for ActiveJob.
2
+ class DispatchRiderActiveJobHandler < DispatchRider::Handlers::Base
3
+ def process(job_data)
4
+ ::ActiveJob::Base.execute job_data
5
+ end
6
+ end
@@ -0,0 +1,73 @@
1
+ require "spec_helper"
2
+
3
+ describe ActiveJob::QueueAdapters::DispatchRiderAdapter do
4
+ let(:foo_job_class) {
5
+ job_class = Class.new(ActiveJob::Base) do
6
+ queue_as :foo
7
+
8
+ def perform(*)
9
+ end
10
+ end
11
+
12
+ stub_const "FooAjJob", job_class
13
+
14
+ FooAjJob
15
+ }
16
+
17
+ let(:bar_job_class) {
18
+ job_class = Class.new(ActiveJob::Base) do
19
+ queue_as :bar
20
+
21
+ def perform(*)
22
+ end
23
+ end
24
+
25
+ stub_const "BarAjJob", job_class
26
+
27
+ BarAjJob
28
+ }
29
+
30
+ describe "class methods" do
31
+ subject(:adapter) { described_class }
32
+
33
+ let(:foo_queue_path_pattern) { "tmp/queue/foo_channel/*.*" }
34
+ let(:bar_queue_path_pattern) { "tmp/queue/bar_channel/*.*" }
35
+ let(:foo_queued_item) { JSON.parse(File.read Dir[foo_queue_path_pattern].first) }
36
+ let(:bar_queued_item) { JSON.parse(File.read Dir[bar_queue_path_pattern].first) }
37
+
38
+ describe ".enqueue" do
39
+ around do |test|
40
+ FileUtils.rmtree "tmp/queue/"
41
+ test.run
42
+ FileUtils.rmtree "tmp/queue/"
43
+ end
44
+
45
+ it("is called when performing later") {
46
+ expect(adapter).to receive(:enqueue).with instance_of(foo_job_class)
47
+ foo_job_class.perform_later foo: "bar"
48
+ }
49
+
50
+ example("queued item") {
51
+ foo_job_class.perform_later foo: "bar"
52
+
53
+ expect(foo_queued_item["subject"]).to eq("dispatch_rider_active_job_handler")
54
+ expect(foo_queued_item["body"]["job_class"]).to eq("FooAjJob")
55
+ expect(foo_queued_item["body"]["queue_name"]).to eq("foo")
56
+ expect(foo_queued_item["body"]["arguments"].first).to include("foo" => "bar")
57
+ }
58
+
59
+ describe "switching channel depending on the queue name" do
60
+ example { expect { foo_job_class.perform_later foo: "bar" }.to change { Dir[foo_queue_path_pattern].count }.by(1) }
61
+ example { expect { bar_job_class.perform_later foo: "bar" }.to change { Dir[bar_queue_path_pattern].count }.by(1) }
62
+ example { expect { foo_job_class.perform_later foo: "bar" }.to_not change { Dir[bar_queue_path_pattern].count } }
63
+ end
64
+ end
65
+
66
+ describe ".enqueue_at" do
67
+ let(:job) { double :job }
68
+ let(:timestamp) { Time.now }
69
+
70
+ example { expect { adapter.enqueue_at job, timestamp }.to raise_error NotImplementedError }
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,37 @@
1
+ require "spec_helper"
2
+
3
+ describe DispatchRiderActiveJobHandler do
4
+
5
+ let!(:job_class) {
6
+ job_class = Class.new(ActiveJob::Base) do
7
+ queue_as :foo
8
+
9
+ def perform(foo:)
10
+ "foo is #{foo}"
11
+ end
12
+ end
13
+
14
+ stub_const "AjJob", job_class
15
+
16
+ AjJob
17
+ }
18
+
19
+ let(:job_data) {
20
+ {
21
+ "job_class" => "AjJob",
22
+ "job_id" => "8b71ac6b-2854-4287-8d1b-15085b70280b",
23
+ "queue_name" => "foo",
24
+ "arguments" => [
25
+ {
26
+ "foo" => "bar",
27
+ "_aj_symbol_keys" => ["foo"]
28
+ }
29
+ ],
30
+ "guid" => "d9188320-580d-481f-a579-c3c521beccb8",
31
+ }
32
+ }
33
+
34
+ subject(:job_handler) { described_class.new }
35
+
36
+ it("performs the job") { expect(job_handler.process job_data).to eq "foo is bar" }
37
+ end
@@ -0,0 +1,112 @@
1
+ require "codeclimate-test-reporter"
2
+ CodeClimate::TestReporter.start
3
+
4
+ require "activejob/dispatch_rider"
5
+
6
+ ActiveJob::Base.queue_adapter = :dispatch_rider
7
+
8
+ DispatchRider::Publisher.configure notification_services: { file_system: {} },
9
+ destinations: {
10
+ foo: {
11
+ service: :file_system,
12
+ channel: :foo_channel,
13
+ options: { path: "tmp/queue/foo_channel" }
14
+ },
15
+ bar: {
16
+ service: :file_system,
17
+ channel: :bar_channel,
18
+ options: { path: "tmp/queue/bar_channel" }
19
+ }
20
+ }
21
+
22
+ # This file was generated by the `rspec --init` command. Conventionally, all
23
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
24
+ # The generated `.rspec` file contains `--require spec_helper` which will cause
25
+ # this file to always be loaded, without a need to explicitly require it in any
26
+ # files.
27
+ #
28
+ # Given that it is always loaded, you are encouraged to keep this file as
29
+ # light-weight as possible. Requiring heavyweight dependencies from this file
30
+ # will add to the boot time of your test suite on EVERY test run, even for an
31
+ # individual file that may not need all of that loaded. Instead, consider making
32
+ # a separate helper file that requires the additional dependencies and performs
33
+ # the additional setup, and require it from the spec files that actually need
34
+ # it.
35
+ #
36
+ # The `.rspec` file also contains a few flags that are not defaults but that
37
+ # users commonly want.
38
+ #
39
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
40
+ RSpec.configure do |config|
41
+ # rspec-expectations config goes here. You can use an alternate
42
+ # assertion/expectation library such as wrong or the stdlib/minitest
43
+ # assertions if you prefer.
44
+ config.expect_with :rspec do |expectations|
45
+ # This option will default to `true` in RSpec 4. It makes the `description`
46
+ # and `failure_message` of custom matchers include text for helper methods
47
+ # defined using `chain`, e.g.:
48
+ # be_bigger_than(2).and_smaller_than(4).description
49
+ # # => "be bigger than 2 and smaller than 4"
50
+ # ...rather than:
51
+ # # => "be bigger than 2"
52
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
53
+ end
54
+
55
+ # rspec-mocks config goes here. You can use an alternate test double
56
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
57
+ config.mock_with :rspec do |mocks|
58
+ # Prevents you from mocking or stubbing a method that does not exist on
59
+ # a real object. This is generally recommended, and will default to
60
+ # `true` in RSpec 4.
61
+ mocks.verify_partial_doubles = true
62
+ end
63
+
64
+ # The settings below are suggested to provide a good initial experience
65
+ # with RSpec, but feel free to customize to your heart's content.
66
+ =begin
67
+ # These two settings work together to allow you to limit a spec run
68
+ # to individual examples or groups you care about by tagging them with
69
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
70
+ # get run.
71
+ config.filter_run :focus
72
+ config.run_all_when_everything_filtered = true
73
+
74
+ # Limits the available syntax to the non-monkey patched syntax that is
75
+ # recommended. For more details, see:
76
+ # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
77
+ # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
78
+ # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
79
+ config.disable_monkey_patching!
80
+
81
+ # This setting enables warnings. It's recommended, but in some cases may
82
+ # be too noisy due to issues in dependencies.
83
+ config.warnings = true
84
+
85
+ # Many RSpec users commonly either run the entire suite or an individual
86
+ # file, and it's useful to allow more verbose output when running an
87
+ # individual spec file.
88
+ if config.files_to_run.one?
89
+ # Use the documentation formatter for detailed output,
90
+ # unless a formatter has already been configured
91
+ # (e.g. via a command-line flag).
92
+ config.default_formatter = 'doc'
93
+ end
94
+
95
+ # Print the 10 slowest examples and example groups at the
96
+ # end of the spec run, to help surface which specs are running
97
+ # particularly slow.
98
+ config.profile_examples = 10
99
+
100
+ # Run specs in random order to surface order dependencies. If you find an
101
+ # order dependency and want to debug it, you can fix the order by providing
102
+ # the seed, which is printed after each run.
103
+ # --seed 1234
104
+ config.order = :random
105
+
106
+ # Seed global randomization in this process using the `--seed` CLI option.
107
+ # Setting this allows you to use `--seed` to deterministically reproduce
108
+ # test failures related to randomization by passing the same `--seed` value
109
+ # as the one that triggered the failure.
110
+ Kernel.srand config.seed
111
+ =end
112
+ end
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: activejob-dispatch_rider
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Ronald Maravilla
8
+ - Fred Baa
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-05-09 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activejob
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: dispatch-rider
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: bundler
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.7'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.7'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rake
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '10.0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '10.0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rspec
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: codeclimate-test-reporter
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ description: "'ActiveJob::DispatchRider' adds `DispatchRider` support for `ActiveJob`."
99
+ email:
100
+ - more.ron.too@gmail.com
101
+ - frederickbaa@gmail.com
102
+ executables: []
103
+ extensions: []
104
+ extra_rdoc_files: []
105
+ files:
106
+ - ".gitignore"
107
+ - ".rspec"
108
+ - Gemfile
109
+ - README.md
110
+ - Rakefile
111
+ - activejob-dispatch_rider.gemspec
112
+ - circle.yml
113
+ - lib/activejob/dispatch_rider.rb
114
+ - lib/activejob/dispatch_rider/version.rb
115
+ - lib/activejob/queue_adapters/dispatch_rider_adapter.rb
116
+ - lib/dispatch_rider_active_job_handler.rb
117
+ - spec/activejob/queue_adapters/dispatch_rider_adapter_spec.rb
118
+ - spec/dispatch_rider_active_job_handler_spec.rb
119
+ - spec/spec_helper.rb
120
+ homepage: https://github.com/payrollhero/activejob-dispatch_rider
121
+ licenses:
122
+ - BSD-3-Clause
123
+ metadata: {}
124
+ post_install_message:
125
+ rdoc_options: []
126
+ require_paths:
127
+ - lib
128
+ required_ruby_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ requirements: []
139
+ rubyforge_project:
140
+ rubygems_version: 2.2.2
141
+ signing_key:
142
+ specification_version: 4
143
+ summary: "'ActiveJob::DispatchRider' adds `DispatchRider` support for `ActiveJob`."
144
+ test_files:
145
+ - spec/activejob/queue_adapters/dispatch_rider_adapter_spec.rb
146
+ - spec/dispatch_rider_active_job_handler_spec.rb
147
+ - spec/spec_helper.rb
148
+ has_rdoc: