activejob-dispatch_rider 1.0.0 → 2.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: ad8cd41d0e457743dd03943aba4efc40af19e52c
4
- data.tar.gz: 5e59ba98d4aa917747e82772361b46ab3b3e3fd0
2
+ SHA256:
3
+ metadata.gz: db7c7477074fd23481d8a9b69e679543200f5102e9c50793edef4b329f211831
4
+ data.tar.gz: 14afa06d887d740449067514cfc74e98665f31da6fdc5bab1f73c72288624ac5
5
5
  SHA512:
6
- metadata.gz: 47b37f3ba16b43eb15f8fbbbf22303befdc0064e940d78ea5893c45ed8685c4adfce13caaf5e155b702d4f1cb276fa99aaefb99af58476dbb989cde3677a9599
7
- data.tar.gz: 10c278700fc385c817c430e0f9a5ad6bb87b689674b4d7bdac4179288a20839759e085f0eb8fd8daee401c2f3664c423dbcbc48b042895510ed110764291dce4
6
+ metadata.gz: e0e2644b009e6def66cbfca386d03f9120db66203ee4332922f47a2d2c69bb7eab2f31ecaa9348b6eb5f104b8db9954a211f8e8aace6008130194ba02dc9058a
7
+ data.tar.gz: c755ec69b3923b912c8d9d77095343ce1da6f2a6acd2bf7907f22a85987422bf4a7fafc97fff5e2c3207f8811e4d46e2eecddabdf3c45b92d65c397c8d11a6a2
data/.gitignore CHANGED
@@ -7,6 +7,7 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ spectmp
10
11
  *.bundle
11
12
  *.so
12
13
  *.o
data/.travis.yml ADDED
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+ addons:
3
+ apt:
4
+ packages:
5
+ - libgmp-dev
6
+ rvm:
7
+ - 2.4.6
8
+ - 2.5.5
9
+ - 2.6.3
10
+ script: "bundle exec rspec"
11
+
data/README.md CHANGED
@@ -139,3 +139,9 @@ CallAndWelcomeCustomer.perform_later Customer.find_by_name!("Smith"),
139
139
  3. Commit your changes (`git commit -am 'Add some feature'`)
140
140
  4. Push to the branch (`git push origin my-new-feature`)
141
141
  5. Create a new Pull Request
142
+
143
+ ## Contributors
144
+
145
+ Special thanks to those who contributed to this project. :smile:
146
+
147
+ * [@fredbaa](https://github.com/fredbaa)
@@ -18,10 +18,10 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "activejob"
22
- spec.add_dependency "dispatch-rider"
21
+ spec.add_dependency "activejob", '~> 5.1.0'
22
+ spec.add_dependency "dispatch-rider", "~> 1.7"
23
23
  spec.add_development_dependency "bundler", "~> 1.7"
24
24
  spec.add_development_dependency "rake", "~> 10.0"
25
25
  spec.add_development_dependency "rspec"
26
- spec.add_development_dependency "codeclimate-test-reporter"
26
+ spec.add_development_dependency "sqlite3"
27
27
  end
@@ -1,12 +1,15 @@
1
- require "activejob/dispatch_rider/version"
2
1
  require "active_job"
3
2
  require "dispatch-rider"
4
- require "dispatch_rider_active_job_handler"
5
3
 
6
4
  module ActiveJob
7
5
  module DispatchRider
8
- # Your code goes here...
9
6
  end
10
7
  end
11
8
 
12
- require "activejob/queue_adapters/dispatch_rider_adapter"
9
+ require_relative "dispatch_rider/version"
10
+ require_relative "dispatch_rider/job_handler"
11
+ require_relative "dispatch_rider/handler_registrar_fallback"
12
+ require_relative "queue_adapters/dispatch_rider_adapter"
13
+
14
+ # Handle all unregistered messages as messages coming from ActiveJobs.
15
+ DispatchRider::Registrars::Handler.prepend ActiveJob::DispatchRider::HandlerRegistrarFallback
@@ -0,0 +1,16 @@
1
+ module ActiveJob
2
+ module DispatchRider
3
+ # This module is prepended to `DispatchRider::Registrars::Handler` to allow it to cover any
4
+ # ActiveJob messages. The assumption is that if the message's subject doesn't have a registered
5
+ # native `DispatchRider::Handler` then the job is delegated to
6
+ # `ActiveJob::DispatchRider::JobHandler`. `ActiveJob::DispatchRider::JobHandler` essentially
7
+ # just let ActiveJob process the message as it would process them normally.
8
+ module HandlerRegistrarFallback
9
+ def fetch(*)
10
+ super
11
+ rescue ::DispatchRider::NotRegistered
12
+ JobHandler
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,10 @@
1
+ module ActiveJob
2
+ module DispatchRider
3
+ # Generic DispatchRider handler for ActiveJob.
4
+ class JobHandler < ::DispatchRider::Handlers::Base
5
+ def process(job_data)
6
+ ::ActiveJob::Base.execute job_data
7
+ end
8
+ end
9
+ end
10
+ end
@@ -1,5 +1,5 @@
1
1
  module ActiveJob
2
2
  module DispatchRider
3
- VERSION = "1.0.0"
3
+ VERSION = "2.1.0"
4
4
  end
5
5
  end
@@ -2,21 +2,17 @@ module ActiveJob
2
2
  module QueueAdapters
3
3
  # Adds support for DispatchRider to ActiveJob.
4
4
  class DispatchRiderAdapter
5
- class << self
6
5
  # @param [ActiveJob::Base] job
7
6
  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
- }
7
+ publisher.publish job_details_for(job)
13
8
  end
14
9
 
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"
10
+ # @param [ActiveJob::Base] job
11
+ # @param [Float] scheduled_at - float representing time (blame AJ)
12
+ def enqueue_at(job, scheduled_at)
13
+ scheduled_job_details = job_details_for(job).merge(scheduled_at: Time.at(scheduled_at))
14
+
15
+ ::DispatchRider::ScheduledJob.create! scheduled_job_details
20
16
  end
21
17
 
22
18
  private
@@ -24,7 +20,16 @@ module ActiveJob
24
20
  def publisher
25
21
  @publisher ||= ::DispatchRider::Publisher.new
26
22
  end
27
- end
23
+
24
+ def job_details_for(job)
25
+ {
26
+ destinations: Array(job.queue_name),
27
+ message: {
28
+ subject: job.class.name.underscore,
29
+ body: job.serialize.merge(guid: job.job_id)
30
+ }
31
+ }
32
+ end
28
33
  end
29
34
  end
30
35
  end
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe DispatchRiderActiveJobHandler do
3
+ describe ActiveJob::DispatchRider::JobHandler do
4
4
 
5
5
  let!(:job_class) {
6
6
  job_class = Class.new(ActiveJob::Base) do
@@ -27,7 +27,7 @@ describe DispatchRiderActiveJobHandler do
27
27
  "_aj_symbol_keys" => ["foo"]
28
28
  }
29
29
  ],
30
- "guid" => "d9188320-580d-481f-a579-c3c521beccb8",
30
+ "guid" => "8b71ac6b-2854-4287-8d1b-15085b70280b",
31
31
  }
32
32
  }
33
33
 
@@ -50,8 +50,9 @@ describe ActiveJob::QueueAdapters::DispatchRiderAdapter do
50
50
  example("queued item") {
51
51
  foo_job_class.perform_later foo: "bar"
52
52
 
53
- expect(foo_queued_item["subject"]).to eq("dispatch_rider_active_job_handler")
53
+ expect(foo_queued_item["subject"]).to eq("foo_aj_job")
54
54
  expect(foo_queued_item["body"]["job_class"]).to eq("FooAjJob")
55
+ expect(foo_queued_item["body"]["guid"]).to eq(foo_queued_item["body"]["job_id"])
55
56
  expect(foo_queued_item["body"]["queue_name"]).to eq("foo")
56
57
  expect(foo_queued_item["body"]["arguments"].first).to include("foo" => "bar")
57
58
  }
@@ -64,10 +65,15 @@ describe ActiveJob::QueueAdapters::DispatchRiderAdapter do
64
65
  end
65
66
 
66
67
  describe ".enqueue_at" do
67
- let(:job) { double :job }
68
- let(:timestamp) { Time.now }
68
+ let(:tomorrow_midnight) { Date.tomorrow.midnight }
69
69
 
70
- example { expect { adapter.enqueue_at job, timestamp }.to raise_error NotImplementedError }
70
+ example {
71
+ expect {
72
+ foo_job_class.set(wait_until: tomorrow_midnight).perform_later foo: "bar"
73
+ }.to change(DispatchRider::ScheduledJob, :count).by 1
74
+
75
+ expect(DispatchRider::ScheduledJob.last.scheduled_at).to eq tomorrow_midnight
76
+ }
71
77
  end
72
78
  end
73
79
  end
@@ -0,0 +1,7 @@
1
+ require "spec_helper"
2
+
3
+ describe DispatchRider::Registrars::Handler do
4
+ subject(:registrar) { described_class.new }
5
+
6
+ example { expect(registrar.fetch "foo").to eq ActiveJob::DispatchRider::JobHandler }
7
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,4 @@
1
- require "codeclimate-test-reporter"
2
- CodeClimate::TestReporter.start
1
+ require "sqlite3"
3
2
 
4
3
  require "activejob/dispatch_rider"
5
4
 
@@ -109,4 +108,20 @@ RSpec.configure do |config|
109
108
  # as the one that triggered the failure.
110
109
  Kernel.srand config.seed
111
110
  =end
111
+
112
+ config.before(:suite) do
113
+ FileUtils.mkdir_p "tmp"
114
+ FileUtils.rm_f "tmp/lite.db"
115
+ FileUtils.rm_rf "spectmp"
116
+ SQLite3::Database.new "tmp/lite.db"
117
+ ActiveRecord::Base.establish_connection adapter: :sqlite3, database: File.dirname(__FILE__) + "tmp/lite.db"
118
+ ActiveRecord::Schema.define(version: 1) do
119
+ extend DispatchRider::ScheduledJob::Migration
120
+ create_scheduled_jobs_table
121
+ end
122
+ end
123
+
124
+ config.after do
125
+ DispatchRider::ScheduledJob.destroy_all
126
+ end
112
127
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activejob-dispatch_rider
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ronald Maravilla
@@ -9,36 +9,36 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-05-09 00:00:00.000000000 Z
12
+ date: 2021-08-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activejob
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '0'
20
+ version: 5.1.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ">="
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '0'
27
+ version: 5.1.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: dispatch-rider
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '0'
34
+ version: '1.7'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ">="
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '0'
41
+ version: '1.7'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: bundler
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -82,7 +82,7 @@ dependencies:
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
- name: codeclimate-test-reporter
85
+ name: sqlite3
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
88
  - - ">="
@@ -105,17 +105,20 @@ extra_rdoc_files: []
105
105
  files:
106
106
  - ".gitignore"
107
107
  - ".rspec"
108
+ - ".travis.yml"
108
109
  - Gemfile
109
110
  - README.md
110
111
  - Rakefile
111
112
  - activejob-dispatch_rider.gemspec
112
113
  - circle.yml
113
114
  - lib/activejob/dispatch_rider.rb
115
+ - lib/activejob/dispatch_rider/handler_registrar_fallback.rb
116
+ - lib/activejob/dispatch_rider/job_handler.rb
114
117
  - lib/activejob/dispatch_rider/version.rb
115
118
  - lib/activejob/queue_adapters/dispatch_rider_adapter.rb
116
- - lib/dispatch_rider_active_job_handler.rb
119
+ - spec/activejob/dispatch_rider/job_handler_spec.rb
117
120
  - spec/activejob/queue_adapters/dispatch_rider_adapter_spec.rb
118
- - spec/dispatch_rider_active_job_handler_spec.rb
121
+ - spec/dispatch_rider/registrars/handler_spec.rb
119
122
  - spec/spec_helper.rb
120
123
  homepage: https://github.com/payrollhero/activejob-dispatch_rider
121
124
  licenses:
@@ -136,13 +139,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
139
  - !ruby/object:Gem::Version
137
140
  version: '0'
138
141
  requirements: []
139
- rubyforge_project:
140
- rubygems_version: 2.2.2
142
+ rubygems_version: 3.0.9
141
143
  signing_key:
142
144
  specification_version: 4
143
145
  summary: "'ActiveJob::DispatchRider' adds `DispatchRider` support for `ActiveJob`."
144
146
  test_files:
147
+ - spec/activejob/dispatch_rider/job_handler_spec.rb
145
148
  - spec/activejob/queue_adapters/dispatch_rider_adapter_spec.rb
146
- - spec/dispatch_rider_active_job_handler_spec.rb
149
+ - spec/dispatch_rider/registrars/handler_spec.rb
147
150
  - spec/spec_helper.rb
148
- has_rdoc:
@@ -1,6 +0,0 @@
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