talentbox-delayed_job_sequel 4.3.0 → 4.4.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8b27b56543c6f834b32df106575fdabc9320e401
4
- data.tar.gz: 2d6077064b7ce9fc38d543ad6055d8ddfc7ae6de
2
+ SHA256:
3
+ metadata.gz: 9df8379a22448df5d83e80a07c9203f4f18a3a92b26b2adbdd58c3b34439edd6
4
+ data.tar.gz: 69c7e61e93e6125950d41839f5547c3bfd9151b41aaa4500b0efe729bb34d0d7
5
5
  SHA512:
6
- metadata.gz: 77472993bc21cf97075217409ae09f528f74887eb6ebf5f163d855a6703519e1a96e22d08efc8dd51ae73c007e90edbdd987680c0af780d0c6691436def24d71
7
- data.tar.gz: 823c43ae1aaf0d783879187ed129e0f07e7665a04f44b0be97f2e1ef66dc52071c8444c7cb259ee488027cdc3dd84b952b794b8096bc9938a43757ef47149c59
6
+ metadata.gz: 7e561a008f43677037414d62dfb26a258630dc041ede13b3afc08bb4bcda8d756925274995a4af26a42889f598a00bacee543fe28475b839e2fba9fe50576904
7
+ data.tar.gz: 05a2b56eedc5e54c0a56dec32179bc3a5fcbb11d30814d80b87002de8f5c32928c5ceb92f45e7a7f96e49132c8f5be95ba15670841eeb2cbca3d1222adeafb11
data/README.md CHANGED
@@ -1,13 +1,12 @@
1
1
  # DelayedJob Sequel Backend
2
2
 
3
- [![Build Status](https://secure.travis-ci.org/TalentBox/delayed_job_sequel.png?branch=master)](http://travis-ci.org/TalentBox/delayed_job_sequel)
4
- [![Code Climate](https://codeclimate.com/github/TalentBox/delayed_job_sequel.png)](https://codeclimate.com/github/TalentBox/delayed_job_sequel)
3
+ [![CI](https://github.com/TalentBox/delayed_job_sequel/actions/workflows/ci.yml/badge.svg)](https://github.com/TalentBox/delayed_job_sequel/actions/workflows/ci.yml)
5
4
 
6
5
  ## Compatibility
7
6
 
8
- This gem works on Ruby (MRI/CRuby) 1.9.3 and 2.0.x.
7
+ This gem is tested to work on `Ruby` (MRI/CRuby) `>= 3.4`, `Sequel` `~> 5.0`, and `DelayedJob` `~> 4.1`.
9
8
 
10
- It's strongly recommended to use a Ruby >= 1.9.3 version.
9
+ It should work with older Ruby/Sequel/DelayedJob combinations, but we don't test those anymore.
11
10
 
12
11
  ## Installation
13
12
 
@@ -53,6 +52,7 @@ Improvements has been made by those awesome contributors:
53
52
  * James Goodhouse (@jamesgoodhouse)
54
53
  * Lyle Franklin (@ljfranklin)
55
54
  * Florent Piteau (@flop)
55
+ * Pedro Fayolle (@pilaf)
56
56
 
57
57
  ## How to contribute
58
58
 
@@ -20,10 +20,10 @@ module Delayed
20
20
  filter do
21
21
  (
22
22
  (run_at <= db_time_now) &
23
- ::Sequel.expr(:locked_at => nil) |
23
+ ::Sequel.expr(locked_at: nil) |
24
24
  (::Sequel.expr(:locked_at) < lock_upper_bound) |
25
- {:locked_by => worker_name}
26
- ) & {:failed_at => nil}
25
+ {locked_by: worker_name}
26
+ ) & {failed_at: nil}
27
27
  end
28
28
  end
29
29
 
@@ -41,7 +41,7 @@ module Delayed
41
41
 
42
42
  # When a worker is exiting, make sure we don't have any locked jobs.
43
43
  def self.clear_locks!(worker_name)
44
- filter(:locked_by => worker_name).update(:locked_by => nil, :locked_at => nil)
44
+ filter(locked_by: worker_name).update(locked_by: nil, locked_at: nil)
45
45
  end
46
46
 
47
47
  # adapted from
@@ -51,7 +51,7 @@ module Delayed
51
51
 
52
52
  ds = ds.filter(::Sequel.lit("priority >= ?", Worker.min_priority)) if Worker.min_priority
53
53
  ds = ds.filter(::Sequel.lit("priority <= ?", Worker.max_priority)) if Worker.max_priority
54
- ds = ds.filter(:queue => Worker.queues) if Worker.queues.any?
54
+ ds = ds.filter(queue: Worker.queues) if Worker.queues.any?
55
55
  ds = ds.by_priority
56
56
 
57
57
  case ::Sequel::Model.db.database_type
@@ -70,7 +70,7 @@ module Delayed
70
70
  if job = ds.first
71
71
  job.locked_at = self.db_time_now
72
72
  job.locked_by = worker.name
73
- job.save(:raise_on_failure => true)
73
+ job.save(raise_on_failure: true)
74
74
  job
75
75
  end
76
76
  end
@@ -108,7 +108,7 @@ module Delayed
108
108
  end
109
109
 
110
110
  def save!
111
- save :raise_on_failure => true
111
+ save raise_on_failure: true
112
112
  end
113
113
 
114
114
  def update_attributes(attrs)
@@ -116,7 +116,7 @@ module Delayed
116
116
  end
117
117
 
118
118
  def self.create!(attrs)
119
- new(attrs).save :raise_on_failure => true
119
+ new(attrs).save raise_on_failure: true
120
120
  end
121
121
 
122
122
  def self.silence_log(&block)
@@ -1,8 +1,8 @@
1
1
  class CreateDelayedJobs < ActiveRecord::Migration
2
2
  def self.up
3
- create_table :delayed_jobs, :force => true do |table|
4
- table.integer :priority, :default => 0 # Allows some jobs to jump to the front of the queue
5
- table.integer :attempts, :default => 0 # Provides for retries, but still fail eventually.
3
+ create_table :delayed_jobs, force: true do |table|
4
+ table.integer :priority, default: 0 # Allows some jobs to jump to the front of the queue
5
+ table.integer :attempts, default: 0 # Provides for retries, but still fail eventually.
6
6
  table.text :handler # YAML-encoded string of the object that will do work
7
7
  table.text :last_error # reason for last failure (See Note below)
8
8
  table.datetime :run_at # When to run. Could be Time.zone.now for immediately, or sometime in the future.
@@ -13,7 +13,7 @@ class CreateDelayedJobs < ActiveRecord::Migration
13
13
  table.timestamps
14
14
  end
15
15
 
16
- add_index :delayed_jobs, [:priority, :run_at], :name => 'delayed_jobs_priority'
16
+ add_index :delayed_jobs, [:priority, :run_at], name: 'delayed_jobs_priority'
17
17
  end
18
18
 
19
19
  def self.down
@@ -49,10 +49,10 @@ describe Delayed::Backend::Sequel::Job do
49
49
  described_class.create(failed_at: Time.now)
50
50
  expect do
51
51
  expect(
52
- Delayed::Job.count(:conditions => "failed_at is not NULL")
52
+ Delayed::Job.count(conditions: "failed_at is not NULL")
53
53
  ).to eq 1
54
54
  expect(
55
- Delayed::Job.count(:conditions => "locked_by is not NULL")
55
+ Delayed::Job.count(conditions: "locked_by is not NULL")
56
56
  ).to eq 0
57
57
  end.to_not raise_error
58
58
  end
@@ -62,10 +62,10 @@ describe Delayed::Backend::Sequel::Job do
62
62
  described_class.create(queue: "important", priority: 1)
63
63
  expect do
64
64
  expect(
65
- Delayed::Job.count(:group => "queue", :conditions => ['run_at < ? and failed_at is NULL', Time.now])
65
+ Delayed::Job.count(group: "queue", conditions: ['run_at < ? and failed_at is NULL', Time.now])
66
66
  ).to match_array [["slow", 1], ["important", 1]]
67
67
  expect(
68
- Delayed::Job.count(:group => "priority", :conditions => ['run_at < ? and failed_at is NULL', Time.now])
68
+ Delayed::Job.count(group: "priority", conditions: ['run_at < ? and failed_at is NULL', Time.now])
69
69
  ).to match_array [[1, 1], [2, 1]]
70
70
  end.to_not raise_error
71
71
  end
@@ -107,7 +107,7 @@ describe Delayed::Backend::Sequel::Job do
107
107
  describe "enqueue" do
108
108
  it "should allow enqueue hook to modify job at DB level" do
109
109
  later = described_class.db_time_now + 20.minutes
110
- job = Delayed::Backend::Sequel::Job.enqueue :payload_object => EnqueueJobMod.new
110
+ job = Delayed::Backend::Sequel::Job.enqueue payload_object: EnqueueJobMod.new
111
111
  expect(
112
112
  Delayed::Backend::Sequel::Job[job.id].run_at
113
113
  ).to be_within(1).of(later)
@@ -115,16 +115,16 @@ describe Delayed::Backend::Sequel::Job do
115
115
  end
116
116
  end
117
117
 
118
- describe Delayed::Backend::Sequel::Job, "override table name" do
118
+ describe Delayed::Backend::Sequel::Job, "override table name", :postgres do
119
119
  it "allows to override the table name" do
120
- ::Sequel::Model.db.transaction :rollback => :always do
120
+ ::Sequel::Model.db.transaction rollback: :always do
121
121
  begin
122
122
  DB.create_table :another_delayed_jobs do
123
123
  primary_key :id
124
- Integer :priority, :default => 0
125
- Integer :attempts, :default => 0
126
- String :handler, :text => true
127
- String :last_error, :text => true
124
+ Integer :priority, default: 0
125
+ Integer :attempts, default: 0
126
+ String :handler, text: true
127
+ String :last_error, text: true
128
128
  Time :run_at
129
129
  Time :locked_at
130
130
  Time :failed_at
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe Sequel::Model do
4
4
  it 'should load classes with non-default primary key' do
5
5
  expect do
6
- YAML.load(Story.create.to_yaml)
6
+ YAML.safe_load(Story.create.to_yaml, permitted_classes: [Story, Symbol])
7
7
  end.not_to raise_error
8
8
  end
9
9
  end
data/spec/spec_helper.rb CHANGED
@@ -11,28 +11,59 @@ def jruby?
11
11
  (defined?(RUBY_ENGINE) && RUBY_ENGINE=="jruby") || defined?(JRUBY_VERSION)
12
12
  end
13
13
 
14
- DB = case ENV["DB"]
15
- when "mysql"
14
+ rspec_exclusions = {}
15
+ rspec_exclusions[:skip_jdbc] = !jruby?
16
+ rspec_exclusions[:postgres] = ENV['TEST_ADAPTER'] != 'postgresql'
17
+ rspec_exclusions[:mysql] = !%w[mysql mysql2].include?(ENV['TEST_ADAPTER'])
18
+ rspec_exclusions[:sqlite] = ENV['TEST_ADAPTER'] != 'sqlite3'
19
+
20
+ RSpec.configure do |config|
21
+ config.filter_run_excluding rspec_exclusions
22
+ end
23
+
24
+ db_host = ENV.fetch("TEST_DATABASE_HOST", "127.0.0.1")
25
+ db_name = ENV.fetch("TEST_DATABASE", "delayed_jobs_test")
26
+
27
+ DB = case ENV["TEST_ADAPTER"]
28
+ when /mysql/
29
+ db_port = ENV.fetch("TEST_DATABASE_PORT", 3306)
30
+ opts = {test: true, encoding: ENV.fetch("TEST_ENCODING", "utf8")}
16
31
  begin
17
32
  if jruby?
18
- Sequel.connect "jdbc:mysql://localhost/delayed_jobs", test: true
33
+ Sequel.connect "jdbc:mysql://#{db_host}:#{db_port}/#{db_name}", opts
19
34
  else
20
- Sequel.connect adapter: "mysql2", database: "delayed_jobs", test: true
35
+ opts.merge!({database: db_name, host: db_host, port: db_port})
36
+ opts[:user] = ENV["TEST_USERNAME"] if ENV.key?("TEST_USERNAME")
37
+ opts[:password] = ENV["TEST_PASSWORD"] if ENV.key?("TEST_PASSWORD")
38
+ Sequel.connect({adapter: "mysql2"}.merge(opts))
21
39
  end
22
40
  rescue Sequel::DatabaseConnectionError
23
- system "mysql -e 'CREATE DATABASE IF NOT EXISTS `delayed_jobs` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci'"
24
- retry
41
+ if ENV.key? "CI"
42
+ raise
43
+ else
44
+ system "mysql -e 'CREATE DATABASE IF NOT EXISTS `#{db_name}` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci'"
45
+ retry
46
+ end
25
47
  end
26
- when "postgres"
48
+ when /postgres/
49
+ db_port = ENV.fetch("TEST_DATABASE_PORT", 5432)
50
+ opts = {test: true, encoding: ENV.fetch("TEST_ENCODING", nil)}
27
51
  begin
28
52
  if jruby?
29
- Sequel.connect "jdbc:postgresql://localhost/delayed_jobs", test: true
53
+ Sequel.connect "jdbc:postgresql://#{db_host}:#{db_port}/#{db_name}", opts
30
54
  else
31
- Sequel.connect adapter: "postgres", database: "delayed_jobs", test: true
55
+ opts.merge!({database: db_name, host: db_host, port: db_port})
56
+ opts[:user] = ENV["TEST_USERNAME"] if ENV.key?("TEST_USERNAME")
57
+ opts[:password] = ENV["TEST_PASSWORD"] if ENV.key?("TEST_PASSWORD")
58
+ Sequel.connect({adapter: "postgres"}.merge(opts))
32
59
  end
33
60
  rescue Sequel::DatabaseConnectionError
34
- system "createdb --encoding=UTF8 delayed_jobs"
35
- retry
61
+ if ENV.key? "CI"
62
+ raise
63
+ else
64
+ system "createdb --encoding=UTF8 #{db_name}"
65
+ retry
66
+ end
36
67
  end
37
68
  else
38
69
  if jruby?
@@ -43,14 +74,15 @@ else
43
74
  end
44
75
 
45
76
  DB.drop_table :delayed_jobs rescue Sequel::DatabaseError
77
+ DB.drop_table :another_delayed_jobs rescue Sequel::DatabaseError
46
78
  DB.drop_table :stories rescue Sequel::DatabaseError
47
79
 
48
80
  DB.create_table :delayed_jobs do
49
81
  primary_key :id
50
- Integer :priority, :default => 0
51
- Integer :attempts, :default => 0
52
- String :handler, :text => true
53
- String :last_error, :text => true
82
+ Integer :priority, default: 0
83
+ Integer :attempts, default: 0
84
+ String :handler, text: true
85
+ String :last_error, text: true
54
86
  Time :run_at
55
87
  Time :locked_at
56
88
  Time :failed_at
@@ -63,7 +95,7 @@ end
63
95
  DB.create_table :stories do
64
96
  primary_key :story_id
65
97
  String :text
66
- TrueClass :scoped, :default => true
98
+ TrueClass :scoped, default: true
67
99
  end
68
100
 
69
101
  require "delayed_job_sequel"
@@ -83,4 +115,7 @@ class Story < Sequel::Model
83
115
  end
84
116
  handle_asynchronously :whatever
85
117
  alias_method :persisted?, :exists?
118
+ def save!
119
+ save(raise_on_failure: true)
120
+ end
86
121
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: talentbox-delayed_job_sequel
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.3.0
4
+ version: 4.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Tron
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2017-11-27 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: sequel
@@ -16,7 +15,7 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '3.38'
18
+ version: '5.0'
20
19
  - - "<"
21
20
  - !ruby/object:Gem::Version
22
21
  version: '6.0'
@@ -26,7 +25,7 @@ dependencies:
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- version: '3.38'
28
+ version: '5.0'
30
29
  - - "<"
31
30
  - !ruby/object:Gem::Version
32
31
  version: '6.0'
@@ -36,22 +35,22 @@ dependencies:
36
35
  requirements:
37
36
  - - "~>"
38
37
  - !ruby/object:Gem::Version
39
- version: 4.1.0
38
+ version: '4.1'
40
39
  type: :runtime
41
40
  prerelease: false
42
41
  version_requirements: !ruby/object:Gem::Requirement
43
42
  requirements:
44
43
  - - "~>"
45
44
  - !ruby/object:Gem::Version
46
- version: 4.1.0
45
+ version: '4.1'
47
46
  - !ruby/object:Gem::Dependency
48
- name: tzinfo
47
+ name: rspec
49
48
  requirement: !ruby/object:Gem::Requirement
50
49
  requirements:
51
50
  - - ">="
52
51
  - !ruby/object:Gem::Version
53
52
  version: '0'
54
- type: :runtime
53
+ type: :development
55
54
  prerelease: false
56
55
  version_requirements: !ruby/object:Gem::Requirement
57
56
  requirements:
@@ -59,21 +58,49 @@ dependencies:
59
58
  - !ruby/object:Gem::Version
60
59
  version: '0'
61
60
  - !ruby/object:Gem::Dependency
62
- name: rspec
61
+ name: rake
63
62
  requirement: !ruby/object:Gem::Requirement
64
63
  requirements:
65
- - - "~>"
64
+ - - ">="
66
65
  - !ruby/object:Gem::Version
67
- version: 3.6.0
66
+ version: '0'
68
67
  type: :development
69
68
  prerelease: false
70
69
  version_requirements: !ruby/object:Gem::Requirement
71
70
  requirements:
72
- - - "~>"
71
+ - - ">="
73
72
  - !ruby/object:Gem::Version
74
- version: 3.6.0
73
+ version: '0'
75
74
  - !ruby/object:Gem::Dependency
76
- name: rake
75
+ name: rubocop
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ type: :development
82
+ prerelease: false
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ - !ruby/object:Gem::Dependency
89
+ name: rubocop-rake
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ type: :development
96
+ prerelease: false
97
+ version_requirements: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ - !ruby/object:Gem::Dependency
103
+ name: rubocop-rspec
77
104
  requirement: !ruby/object:Gem::Requirement
78
105
  requirements:
79
106
  - - ">="
@@ -107,7 +134,6 @@ files:
107
134
  homepage: http://github.com/TalentBox/delayed_job_sequel
108
135
  licenses: []
109
136
  metadata: {}
110
- post_install_message:
111
137
  rdoc_options:
112
138
  - "--main"
113
139
  - README.md
@@ -126,9 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
152
  - !ruby/object:Gem::Version
127
153
  version: '0'
128
154
  requirements: []
129
- rubyforge_project:
130
- rubygems_version: 2.5.2
131
- signing_key:
155
+ rubygems_version: 4.0.3
132
156
  specification_version: 4
133
157
  summary: Sequel backend for DelayedJob
134
158
  test_files: