delayed_job_mongoid 2.1.0 → 2.2.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 +4 -4
- data/CHANGELOG.md +12 -4
- data/delayed_job_mongoid.gemspec +4 -6
- data/lib/delayed/backend/mongoid.rb +31 -12
- data/lib/delayed/plugins.rb +1 -1
- metadata +20 -13
- data/Rakefile +0 -34
- data/spec/delayed_job_mongoid_spec.rb +0 -5
- data/spec/helper.rb +0 -42
- data/spec/plugins_spec.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4e1ed70a5ed5d07ef9104c2cb19cf41fc68a0694
|
4
|
+
data.tar.gz: 3793796caa8f4eddfd982441c9a5ddfd71fb2b18
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c96d5a0fca52cf64119effbade77ea6c03df555074ed5d677dd58224ff842ed253dc95d819af51d3f7222ecc0cea221ac43e70776ebb4341a52ef13ebc7909e4
|
7
|
+
data.tar.gz: 90ec0f2f1f953ddcc7e56632b7ed36843b921ad1853873daf198c3742a861aef1a642e73b9ca94808849f00e2e282393c6cdf1876fccd67718033dcad24cb3c6
|
data/CHANGELOG.md
CHANGED
@@ -1,10 +1,18 @@
|
|
1
|
-
Next
|
2
|
-
|
1
|
+
Next
|
2
|
+
====
|
3
|
+
* Your contribution here.
|
4
|
+
|
5
|
+
2.2.0 - 2015-09-24
|
6
|
+
==================
|
7
|
+
* Support Mongoid 5.0
|
8
|
+
|
9
|
+
2.1.0 - 2014-05-09
|
10
|
+
==================
|
3
11
|
* [#38](https://github.com/collectiveidea/delayed_job_mongoid/pull/38): Fix clearing identity map before each job - [@srleo](https://github.com/srleo)
|
4
12
|
* [#43](https://github.com/collectiveidea/delayed_job_mongoid/pull/43): Compatibility with Mongoid 4.x and Delayed Job 4.x - [@dblock](https://github.com/dblock)
|
5
13
|
|
6
|
-
2.0.0
|
7
|
-
|
14
|
+
2.0.0 - 2012-08-02
|
15
|
+
==================
|
8
16
|
* Added code coverage with SimpleCov - [@sferik](https://github.com/sferik)
|
9
17
|
* Added Mongoid 3.0 support - [@sferik](https://github.com/sferik), [@asavartsov](https://github.com/asavartsov)
|
10
18
|
|
data/delayed_job_mongoid.gemspec
CHANGED
@@ -2,17 +2,15 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.add_dependency 'delayed_job', ['>= 3.0', '< 5']
|
5
|
-
spec.add_dependency 'mongoid', ['>= 3.0', '<
|
5
|
+
spec.add_dependency 'mongoid', ['>= 3.0', '< 6']
|
6
|
+
spec.add_dependency 'mongoid-compatibility'
|
6
7
|
spec.authors = ['Chris Gaffney', 'Brandon Keepers', 'Erik Michaels-Ober']
|
7
8
|
spec.email = ['chris@collectiveidea.com', 'brandon@opensoul.com', 'sferik@gmail.com']
|
8
|
-
spec.files = %w[CHANGELOG.md CONTRIBUTING.md LICENSE.md README.md
|
9
|
-
spec.files += Dir.glob('lib/**/*.rb')
|
10
|
-
spec.files += Dir.glob('spec/**/*')
|
9
|
+
spec.files = %w[CHANGELOG.md CONTRIBUTING.md LICENSE.md README.md delayed_job_mongoid.gemspec] + Dir['lib/**/*.rb']
|
11
10
|
spec.homepage = 'http://github.com/collectiveidea/delayed_job_mongoid'
|
12
11
|
spec.licenses = ['MIT']
|
13
12
|
spec.name = 'delayed_job_mongoid'
|
14
13
|
spec.require_paths = ['lib']
|
15
14
|
spec.summary = 'Mongoid backend for delayed_job'
|
16
|
-
spec.
|
17
|
-
spec.version = '2.1.0'
|
15
|
+
spec.version = '2.2.0'
|
18
16
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'delayed_job'
|
3
3
|
require 'mongoid'
|
4
|
+
require 'mongoid/compatibility'
|
4
5
|
|
5
6
|
module Delayed
|
6
7
|
module Backend
|
@@ -28,29 +29,48 @@ module Delayed
|
|
28
29
|
Time.now.utc
|
29
30
|
end
|
30
31
|
|
31
|
-
# Reserves
|
32
|
+
# Reserves one job for the worker.
|
32
33
|
#
|
33
|
-
#
|
34
|
-
# job from from the collection.
|
34
|
+
# Atomically picks and locks one job from the collection.
|
35
35
|
def self.reserve(worker, max_run_time = Worker.max_run_time)
|
36
36
|
right_now = db_time_now
|
37
37
|
|
38
|
+
criteria = reservation_criteria worker, right_now, max_run_time
|
39
|
+
|
40
|
+
if ::Mongoid::Compatibility::Version.mongoid5?
|
41
|
+
criteria.find_one_and_update(
|
42
|
+
{'$set' => {:locked_at => right_now, :locked_by => worker.name}},
|
43
|
+
:return_document => :after
|
44
|
+
)
|
45
|
+
else
|
46
|
+
criteria.find_and_modify(
|
47
|
+
{'$set' => {:locked_at => right_now, :locked_by => worker.name}},
|
48
|
+
:new => true
|
49
|
+
)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# Mongo criteria matching all the jobs the worker can reserver
|
54
|
+
#
|
55
|
+
# Jobs are sorted by priority and run_at.
|
56
|
+
#
|
57
|
+
# @api private
|
58
|
+
def self.reservation_criteria(worker, right_now, max_run_time)
|
38
59
|
criteria = where(
|
39
60
|
:run_at => {'$lte' => right_now},
|
40
61
|
:failed_at => nil
|
41
62
|
).any_of(
|
42
63
|
{:locked_by => worker.name},
|
43
64
|
{:locked_at => nil},
|
44
|
-
|
65
|
+
:locked_at => {'$lt' => (right_now - max_run_time)}
|
45
66
|
)
|
46
67
|
|
47
68
|
criteria = criteria.gte(:priority => Worker.min_priority.to_i) if Worker.min_priority
|
48
69
|
criteria = criteria.lte(:priority => Worker.max_priority.to_i) if Worker.max_priority
|
49
70
|
criteria = criteria.any_in(:queue => Worker.queues) if Worker.queues.any?
|
71
|
+
criteria = criteria.desc(:locked_by).asc(:priority).asc(:run_at)
|
50
72
|
|
51
|
-
criteria
|
52
|
-
{'$set' => {:locked_at => right_now, :locked_by => worker.name}}, :new => true
|
53
|
-
)
|
73
|
+
criteria
|
54
74
|
end
|
55
75
|
|
56
76
|
# When a worker is exiting, make sure we don't have any locked jobs.
|
@@ -65,13 +85,12 @@ module Delayed
|
|
65
85
|
|
66
86
|
# Hook method that is called after a new worker is forked
|
67
87
|
def self.after_fork
|
68
|
-
|
69
|
-
|
88
|
+
if ::Mongoid::Compatibility::Version.mongoid4?
|
89
|
+
# to avoid `failed with error "unauthorized"` errors in Mongoid 4.0.alpha2
|
90
|
+
::Mongoid.default_session.disconnect
|
91
|
+
end
|
70
92
|
end
|
71
93
|
end
|
72
|
-
def self.mongoid3?
|
73
|
-
::Mongoid.const_defined? :Observer # deprecated in Mongoid 4.x
|
74
|
-
end
|
75
94
|
end
|
76
95
|
end
|
77
96
|
end
|
data/lib/delayed/plugins.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: delayed_job_mongoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Gaffney
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2015-09-24 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: delayed_job
|
@@ -41,7 +41,7 @@ dependencies:
|
|
41
41
|
version: '3.0'
|
42
42
|
- - "<"
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
version: '
|
44
|
+
version: '6'
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
47
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -51,7 +51,21 @@ dependencies:
|
|
51
51
|
version: '3.0'
|
52
52
|
- - "<"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '6'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: mongoid-compatibility
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
description:
|
56
70
|
email:
|
57
71
|
- chris@collectiveidea.com
|
@@ -65,15 +79,11 @@ files:
|
|
65
79
|
- CONTRIBUTING.md
|
66
80
|
- LICENSE.md
|
67
81
|
- README.md
|
68
|
-
- Rakefile
|
69
82
|
- delayed_job_mongoid.gemspec
|
70
83
|
- lib/delayed/backend/mongoid.rb
|
71
84
|
- lib/delayed/plugins.rb
|
72
85
|
- lib/delayed/serialization/mongoid.rb
|
73
86
|
- lib/delayed_job_mongoid.rb
|
74
|
-
- spec/delayed_job_mongoid_spec.rb
|
75
|
-
- spec/helper.rb
|
76
|
-
- spec/plugins_spec.rb
|
77
87
|
homepage: http://github.com/collectiveidea/delayed_job_mongoid
|
78
88
|
licenses:
|
79
89
|
- MIT
|
@@ -94,12 +104,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
94
104
|
version: '0'
|
95
105
|
requirements: []
|
96
106
|
rubyforge_project:
|
97
|
-
rubygems_version: 2.
|
107
|
+
rubygems_version: 2.4.8
|
98
108
|
signing_key:
|
99
109
|
specification_version: 4
|
100
110
|
summary: Mongoid backend for delayed_job
|
101
|
-
test_files:
|
102
|
-
- spec/delayed_job_mongoid_spec.rb
|
103
|
-
- spec/helper.rb
|
104
|
-
- spec/plugins_spec.rb
|
111
|
+
test_files: []
|
105
112
|
has_rdoc:
|
data/Rakefile
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require 'rubygems'
|
3
|
-
require 'bundler/setup'
|
4
|
-
Bundler::GemHelper.install_tasks
|
5
|
-
|
6
|
-
require 'rspec/core/rake_task'
|
7
|
-
desc 'Run the specs'
|
8
|
-
RSpec::Core::RakeTask.new do |r|
|
9
|
-
r.verbose = false
|
10
|
-
end
|
11
|
-
|
12
|
-
task :test => :spec
|
13
|
-
|
14
|
-
begin
|
15
|
-
require 'rubocop/rake_task'
|
16
|
-
Rubocop::RakeTask.new
|
17
|
-
rescue LoadError
|
18
|
-
task :rubocop do
|
19
|
-
$stderr.puts 'Rubocop is disabled'
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
require 'yardstick/rake/measurement'
|
24
|
-
Yardstick::Rake::Measurement.new do |measurement|
|
25
|
-
measurement.output = 'measurement/report.txt'
|
26
|
-
end
|
27
|
-
|
28
|
-
require 'yardstick/rake/verify'
|
29
|
-
Yardstick::Rake::Verify.new do |verify|
|
30
|
-
verify.require_exact_threshold = false
|
31
|
-
verify.threshold = 53.3
|
32
|
-
end
|
33
|
-
|
34
|
-
task :default => [:spec, :rubocop, :verify_measurements]
|
data/spec/helper.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'simplecov'
|
2
|
-
require 'coveralls'
|
3
|
-
|
4
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
5
|
-
SimpleCov::Formatter::HTMLFormatter,
|
6
|
-
Coveralls::SimpleCov::Formatter
|
7
|
-
]
|
8
|
-
|
9
|
-
SimpleCov.start do
|
10
|
-
add_filter '/spec/'
|
11
|
-
minimum_coverage(77.27)
|
12
|
-
end
|
13
|
-
|
14
|
-
require 'rspec'
|
15
|
-
require 'delayed_job_mongoid'
|
16
|
-
require 'delayed/backend/shared_spec'
|
17
|
-
|
18
|
-
RSpec.configure do |config|
|
19
|
-
config.expect_with :rspec do |c|
|
20
|
-
c.syntax = :expect
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
Mongoid.configure do |config|
|
25
|
-
config.connect_to('dl_spec')
|
26
|
-
end
|
27
|
-
|
28
|
-
class Story
|
29
|
-
include ::Mongoid::Document
|
30
|
-
field :text
|
31
|
-
|
32
|
-
def tell
|
33
|
-
text
|
34
|
-
end
|
35
|
-
|
36
|
-
def whatever(n, _)
|
37
|
-
tell * n
|
38
|
-
end
|
39
|
-
def self.count; end
|
40
|
-
|
41
|
-
handle_asynchronously :whatever
|
42
|
-
end
|
data/spec/plugins_spec.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
if Delayed::Backend::Mongoid.mongoid3?
|
4
|
-
describe Delayed::Backend::Mongoid::Job do
|
5
|
-
let(:worker) { Delayed::Worker.new }
|
6
|
-
before do
|
7
|
-
Delayed::Worker.max_priority = nil
|
8
|
-
Delayed::Worker.min_priority = nil
|
9
|
-
Delayed::Worker.default_priority = 99
|
10
|
-
Delayed::Worker.delay_jobs = true
|
11
|
-
SimpleJob.runs = 0
|
12
|
-
described_class.delete_all
|
13
|
-
end
|
14
|
-
after do
|
15
|
-
Delayed::Worker.reset
|
16
|
-
end
|
17
|
-
it 'clears mongoid identity map' do
|
18
|
-
expect(Mongoid::IdentityMap).to receive(:clear).once
|
19
|
-
described_class.enqueue SimpleJob.new, :priority => 5
|
20
|
-
worker.work_off
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|