fleiss 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2d7f27ee73ed5c0434f79ec98f0c249f4f41ece528807cabc3efd29f8ebf79c0
4
- data.tar.gz: e597168cfb8931240110ad45b4ee49937128bdb4dce826d142954253ce29dc9d
3
+ metadata.gz: 3433257ea2a501706212f8876c0c9636a00028a6c9616daf86d66aa36d0dbd9a
4
+ data.tar.gz: d792288414d281a0667fd8100475eb45ec610c3330fce5e0d8434aa3d3ac50fe
5
5
  SHA512:
6
- metadata.gz: 737815c833f1ff98e4c18c54709b7671ecd26cabb8500e5f93375a4ac528b4a8344381fe906db2e27726e2217de036a406aa83263514e2475798e5a15831f037
7
- data.tar.gz: dae7da18743673e38465150031a48734e7911d7894c0131a8d9469d472650f30ea53a73d6217bcc6c4f237c93fa8dfd147ad9df4ac3542e1f015e75dbbda4c4c
6
+ metadata.gz: 0fbf7922526ece6336986a26e69bfcf84263d3183ab39bb296f82ae1b08994af912d52f7d06ab16dee5f31c1100643814e220aa2052b6ca408b459ad8efb4a8d
7
+ data.tar.gz: a23fe3139ea3f1f891847343333e476de1edc1bf35b24279122b734f2867a15b66d5da9cfa77c37820e511a97c40a240bc4e3c7ae77c721020591119f8c3652f
@@ -1,5 +1,9 @@
1
- inherit_from:
2
- - https://gitlab.com/bsm/misc/raw/master/rubocop/default.yml
1
+ inherit_gem:
2
+ rubocop-bsm:
3
+ - default.yml
4
+ inherit_mode:
5
+ merge:
6
+ - Exclude
3
7
 
4
8
  AllCops:
5
9
  TargetRubyVersion: "2.6"
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fleiss (0.4.0)
4
+ fleiss (0.4.1)
5
5
  activejob (>= 6.0)
6
6
  activerecord (>= 6.0)
7
7
  concurrent-ruby
@@ -9,66 +9,86 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- activejob (6.0.3.1)
13
- activesupport (= 6.0.3.1)
12
+ activejob (6.1.1)
13
+ activesupport (= 6.1.1)
14
14
  globalid (>= 0.3.6)
15
- activemodel (6.0.3.1)
16
- activesupport (= 6.0.3.1)
17
- activerecord (6.0.3.1)
18
- activemodel (= 6.0.3.1)
19
- activesupport (= 6.0.3.1)
20
- activesupport (6.0.3.1)
15
+ activemodel (6.1.1)
16
+ activesupport (= 6.1.1)
17
+ activerecord (6.1.1)
18
+ activemodel (= 6.1.1)
19
+ activesupport (= 6.1.1)
20
+ activesupport (6.1.1)
21
21
  concurrent-ruby (~> 1.0, >= 1.0.2)
22
- i18n (>= 0.7, < 2)
23
- minitest (~> 5.1)
24
- tzinfo (~> 1.1)
25
- zeitwerk (~> 2.2, >= 2.2.2)
26
- ast (2.4.0)
27
- concurrent-ruby (1.1.6)
28
- diff-lcs (1.3)
22
+ i18n (>= 1.6, < 2)
23
+ minitest (>= 5.1)
24
+ tzinfo (~> 2.0)
25
+ zeitwerk (~> 2.3)
26
+ ast (2.4.1)
27
+ concurrent-ruby (1.1.8)
28
+ diff-lcs (1.4.4)
29
29
  globalid (0.4.2)
30
30
  activesupport (>= 4.2.0)
31
- i18n (1.8.2)
31
+ i18n (1.8.7)
32
32
  concurrent-ruby (~> 1.0)
33
- minitest (5.14.1)
33
+ minitest (5.14.3)
34
34
  mysql2 (0.5.3)
35
- parallel (1.19.1)
36
- parser (2.7.1.3)
37
- ast (~> 2.4.0)
35
+ parallel (1.20.1)
36
+ parser (3.0.0.0)
37
+ ast (~> 2.4.1)
38
38
  pg (1.2.3)
39
+ rack (2.2.3)
39
40
  rainbow (3.0.0)
40
- rake (13.0.1)
41
+ rake (13.0.3)
42
+ regexp_parser (2.0.3)
41
43
  rexml (3.2.4)
42
- rspec (3.9.0)
43
- rspec-core (~> 3.9.0)
44
- rspec-expectations (~> 3.9.0)
45
- rspec-mocks (~> 3.9.0)
46
- rspec-core (3.9.2)
47
- rspec-support (~> 3.9.3)
48
- rspec-expectations (3.9.2)
44
+ rspec (3.10.0)
45
+ rspec-core (~> 3.10.0)
46
+ rspec-expectations (~> 3.10.0)
47
+ rspec-mocks (~> 3.10.0)
48
+ rspec-core (3.10.1)
49
+ rspec-support (~> 3.10.0)
50
+ rspec-expectations (3.10.1)
49
51
  diff-lcs (>= 1.2.0, < 2.0)
50
- rspec-support (~> 3.9.0)
51
- rspec-mocks (3.9.1)
52
+ rspec-support (~> 3.10.0)
53
+ rspec-mocks (3.10.1)
52
54
  diff-lcs (>= 1.2.0, < 2.0)
53
- rspec-support (~> 3.9.0)
54
- rspec-support (3.9.3)
55
- rubocop (0.84.0)
55
+ rspec-support (~> 3.10.0)
56
+ rspec-support (3.10.1)
57
+ rubocop (1.8.1)
56
58
  parallel (~> 1.10)
57
- parser (>= 2.7.0.1)
59
+ parser (>= 3.0.0.0)
58
60
  rainbow (>= 2.2.2, < 4.0)
61
+ regexp_parser (>= 1.8, < 3.0)
59
62
  rexml
60
- rubocop-ast (>= 0.0.3)
63
+ rubocop-ast (>= 1.2.0, < 2.0)
61
64
  ruby-progressbar (~> 1.7)
62
- unicode-display_width (>= 1.4.0, < 2.0)
63
- rubocop-ast (0.0.3)
64
- parser (>= 2.7.0.1)
65
- ruby-progressbar (1.10.1)
65
+ unicode-display_width (>= 1.4.0, < 3.0)
66
+ rubocop-ast (1.4.0)
67
+ parser (>= 2.7.1.5)
68
+ rubocop-bsm (0.5.4)
69
+ rubocop (~> 1.0)
70
+ rubocop-performance
71
+ rubocop-rails
72
+ rubocop-rake
73
+ rubocop-rspec
74
+ rubocop-performance (1.9.2)
75
+ rubocop (>= 0.90.0, < 2.0)
76
+ rubocop-ast (>= 0.4.0)
77
+ rubocop-rails (2.9.1)
78
+ activesupport (>= 4.2.0)
79
+ rack (>= 1.1)
80
+ rubocop (>= 0.90.0, < 2.0)
81
+ rubocop-rake (0.5.1)
82
+ rubocop
83
+ rubocop-rspec (2.1.0)
84
+ rubocop (~> 1.0)
85
+ rubocop-ast (>= 1.1.0)
86
+ ruby-progressbar (1.11.0)
66
87
  sqlite3 (1.4.2)
67
- thread_safe (0.3.6)
68
- tzinfo (1.2.7)
69
- thread_safe (~> 0.1)
70
- unicode-display_width (1.7.0)
71
- zeitwerk (2.3.0)
88
+ tzinfo (2.0.4)
89
+ concurrent-ruby (~> 1.0)
90
+ unicode-display_width (2.0.0)
91
+ zeitwerk (2.4.2)
72
92
 
73
93
  PLATFORMS
74
94
  ruby
@@ -80,7 +100,7 @@ DEPENDENCIES
80
100
  pg
81
101
  rake
82
102
  rspec
83
- rubocop
103
+ rubocop-bsm
84
104
  sqlite3
85
105
 
86
106
  BUNDLED WITH
data/bin/fleiss CHANGED
@@ -5,8 +5,8 @@ $LOAD_PATH.push(lib_dir) unless $LOAD_PATH.include?(lib_dir)
5
5
 
6
6
  require 'fleiss/cli'
7
7
 
8
- STDOUT.sync = true
9
- STDERR.sync = true
8
+ $stdout.sync = true
9
+ $stderr.sync = true
10
10
 
11
11
  cli = Fleiss::CLI.instance
12
12
  begin
@@ -14,7 +14,7 @@ begin
14
14
  cli.run!
15
15
  rescue ArgumentError => e
16
16
  warn " ! #{e.message}\n"
17
- STDERR.puts
17
+ $stderr.puts
18
18
  warn cli.parser
19
19
  exit 1
20
20
  rescue StandardError => e
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'fleiss'
3
- s.version = '0.4.0'
3
+ s.version = '0.4.1'
4
4
  s.authors = ['Black Square Media Ltd']
5
5
  s.email = ['info@blacksquaremedia.com']
6
6
  s.summary = %(Minimialist background jobs backed by ActiveJob and ActiveRecord.)
@@ -23,6 +23,6 @@ Gem::Specification.new do |s|
23
23
  s.add_development_dependency 'pg'
24
24
  s.add_development_dependency 'rake'
25
25
  s.add_development_dependency 'rspec'
26
- s.add_development_dependency 'rubocop'
26
+ s.add_development_dependency 'rubocop-bsm'
27
27
  s.add_development_dependency 'sqlite3'
28
28
  end
@@ -8,7 +8,9 @@ module Fleiss
8
8
  scope :in_queue, ->(qs) { where(queue_name: Array.wrap(qs)) }
9
9
  scope :finished, -> { where.not(finished_at: nil) }
10
10
  scope :not_finished, -> { where(finished_at: nil) }
11
- scope :not_expired, ->(now = Time.zone.now) { where(arel_table[:expires_at].eq(nil).or(arel_table[:expires_at].gt(now))) }
11
+ scope :not_expired, lambda {|now = Time.zone.now|
12
+ where(arel_table[:expires_at].eq(nil).or(arel_table[:expires_at].gt(now)))
13
+ }
12
14
  scope :started, -> { where(arel_table[:started_at].not_eq(nil)) }
13
15
  scope :not_started, -> { where(arel_table[:started_at].eq(nil)) }
14
16
  scope :scheduled, ->(now = Time.zone.now) { where(arel_table[:scheduled_at].gt(now)) }
@@ -102,9 +104,12 @@ module Fleiss
102
104
  private
103
105
 
104
106
  def with_isolation(&block)
105
- return yield unless self.class.connection.supports_transaction_isolation?
106
-
107
- self.class.transaction(isolation: :repeatable_read, &block)
107
+ conn = self.class.connection
108
+ if conn.supports_transaction_isolation? && conn.adapter_name != 'SQLite'
109
+ self.class.transaction(isolation: :repeatable_read, &block)
110
+ else
111
+ yield
112
+ end
108
113
  end
109
114
  end
110
115
  end
@@ -3,7 +3,7 @@ require 'fleiss/backend/active_record'
3
3
  module Fleiss
4
4
  module Backend
5
5
  class ActiveRecord
6
- class Migration < ::ActiveRecord::Migration[5.0]
6
+ class Migration < ::ActiveRecord::Migration[6.0]
7
7
  def change
8
8
  create_table :fleiss_jobs do |t|
9
9
  t.string :queue_name, limit: 50, null: false
@@ -5,7 +5,7 @@ RSpec.describe Fleiss::Backend::ActiveRecord do
5
5
  described_class.find(job.provider_job_id)
6
6
  end
7
7
 
8
- it 'should persist jobs' do
8
+ it 'persists jobs' do
9
9
  job = TestJob.perform_later
10
10
  rec = retrieve(job)
11
11
 
@@ -28,25 +28,25 @@ RSpec.describe Fleiss::Backend::ActiveRecord do
28
28
  )
29
29
  end
30
30
 
31
- it 'should enqueue with delay' do
31
+ it 'enqueues with delay' do
32
32
  job = TestJob.set(wait: 1.day).perform_later
33
33
  rec = retrieve(job)
34
34
  expect(rec.scheduled_at).to be_within(2.seconds).of(1.day.from_now)
35
35
  end
36
36
 
37
- it 'should enqueue with priority' do
37
+ it 'enqueues with priority' do
38
38
  job = TestJob.set(priority: 8).perform_later
39
39
  rec = retrieve(job)
40
40
  expect(rec.priority).to eq(8)
41
41
  end
42
42
 
43
- it 'should expose active job ID' do
43
+ it 'exposes active job ID' do
44
44
  job = TestJob.perform_later
45
45
  rec = retrieve(job)
46
46
  expect(rec.job_id.size).to eq(36)
47
47
  end
48
48
 
49
- it 'should scope pending' do
49
+ it 'scopes pending' do
50
50
  j1 = TestJob.perform_later
51
51
  expect(retrieve(j1).start('owner')).to be_truthy
52
52
  expect(retrieve(j1).finish('owner')).to be_truthy
@@ -58,7 +58,7 @@ RSpec.describe Fleiss::Backend::ActiveRecord do
58
58
  expect(described_class.pending.ids).to eq [j4.provider_job_id, j2.provider_job_id]
59
59
  end
60
60
 
61
- it 'should scope in_progress' do
61
+ it 'scopes in_progress' do
62
62
  _j1 = TestJob.perform_later
63
63
  j2 = TestJob.perform_later
64
64
  expect(retrieve(j2).start('owner')).to be_truthy
@@ -72,14 +72,14 @@ RSpec.describe Fleiss::Backend::ActiveRecord do
72
72
  expect(described_class.in_progress('owner').ids).to eq [j2.provider_job_id]
73
73
  end
74
74
 
75
- it 'should scope by queue' do
75
+ it 'scopes by queue' do
76
76
  j1 = TestJob.perform_later
77
77
  j2 = TestJob.set(queue: 'other').perform_later
78
78
  expect(described_class.in_queue('test-queue').ids).to eq [j1.provider_job_id]
79
79
  expect(described_class.in_queue('other').ids).to eq [j2.provider_job_id]
80
80
  end
81
81
 
82
- it 'should start' do
82
+ it 'starts' do
83
83
  job = TestJob.perform_later
84
84
  rec = retrieve(job)
85
85
  expect(rec.start('owner')).to be_truthy
@@ -88,7 +88,7 @@ RSpec.describe Fleiss::Backend::ActiveRecord do
88
88
  expect(rec.started_at).to be_within(2.seconds).of(Time.zone.now)
89
89
  end
90
90
 
91
- it 'should lock atomically' do
91
+ it 'locks atomically' do
92
92
  24.times do
93
93
  TestJob.perform_later
94
94
  end
@@ -100,7 +100,7 @@ RSpec.describe Fleiss::Backend::ActiveRecord do
100
100
  expect(counts.sum).to eq(24)
101
101
  end
102
102
 
103
- it 'should finish' do
103
+ it 'finishes' do
104
104
  job = TestJob.perform_later
105
105
  rec = retrieve(job)
106
106
  expect(rec.finish('owner')).to be_falsey
@@ -112,7 +112,7 @@ RSpec.describe Fleiss::Backend::ActiveRecord do
112
112
  expect(rec.finished_at).to be_within(2.seconds).of(Time.zone.now)
113
113
  end
114
114
 
115
- it 'should reschedule' do
115
+ it 'reschedules' do
116
116
  job = TestJob.perform_later
117
117
  rec = retrieve(job)
118
118
  expect(rec.reschedule('owner')).to be_falsey
@@ -3,9 +3,10 @@ require 'fleiss/executor'
3
3
 
4
4
  RSpec.describe Fleiss::Executor do
5
5
  subject { described_class.new max_size: 2 }
6
+
6
7
  after { subject.kill }
7
8
 
8
- it 'should check capacity' do
9
+ it 'checks capacity' do
9
10
  expect(described_class.new.capacity).to eq(1)
10
11
 
11
12
  expect(subject.capacity).to eq(2)
@@ -15,7 +16,7 @@ RSpec.describe Fleiss::Executor do
15
16
  expect(subject.capacity).to eq(0)
16
17
  end
17
18
 
18
- it 'should discard execution when capacity is reached' do
19
+ it 'discards execution when capacity is reached' do
19
20
  n = Concurrent::AtomicFixnum.new(0)
20
21
  10.times do
21
22
  10.times { subject.post { n.increment } }
@@ -25,7 +25,7 @@ RSpec.describe Fleiss::Worker do
25
25
  expect(yield).to be_truthy
26
26
  end
27
27
 
28
- it 'should run' do
28
+ it 'runs' do
29
29
  # seed 24 jobs
30
30
  24.times {|n| TestJob.perform_later(n) }
31
31
  wait_for { Fleiss.backend.not_finished.count.positive? }
@@ -39,7 +39,7 @@ RSpec.describe Fleiss::Worker do
39
39
  expect(TestJob.performed).to match_array(0..23)
40
40
  end
41
41
 
42
- it 'should handle failing jobs' do
42
+ it 'handles failing jobs' do
43
43
  TestJob.perform_later('raise')
44
44
  wait_for { Fleiss.backend.not_finished.count.zero? }
45
45
  expect(Fleiss.backend.finished.count).to eq(1)
@@ -1,11 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  RSpec.describe Fleiss do
4
- it 'should have a backend' do
4
+ it 'has a backend' do
5
5
  expect(described_class.backend).to eq(Fleiss::Backend::ActiveRecord)
6
6
  end
7
7
 
8
- it 'should enqueue' do
8
+ it 'enqueues' do
9
9
  expect do
10
10
  TestJob.set(wait: 1.week).perform_later
11
11
  end.to change { described_class.backend.count }.by(1)
@@ -44,7 +44,7 @@ class TestJob < ActiveJob::Base
44
44
  end
45
45
 
46
46
  RSpec.configure do |c|
47
- c.after :each do
47
+ c.after do
48
48
  TestJob.performed.clear
49
49
  Fleiss.backend.delete_all
50
50
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fleiss
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Black Square Media Ltd
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-27 00:00:00.000000000 Z
11
+ date: 2021-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob
@@ -123,7 +123,7 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: rubocop
126
+ name: rubocop-bsm
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - ">="
@@ -202,7 +202,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
202
202
  - !ruby/object:Gem::Version
203
203
  version: '0'
204
204
  requirements: []
205
- rubygems_version: 3.1.2
205
+ rubygems_version: 3.1.4
206
206
  signing_key:
207
207
  specification_version: 4
208
208
  summary: Minimialist background jobs backed by ActiveJob and ActiveRecord.