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 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
- If you're using Rails, run the generator to create the migration for the delayed_job table.
12
-
13
- rails g delayed_job:sequel
14
- rake db:migrate
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
- [![Build Status](http://travis-ci.org/TalentBox/delayed_job_sequel.png)](https://travis-ci.org/TalentBox/delayed_job_sequel)
40
+ [![Build Status](https://secure.travis-ci.org/TalentBox/delayed_job_sequel.png?branch=master)](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
- def self.inherited(child)
9
- super
10
- if YAML.parser.class.name =~ /syck/i
11
- child.yaml_as "tag:ruby.yaml.org,2002:#{child.name}"
12
- else
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
- klass[val['values'][klass.primary_key]] ||
23
- raise(Delayed::DeserializationError, "Sequel Record not found, class: #{klass} , primary key: #{val['values'][klass.primary_key]}")
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
- ['@values']
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
- config = YAML.load(File.read("spec/database.yml"))
11
- DB = Sequel.connect config["sqlite"]
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
- Sequel.extension :migration
14
- Class.new(Sequel::Migration) do
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
- create_table :stories do
33
- primary_key :story_id
34
- String :text
35
- TrueClass :scoped, :default => true
36
- end
37
- end
38
- end.apply(DB, :up)
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: 2012-02-15 00:00:00.000000000 Z
12
+ date: 2013-01-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: sequel
16
- requirement: &2161185360 !ruby/object:Gem::Requirement
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
- name: delayed_job
27
- requirement: &2160614300 !ruby/object:Gem::Requirement
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
- name: tzinfo
38
- requirement: &2160611720 !ruby/object:Gem::Requirement
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
- name: rspec
49
- requirement: &2160609540 !ruby/object:Gem::Requirement
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
- name: rake
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: -179484122693818536
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: -179484122693818536
138
+ hash: 906385450237190959
139
+ none: false
127
140
  requirements: []
128
141
  rubyforge_project:
129
- rubygems_version: 1.8.10
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
@@ -1,4 +0,0 @@
1
- sqlite:
2
- adapter: sqlite
3
- database: ":memory:"
4
-