delayed_job_active_record 0.4.2 → 0.4.3

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.
data/README.md CHANGED
@@ -4,6 +4,7 @@
4
4
  [![Build Status](https://travis-ci.org/collectiveidea/delayed_job_active_record.png)](https://travis-ci.org/collectiveidea/delayed_job_active_record)
5
5
  [![Dependency Status](https://gemnasium.com/collectiveidea/delayed_job_active_record.png)](https://gemnasium.com/collectiveidea/delayed_job_active_record)
6
6
  [![Code Climate](https://codeclimate.com/github/collectiveidea/delayed_job_active_record.png)](https://codeclimate.com/github/collectiveidea/delayed_job_active_record)
7
+ [![Coverage Status](https://coveralls.io/repos/collectiveidea/delayed_job_active_record/badge.png?branch=master)](https://coveralls.io/r/collectiveidea/delayed_job_active_record)
7
8
 
8
9
  ## Installation
9
10
 
@@ -15,5 +15,5 @@ Gem::Specification.new do |spec|
15
15
  spec.require_paths = ['lib']
16
16
  spec.summary = 'ActiveRecord backend for DelayedJob'
17
17
  spec.test_files = Dir.glob("spec/**/*")
18
- spec.version = '0.4.2'
18
+ spec.version = '0.4.3'
19
19
  end
@@ -52,22 +52,14 @@ module Delayed
52
52
  nextScope = nextScope.scoped.by_priority.limit(1)
53
53
 
54
54
  now = self.db_time_now
55
-
56
- if ::ActiveRecord::Base.connection.adapter_name == "PostgreSQL"
57
- # Custom SQL required for PostgreSQL because postgres does not support UPDATE...LIMIT
58
- # This locks the single record 'FOR UPDATE' in the subquery (http://www.postgresql.org/docs/9.0/static/sql-select.html#SQL-FOR-UPDATE-SHARE)
59
- # Note: active_record would attempt to generate UPDATE...LIMIT like sql for postgres if we use a .limit() filter, but it would not use
60
- # 'FOR UPDATE' and we would have many locking conflicts
61
- quotedTableName = ::ActiveRecord::Base.connection.quote_table_name(self.table_name)
62
- subquerySql = nextScope.lock(true).select('id').to_sql
63
- reserved = self.find_by_sql(["UPDATE #{quotedTableName} SET locked_at = ?, locked_by = ? WHERE id IN (#{subquerySql}) RETURNING *",now,worker.name])
64
- return reserved[0]
65
- else
66
- # This works on MySQL and other DBs that support UPDATE...LIMIT. It uses separate queries to lock and return the job
67
- count = nextScope.update_all(:locked_at => now, :locked_by => worker.name)
68
- return nil if count == 0
69
- return self.where(:locked_at => now, :locked_by => worker.name).first
55
+ job = nextScope.first
56
+ return unless job
57
+ job.with_lock do
58
+ job.locked_at = now
59
+ job.locked_by = worker.name
60
+ job.save!
70
61
  end
62
+ job
71
63
  end
72
64
 
73
65
  # Lock this job for this worker.
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'helper'
2
2
  require 'delayed/backend/active_record'
3
3
 
4
4
  describe Delayed::Backend::ActiveRecord::Job do
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'helper'
2
2
 
3
3
  describe ActiveRecord do
4
4
  it "loads classes with non-default primary key" do
@@ -1,9 +1,14 @@
1
- $:.unshift(File.dirname(__FILE__) + '/../lib')
1
+ require 'simplecov'
2
+ require 'coveralls'
3
+
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ]
8
+ SimpleCov.start
2
9
 
3
- require 'rubygems'
4
- require 'bundler/setup'
5
- require 'rspec'
6
10
  require 'logger'
11
+ require 'rspec'
7
12
 
8
13
  require 'delayed_job_active_record'
9
14
  require 'delayed/backend/shared_spec'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delayed_job_active_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-02-26 00:00:00.000000000 Z
14
+ date: 2013-03-02 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activerecord
@@ -75,7 +75,7 @@ files:
75
75
  - spec/database.yml
76
76
  - spec/delayed/backend/active_record_spec.rb
77
77
  - spec/delayed/serialization/active_record_spec.rb
78
- - spec/spec_helper.rb
78
+ - spec/helper.rb
79
79
  homepage: http://github.com/collectiveidea/delayed_job_active_record
80
80
  licenses:
81
81
  - MIT
@@ -91,7 +91,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
91
91
  version: '0'
92
92
  segments:
93
93
  - 0
94
- hash: 4028435250448725028
94
+ hash: -4151912302057659194
95
95
  required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  none: false
97
97
  requirements:
@@ -100,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
100
  version: '0'
101
101
  segments:
102
102
  - 0
103
- hash: 4028435250448725028
103
+ hash: -4151912302057659194
104
104
  requirements: []
105
105
  rubyforge_project:
106
106
  rubygems_version: 1.8.25
@@ -111,4 +111,4 @@ test_files:
111
111
  - spec/database.yml
112
112
  - spec/delayed/backend/active_record_spec.rb
113
113
  - spec/delayed/serialization/active_record_spec.rb
114
- - spec/spec_helper.rb
114
+ - spec/helper.rb