delayed_job_mongoid 2.1.0 → 2.2.0

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
  SHA1:
3
- metadata.gz: 824ab3dc83ed1613e9e2ece9ed703a411aba94d3
4
- data.tar.gz: 6a286aae4db6c1efbce2fe0449f88fc652ef6f03
3
+ metadata.gz: 4e1ed70a5ed5d07ef9104c2cb19cf41fc68a0694
4
+ data.tar.gz: 3793796caa8f4eddfd982441c9a5ddfd71fb2b18
5
5
  SHA512:
6
- metadata.gz: 8134c2be8e5a26297c7c1713791357ce47bbf3d510362748f6726e122addd90dda2f5619c842dca2c66e7100a4879f0c0924ea0eb9af3796d0905f605df57b65
7
- data.tar.gz: 68ef96228c0e632607e623208d0be3b4cbcc090e9107b080ee1a635ef62dc21f38d8b3604ce705db0efdf2278bc22cc5973e3d4113a385102a216883d1a59912
6
+ metadata.gz: c96d5a0fca52cf64119effbade77ea6c03df555074ed5d677dd58224ff842ed253dc95d819af51d3f7222ecc0cea221ac43e70776ebb4341a52ef13ebc7909e4
7
+ data.tar.gz: 90ec0f2f1f953ddcc7e56632b7ed36843b921ad1853873daf198c3742a861aef1a642e73b9ca94808849f00e2e282393c6cdf1876fccd67718033dcad24cb3c6
@@ -1,10 +1,18 @@
1
- Next Release
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
 
@@ -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']
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 Rakefile delayed_job_mongoid.gemspec]
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.test_files = Dir.glob('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 this job for the worker.
32
+ # Reserves one job for the worker.
32
33
  #
33
- # Uses Mongo's findAndModify operation to atomically pick and lock one
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
- {:locked_at => {'$lt' => (right_now - max_run_time)}}
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.desc(:locked_by).asc(:priority).asc(:run_at).find_and_modify(
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
- # to avoid `failed with error "unauthorized"` errors in Mongoid 4.0.alpha2
69
- ::Mongoid.default_session.disconnect
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
@@ -2,7 +2,7 @@
2
2
  # clear Mongoid::IdentityMap before each job
3
3
  #
4
4
 
5
- if Delayed::Backend::Mongoid.mongoid3?
5
+ if ::Mongoid::Compatibility::Version.mongoid3?
6
6
  module Delayed
7
7
  module Plugins
8
8
  class ClearIdentityMap < Plugin
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.1.0
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: 2014-05-09 00:00:00.000000000 Z
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: '5'
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: '5'
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.2.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]
@@ -1,5 +0,0 @@
1
- require 'helper'
2
-
3
- describe Delayed::Backend::Mongoid::Job do
4
- it_behaves_like 'a delayed_job backend'
5
- end
@@ -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
@@ -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