talentbox-delayed_job_sequel 0.1.0 → 0.1.1
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 +28 -6
- data/lib/delayed/backend/sequel.rb +10 -1
- data/lib/delayed/serialization/sequel.rb +9 -9
- data/spec/delayed/backend/sequel_spec.rb +9 -0
- data/spec/spec_helper.rb +41 -32
- metadata +50 -38
- data/spec/database.yml +0 -4
data/README.md
CHANGED
@@ -1,21 +1,43 @@
|
|
1
1
|
# DelayedJob Sequel Backend
|
2
2
|
|
3
|
+
## Compatibility
|
4
|
+
|
5
|
+
This gem works on Ruby (MRI/CRuby) 1.8.x, 1.9.x and Rubinius (1.8 and 1.9 mode).
|
6
|
+
|
7
|
+
But beware, if you're running it on Ruby (MRI/CRuby) 1.8.x or Rubinius in 1.8 mode you need
|
8
|
+
to use a version of Sequel <= 3.28.0.
|
9
|
+
|
10
|
+
It's strongly recommended to use a Ruby 1.9.x version.
|
11
|
+
|
3
12
|
## Installation
|
4
13
|
|
5
14
|
Add the gem to your Gemfile:
|
6
15
|
|
7
|
-
gem 'delayed_job_sequel'
|
16
|
+
gem 'talentbox-delayed_job_sequel'
|
8
17
|
|
9
18
|
Run `bundle install`.
|
10
19
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
20
|
+
Create the table (using the sequel migration syntax):
|
21
|
+
|
22
|
+
create_table :delayed_jobs do
|
23
|
+
primary_key :id
|
24
|
+
Integer :priority, :default => 0
|
25
|
+
Integer :attempts, :default => 0
|
26
|
+
String :handler, :text => true
|
27
|
+
String :last_error, :text => true
|
28
|
+
Time :run_at
|
29
|
+
Time :locked_at
|
30
|
+
Time :failed_at
|
31
|
+
String :locked_by
|
32
|
+
String :queue
|
33
|
+
Time :created_at
|
34
|
+
Time :updated_at
|
35
|
+
index [:priority, :run_at]
|
36
|
+
end
|
15
37
|
|
16
38
|
## Build Status
|
17
39
|
|
18
|
-
[](http://travis-ci.org/TalentBox/delayed_job_sequel)
|
19
41
|
|
20
42
|
## How to contribute
|
21
43
|
|
@@ -117,7 +117,15 @@ module Delayed
|
|
117
117
|
yield
|
118
118
|
end
|
119
119
|
end
|
120
|
-
|
120
|
+
|
121
|
+
def self.count(attrs={})
|
122
|
+
if attrs.respond_to?(:has_key?) && attrs.has_key?(:conditions)
|
123
|
+
self.where(attrs[:conditions]).count
|
124
|
+
else
|
125
|
+
super()
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
121
129
|
# The default behaviour for sequel on #==/#eql? is to check if all
|
122
130
|
# values are matching.
|
123
131
|
# This differs from ActiveRecord which checks class and id only.
|
@@ -125,6 +133,7 @@ module Delayed
|
|
125
133
|
def eql?(obj)
|
126
134
|
(obj.class == model) && (obj.pk == pk)
|
127
135
|
end
|
136
|
+
|
128
137
|
end
|
129
138
|
end
|
130
139
|
end
|
@@ -1,15 +1,14 @@
|
|
1
1
|
require "sequel/model"
|
2
|
-
|
3
2
|
module Delayed
|
4
3
|
module Serialization
|
5
4
|
module Sequel
|
6
5
|
def self.configure(klass)
|
7
6
|
klass.class_eval do
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
7
|
+
if YAML.parser.class.name =~ /syck/i
|
8
|
+
yaml_as "tag:ruby.yaml.org,2002:Sequel"
|
9
|
+
else
|
10
|
+
def self.inherited(child)
|
11
|
+
super
|
13
12
|
child.yaml_as ['!ruby/Sequel', child.name].join(':')
|
14
13
|
end
|
15
14
|
end
|
@@ -19,8 +18,9 @@ module Delayed
|
|
19
18
|
if YAML.parser.class.name =~ /syck/i
|
20
19
|
module ClassMethods
|
21
20
|
def yaml_new(klass, tag, val)
|
22
|
-
|
23
|
-
|
21
|
+
pk = val["values"][klass.primary_key]
|
22
|
+
klass[pk] ||
|
23
|
+
raise(Delayed::DeserializationError, "Sequel Record not found, class: #{klass} , primary key: #{pk}")
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
@@ -28,7 +28,7 @@ module Delayed
|
|
28
28
|
module InstanceMethods
|
29
29
|
if YAML.parser.class.name =~ /syck/i
|
30
30
|
def to_yaml_properties
|
31
|
-
[
|
31
|
+
["@values"]
|
32
32
|
end
|
33
33
|
else
|
34
34
|
def encode_with(coder)
|
@@ -8,6 +8,15 @@ describe Delayed::Backend::Sequel::Job do
|
|
8
8
|
|
9
9
|
it_should_behave_like "a delayed_job backend"
|
10
10
|
|
11
|
+
context ".count" do
|
12
|
+
it "allow using ActiveRecord like count for NewRelic sampler" do
|
13
|
+
expect do
|
14
|
+
Delayed::Job.count(:conditions => "failed_at is not NULL")
|
15
|
+
Delayed::Job.count(:conditions => "locked_by is not NULL")
|
16
|
+
end.to_not raise_error
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
11
20
|
context "db_time_now" do
|
12
21
|
it "should return time in current time zone if set" do
|
13
22
|
Time.zone = "Eastern Time (US & Canada)"
|
data/spec/spec_helper.rb
CHANGED
@@ -1,47 +1,59 @@
|
|
1
1
|
$:.unshift(File.dirname(__FILE__) + "/../lib")
|
2
|
+
ENV["RAILS_ENV"] = "test"
|
2
3
|
|
3
4
|
require "rubygems"
|
4
5
|
require "bundler/setup"
|
5
6
|
require "rspec"
|
6
7
|
require "logger"
|
7
|
-
require "sqlite3"
|
8
8
|
require "sequel"
|
9
9
|
|
10
|
-
|
11
|
-
|
10
|
+
DB = case ENV["DB"]
|
11
|
+
when "mysql"
|
12
|
+
begin
|
13
|
+
Sequel.connect :adapter => "mysql2", :database => "delayed_jobs", :test => true
|
14
|
+
rescue Sequel::DatabaseConnectionError
|
15
|
+
system "mysql -e 'CREATE DATABASE IF NOT EXISTS `delayed_jobs` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci'"
|
16
|
+
retry
|
17
|
+
end
|
18
|
+
when "postgres"
|
19
|
+
begin
|
20
|
+
Sequel.connect :adapter => "postgres", :database => "delayed_jobs", :test => true
|
21
|
+
rescue Sequel::DatabaseConnectionError
|
22
|
+
system "createdb --encoding=UTF8 delayed_jobs"
|
23
|
+
retry
|
24
|
+
end
|
25
|
+
else
|
26
|
+
Sequel.sqlite
|
27
|
+
end
|
12
28
|
|
13
|
-
|
14
|
-
|
15
|
-
def up
|
16
|
-
create_table :delayed_jobs do
|
17
|
-
primary_key :id
|
18
|
-
Integer :priority, :default => 0
|
19
|
-
Integer :attempts, :default => 0
|
20
|
-
String :handler, :text => true
|
21
|
-
String :last_error, :text => true
|
22
|
-
column :run_at, :datetime#"timestamp(0)"
|
23
|
-
column :locked_at, :datetime#"timestamp(0)"
|
24
|
-
column :failed_at, :datetime#"timestamp(0)"
|
25
|
-
String :locked_by
|
26
|
-
String :queue
|
27
|
-
Time :created_at
|
28
|
-
Time :updated_at
|
29
|
-
index [:priority, :run_at]
|
30
|
-
end
|
29
|
+
DB.drop_table :delayed_jobs rescue Sequel::DatabaseError
|
30
|
+
DB.drop_table :stories rescue Sequel::DatabaseError
|
31
31
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
32
|
+
DB.create_table :delayed_jobs do
|
33
|
+
primary_key :id
|
34
|
+
Integer :priority, :default => 0
|
35
|
+
Integer :attempts, :default => 0
|
36
|
+
String :handler, :text => true
|
37
|
+
String :last_error, :text => true
|
38
|
+
Time :run_at
|
39
|
+
Time :locked_at
|
40
|
+
Time :failed_at
|
41
|
+
String :locked_by
|
42
|
+
String :queue
|
43
|
+
Time :created_at
|
44
|
+
Time :updated_at
|
45
|
+
index [:priority, :run_at]
|
46
|
+
end
|
47
|
+
DB.create_table :stories do
|
48
|
+
primary_key :story_id
|
49
|
+
String :text
|
50
|
+
TrueClass :scoped, :default => true
|
51
|
+
end
|
39
52
|
|
40
53
|
require "delayed_job_sequel"
|
41
54
|
require "delayed/backend/shared_spec"
|
42
55
|
|
43
56
|
Delayed::Worker.logger = Logger.new("/tmp/dj.log")
|
44
|
-
ENV["RAILS_ENV"] = "test"
|
45
57
|
DB.logger = Delayed::Worker.logger
|
46
58
|
|
47
59
|
# Purely useful for test cases...
|
@@ -53,6 +65,3 @@ class Story < Sequel::Model
|
|
53
65
|
end
|
54
66
|
handle_asynchronously :whatever
|
55
67
|
end
|
56
|
-
|
57
|
-
# Add this directory so the ActiveSupport autoloading works
|
58
|
-
# ActiveSupport::Dependencies.autoload_paths << File.dirname(__FILE__)
|
metadata
CHANGED
@@ -1,82 +1,96 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: talentbox-delayed_job_sequel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0
|
5
4
|
prerelease:
|
5
|
+
version: 0.1.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jonathan Tron
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
|
16
|
-
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.28'
|
17
20
|
none: false
|
21
|
+
prerelease: false
|
22
|
+
name: sequel
|
23
|
+
requirement: !ruby/object:Gem::Requirement
|
18
24
|
requirements:
|
19
25
|
- - ~>
|
20
26
|
- !ruby/object:Gem::Version
|
21
27
|
version: '3.28'
|
28
|
+
none: false
|
22
29
|
type: :runtime
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: *2161185360
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
|
-
|
27
|
-
|
31
|
+
version_requirements: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ~>
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 3.0.0
|
28
36
|
none: false
|
37
|
+
prerelease: false
|
38
|
+
name: delayed_job
|
39
|
+
requirement: !ruby/object:Gem::Requirement
|
29
40
|
requirements:
|
30
41
|
- - ~>
|
31
42
|
- !ruby/object:Gem::Version
|
32
43
|
version: 3.0.0
|
44
|
+
none: false
|
33
45
|
type: :runtime
|
34
|
-
prerelease: false
|
35
|
-
version_requirements: *2160614300
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
|
-
|
38
|
-
|
47
|
+
version_requirements: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ! '>='
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '0'
|
39
52
|
none: false
|
53
|
+
prerelease: false
|
54
|
+
name: tzinfo
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
40
56
|
requirements:
|
41
57
|
- - ! '>='
|
42
58
|
- !ruby/object:Gem::Version
|
43
59
|
version: '0'
|
60
|
+
none: false
|
44
61
|
type: :runtime
|
45
|
-
prerelease: false
|
46
|
-
version_requirements: *2160611720
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
|
-
|
49
|
-
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ~>
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '2.0'
|
50
68
|
none: false
|
69
|
+
prerelease: false
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
51
72
|
requirements:
|
52
73
|
- - ~>
|
53
74
|
- !ruby/object:Gem::Version
|
54
75
|
version: '2.0'
|
76
|
+
none: false
|
55
77
|
type: :development
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: *2160609540
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
|
-
|
60
|
-
requirement: &2161543600 !ruby/object:Gem::Requirement
|
61
|
-
none: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
62
80
|
requirements:
|
63
81
|
- - ~>
|
64
82
|
- !ruby/object:Gem::Version
|
65
83
|
version: '0.8'
|
66
|
-
type: :development
|
67
|
-
prerelease: false
|
68
|
-
version_requirements: *2161543600
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: sqlite3
|
71
|
-
requirement: &2161541640 !ruby/object:Gem::Requirement
|
72
84
|
none: false
|
85
|
+
prerelease: false
|
86
|
+
name: rake
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
73
88
|
requirements:
|
74
|
-
- -
|
89
|
+
- - ~>
|
75
90
|
- !ruby/object:Gem::Version
|
76
|
-
version: '0'
|
91
|
+
version: '0.8'
|
92
|
+
none: false
|
77
93
|
type: :development
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: *2161541640
|
80
94
|
description: Sequel backend for DelayedJob, originally authored by Tobias Luetke
|
81
95
|
email:
|
82
96
|
- jonathan@tron.name
|
@@ -90,7 +104,6 @@ files:
|
|
90
104
|
- lib/delayed_job_sequel.rb
|
91
105
|
- lib/generators/delayed_job/sequel_generator.rb
|
92
106
|
- lib/generators/delayed_job/templates/migration.rb
|
93
|
-
- spec/database.yml
|
94
107
|
- spec/delayed/backend/sequel_spec.rb
|
95
108
|
- spec/delayed/serialization/sequel_spec.rb
|
96
109
|
- spec/spec_helper.rb
|
@@ -107,31 +120,30 @@ rdoc_options:
|
|
107
120
|
require_paths:
|
108
121
|
- lib
|
109
122
|
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
-
none: false
|
111
123
|
requirements:
|
112
124
|
- - ! '>='
|
113
125
|
- !ruby/object:Gem::Version
|
114
126
|
version: '0'
|
115
127
|
segments:
|
116
128
|
- 0
|
117
|
-
hash:
|
118
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
|
+
hash: 906385450237190959
|
119
130
|
none: false
|
131
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
132
|
requirements:
|
121
133
|
- - ! '>='
|
122
134
|
- !ruby/object:Gem::Version
|
123
135
|
version: '0'
|
124
136
|
segments:
|
125
137
|
- 0
|
126
|
-
hash:
|
138
|
+
hash: 906385450237190959
|
139
|
+
none: false
|
127
140
|
requirements: []
|
128
141
|
rubyforge_project:
|
129
|
-
rubygems_version: 1.8.
|
142
|
+
rubygems_version: 1.8.24
|
130
143
|
signing_key:
|
131
144
|
specification_version: 3
|
132
145
|
summary: Sequel backend for DelayedJob
|
133
146
|
test_files:
|
134
|
-
- spec/database.yml
|
135
147
|
- spec/delayed/backend/sequel_spec.rb
|
136
148
|
- spec/delayed/serialization/sequel_spec.rb
|
137
149
|
- spec/spec_helper.rb
|
data/spec/database.yml
DELETED