talentbox-delayed_job_sequel 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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
-