inst-jobs 2.4.0 → 2.4.4
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 +4 -4
- data/db/migrate/20210812210128_add_singleton_column.rb +0 -3
- data/db/migrate/20210917232626_add_delete_conflicting_singletons_before_unlock_trigger.rb +27 -0
- data/lib/delayed/backend/active_record.rb +4 -4
- data/lib/delayed/backend/base.rb +1 -1
- data/lib/delayed/message_sending.rb +2 -2
- data/lib/delayed/performable_method.rb +1 -1
- data/lib/delayed/pool.rb +1 -1
- data/lib/delayed/settings.rb +1 -1
- data/lib/delayed/version.rb +1 -1
- data/lib/delayed/work_queue/parent_process/server.rb +3 -3
- data/spec/active_record_job_spec.rb +1 -1
- data/spec/delayed/message_sending_spec.rb +8 -0
- data/spec/shared/shared_backend.rb +30 -0
- data/spec/spec_helper.rb +3 -1
- metadata +17 -12
- data/spec/gemfiles/52.gemfile +0 -9
- data/spec/gemfiles/52.gemfile.lock +0 -240
- data/spec/gemfiles/60.gemfile +0 -9
- data/spec/gemfiles/60.gemfile.lock +0 -246
- data/spec/gemfiles/61.gemfile +0 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 90e78e46299d111959e7e48f25fe4e05a7939c6fb54fcd423deff4b960e79e6c
|
|
4
|
+
data.tar.gz: 20963910cd2cb1856f73cabbdc1547131a0d5096e26f7cc444f0a6e7d26b0ded
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 22155dba3fd9f1201e67930be8a3cc488da21b02b2066b59fe9a0f28f5670393534ddbb87a937979df356ba602c23a27e97f7650463fa2eb7c53e76647df5f02
|
|
7
|
+
data.tar.gz: 41a6bec7f263657aac33b62eeb8169db1898dfdcdbfadc32d91a985f54cb037a5691d75f02dff80b9c80ea57387a746fa70e6710545fe6b9c12724dde9f8f720
|
|
@@ -90,7 +90,6 @@ class AddSingletonColumn < ActiveRecord::Migration[5.2]
|
|
|
90
90
|
execute(<<~SQL)
|
|
91
91
|
CREATE OR REPLACE FUNCTION delayed_jobs_before_insert_row_tr_fn () RETURNS trigger AS $$
|
|
92
92
|
BEGIN
|
|
93
|
-
RAISE NOTICE 'inserting job';
|
|
94
93
|
IF NEW.strand IS NOT NULL THEN
|
|
95
94
|
PERFORM pg_advisory_xact_lock(half_md5_as_bigint(NEW.strand));
|
|
96
95
|
IF (SELECT COUNT(*) FROM (
|
|
@@ -100,10 +99,8 @@ class AddSingletonColumn < ActiveRecord::Migration[5.2]
|
|
|
100
99
|
END IF;
|
|
101
100
|
END IF;
|
|
102
101
|
IF NEW.singleton IS NOT NULL THEN
|
|
103
|
-
RAISE NOTICE 'inserting job that is a singleton';
|
|
104
102
|
PERFORM 1 FROM delayed_jobs WHERE singleton = NEW.singleton;
|
|
105
103
|
IF FOUND THEN
|
|
106
|
-
RAISE NOTICE 'and not first';
|
|
107
104
|
NEW.next_in_strand := false;
|
|
108
105
|
END IF;
|
|
109
106
|
END IF;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class AddDeleteConflictingSingletonsBeforeUnlockTrigger < ActiveRecord::Migration[5.2]
|
|
4
|
+
def up
|
|
5
|
+
execute(<<~SQL)
|
|
6
|
+
CREATE FUNCTION delayed_jobs_before_unlock_delete_conflicting_singletons_row_fn () RETURNS trigger AS $$
|
|
7
|
+
BEGIN
|
|
8
|
+
IF EXISTS (SELECT 1 FROM delayed_jobs j2 WHERE j2.singleton=OLD.singleton) THEN
|
|
9
|
+
DELETE FROM delayed_jobs WHERE id<>OLD.id AND singleton=OLD.singleton;
|
|
10
|
+
END IF;
|
|
11
|
+
RETURN NEW;
|
|
12
|
+
END;
|
|
13
|
+
$$ LANGUAGE plpgsql;
|
|
14
|
+
SQL
|
|
15
|
+
execute(<<~SQL)
|
|
16
|
+
CREATE TRIGGER delayed_jobs_before_unlock_delete_conflicting_singletons_row_tr BEFORE UPDATE ON delayed_jobs FOR EACH ROW WHEN (
|
|
17
|
+
OLD.singleton IS NOT NULL AND
|
|
18
|
+
OLD.singleton=NEW.singleton AND
|
|
19
|
+
OLD.locked_by IS NOT NULL AND
|
|
20
|
+
NEW.locked_by IS NULL) EXECUTE PROCEDURE delayed_jobs_before_unlock_delete_conflicting_singletons_row_fn();
|
|
21
|
+
SQL
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def down
|
|
25
|
+
execute("DROP FUNCTION delayed_jobs_before_unlock_delete_conflicting_singletons_row_tr_fn()")
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -98,11 +98,11 @@ module Delayed
|
|
|
98
98
|
fn_name = connection.quote_table_name("half_md5_as_bigint")
|
|
99
99
|
sql = "SELECT pg_advisory_xact_lock(#{fn_name}(#{connection.quote(values['strand'])})); #{sql}"
|
|
100
100
|
end
|
|
101
|
-
result = connection.execute(sql, "#{self} Create")
|
|
102
|
-
self.id = result.values.first
|
|
101
|
+
result = connection.execute(sql, "#{self.class} Create")
|
|
102
|
+
self.id = result.values.first&.first
|
|
103
103
|
result.clear
|
|
104
104
|
else
|
|
105
|
-
result = connection.exec_query(sql, "#{self} Create", binds)
|
|
105
|
+
result = connection.exec_query(sql, "#{self.class} Create", binds)
|
|
106
106
|
self.id = connection.send(:last_inserted_id, result)
|
|
107
107
|
end
|
|
108
108
|
|
|
@@ -459,7 +459,7 @@ module Delayed
|
|
|
459
459
|
end
|
|
460
460
|
|
|
461
461
|
def self.unlock_orphaned_prefetched_jobs
|
|
462
|
-
horizon = db_time_now - Settings.parent_process[:prefetched_jobs_timeout] * 4
|
|
462
|
+
horizon = db_time_now - (Settings.parent_process[:prefetched_jobs_timeout] * 4)
|
|
463
463
|
where("locked_by LIKE 'prefetch:%' AND locked_at<?", horizon).update_all(locked_at: nil, locked_by: nil)
|
|
464
464
|
end
|
|
465
465
|
|
data/lib/delayed/backend/base.rb
CHANGED
|
@@ -148,7 +148,7 @@ module Delayed
|
|
|
148
148
|
end
|
|
149
149
|
|
|
150
150
|
def unlock_orphaned_prefetched_jobs
|
|
151
|
-
horizon = db_time_now - Settings.parent_process[:prefetched_jobs_timeout] * 4
|
|
151
|
+
horizon = db_time_now - (Settings.parent_process[:prefetched_jobs_timeout] * 4)
|
|
152
152
|
orphaned_jobs = running_jobs.select do |job|
|
|
153
153
|
job.locked_by.start_with?("prefetch:") && job.locked_at < horizon
|
|
154
154
|
end
|
|
@@ -31,7 +31,7 @@ module Delayed
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
if @synchronous
|
|
34
|
-
if @sender.nil? || sender_is_object || sender_is_class && @object.protected_methods.include?(method)
|
|
34
|
+
if @sender.nil? || sender_is_object || (sender_is_class && @object.protected_methods.include?(method))
|
|
35
35
|
return @object.send(method, *args) if kwargs.empty?
|
|
36
36
|
|
|
37
37
|
return @object.send(method, *args, **kwargs)
|
|
@@ -39,7 +39,7 @@ module Delayed
|
|
|
39
39
|
|
|
40
40
|
return @object.public_send(method, *args) if kwargs.empty?
|
|
41
41
|
|
|
42
|
-
@object.public_send(method, *args, **kwargs)
|
|
42
|
+
return @object.public_send(method, *args, **kwargs)
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
ignore_transaction = @enqueue_args.delete(:ignore_transaction)
|
|
@@ -35,7 +35,7 @@ module Delayed
|
|
|
35
35
|
sender_is_object = sender == object
|
|
36
36
|
sender_is_class = sender.is_a?(object.class)
|
|
37
37
|
|
|
38
|
-
if sender.nil? || sender_is_object || sender_is_class && object.protected_methods.include?(method)
|
|
38
|
+
if sender.nil? || sender_is_object || (sender_is_class && object.protected_methods.include?(method))
|
|
39
39
|
if kwargs.empty?
|
|
40
40
|
object.send(method, *args)
|
|
41
41
|
else
|
data/lib/delayed/pool.rb
CHANGED
data/lib/delayed/settings.rb
CHANGED
|
@@ -101,7 +101,7 @@ module Delayed
|
|
|
101
101
|
# Expands rails-relative paths, without depending on rails being loaded.
|
|
102
102
|
def expand_rails_path(path)
|
|
103
103
|
root = if defined?(Rails) && Rails.root
|
|
104
|
-
|
|
104
|
+
Rails.root.join("Gemfile")
|
|
105
105
|
else
|
|
106
106
|
ENV.fetch("BUNDLE_GEMFILE", "#{Dir.pwd}/Gemfile")
|
|
107
107
|
end
|
data/lib/delayed/version.rb
CHANGED
|
@@ -49,7 +49,7 @@ module Delayed
|
|
|
49
49
|
last_orphaned_prefetched_jobs_purge = Job.db_time_now - rand(15 * 60)
|
|
50
50
|
until exit?
|
|
51
51
|
run_once
|
|
52
|
-
if last_orphaned_prefetched_jobs_purge + 15 * 60 < Job.db_time_now
|
|
52
|
+
if last_orphaned_prefetched_jobs_purge + (15 * 60) < Job.db_time_now
|
|
53
53
|
Job.unlock_orphaned_prefetched_jobs
|
|
54
54
|
last_orphaned_prefetched_jobs_purge = Job.db_time_now
|
|
55
55
|
end
|
|
@@ -68,7 +68,7 @@ module Delayed
|
|
|
68
68
|
# if they're not keeping up, the jobs will slip back in time, and suddenly we'll become
|
|
69
69
|
# active and quickly pick up all the jobs we can. The latency is calculated to ensure that
|
|
70
70
|
# an active worker is guaranteed to have attempted to fetch new jobs in the meantime
|
|
71
|
-
forced_latency = Settings.sleep_delay + Settings.sleep_delay_stagger * 2 if all_workers_idle?
|
|
71
|
+
forced_latency = Settings.sleep_delay + (Settings.sleep_delay_stagger * 2) if all_workers_idle?
|
|
72
72
|
timeout = Settings.sleep_delay + (rand * Settings.sleep_delay_stagger)
|
|
73
73
|
readable, = IO.select(handles, nil, nil, timeout)
|
|
74
74
|
readable&.each { |s| handle_read(s) }
|
|
@@ -156,7 +156,7 @@ module Delayed
|
|
|
156
156
|
worker_config[:queue],
|
|
157
157
|
worker_config[:min_priority],
|
|
158
158
|
worker_config[:max_priority],
|
|
159
|
-
prefetch: Settings.fetch_batch_size * (worker_config[:workers] || 1) - recipients.length,
|
|
159
|
+
prefetch: (Settings.fetch_batch_size * (worker_config[:workers] || 1)) - recipients.length,
|
|
160
160
|
prefetch_owner: prefetch_owner,
|
|
161
161
|
forced_latency: forced_latency
|
|
162
162
|
)
|
|
@@ -207,7 +207,7 @@ describe "Delayed::Backed::ActiveRecord::Job" do
|
|
|
207
207
|
job2 = Delayed::Job.new(tag: "tag")
|
|
208
208
|
|
|
209
209
|
job1.create_and_lock!("prefetch:a")
|
|
210
|
-
job1.locked_at = Delayed::Job.db_time_now - 15 * 60
|
|
210
|
+
job1.locked_at = Delayed::Job.db_time_now - (15 * 60)
|
|
211
211
|
job1.save!
|
|
212
212
|
job2.create_and_lock!("prefetch:a")
|
|
213
213
|
|
|
@@ -20,6 +20,10 @@ RSpec.describe Delayed::MessageSending do
|
|
|
20
20
|
other.delay(**enqueue_args).protected_method
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
+
def call_public(**_kwargs)
|
|
24
|
+
42
|
|
25
|
+
end
|
|
26
|
+
|
|
23
27
|
private
|
|
24
28
|
|
|
25
29
|
def private_method; end
|
|
@@ -74,6 +78,10 @@ RSpec.describe Delayed::MessageSending do
|
|
|
74
78
|
klass.new.call_protected(synchronous: true)
|
|
75
79
|
end
|
|
76
80
|
|
|
81
|
+
it "directly calls a public method on an object with kwargs" do
|
|
82
|
+
expect(klass.new.delay(synchronous: true).call_public(kwarg: 10)).to eq 42
|
|
83
|
+
end
|
|
84
|
+
|
|
77
85
|
it "warns about directly sending a protected message asynchronously" do
|
|
78
86
|
expect { klass.new.delay.protected_method }.to raise_error(NoMethodError)
|
|
79
87
|
end
|
|
@@ -474,6 +474,36 @@ shared_examples_for "a backend" do
|
|
|
474
474
|
expect(Delayed::Job.get_and_lock_next_available("w1")).to be_nil
|
|
475
475
|
end
|
|
476
476
|
end
|
|
477
|
+
|
|
478
|
+
context "with on_conflict: loose and strand-inferred-from-singleton" do
|
|
479
|
+
around do |example|
|
|
480
|
+
Delayed::Settings.infer_strand_from_singleton = true
|
|
481
|
+
example.call
|
|
482
|
+
ensure
|
|
483
|
+
Delayed::Settings.infer_strand_from_singleton = false
|
|
484
|
+
end
|
|
485
|
+
|
|
486
|
+
it "does not create if there's another non-running job on the strand" do
|
|
487
|
+
@job = create_job(singleton: "myjobs", on_conflict: :loose)
|
|
488
|
+
expect(@job).to be_present
|
|
489
|
+
|
|
490
|
+
@job2 = create_job(singleton: "myjobs", on_conflict: :loose)
|
|
491
|
+
expect(@job2).to be_new_record
|
|
492
|
+
end
|
|
493
|
+
end
|
|
494
|
+
|
|
495
|
+
context "when unlocking with another singleton pending" do
|
|
496
|
+
it "deletes the pending singleton" do
|
|
497
|
+
@job1 = create_job(singleton: "myjobs", max_attempts: 2)
|
|
498
|
+
expect(Delayed::Job.get_and_lock_next_available("w1")).to eq(@job1)
|
|
499
|
+
|
|
500
|
+
@job2 = create_job(singleton: "myjobs", max_attempts: 2)
|
|
501
|
+
|
|
502
|
+
@job1.reload.reschedule
|
|
503
|
+
expect { @job1.reload }.not_to raise_error
|
|
504
|
+
expect { @job2.reload }.to raise_error(ActiveRecord::RecordNotFound)
|
|
505
|
+
end
|
|
506
|
+
end
|
|
477
507
|
end
|
|
478
508
|
end
|
|
479
509
|
|
data/spec/spec_helper.rb
CHANGED
|
@@ -4,6 +4,7 @@ require "delayed_job"
|
|
|
4
4
|
require "delayed/testing"
|
|
5
5
|
|
|
6
6
|
require "database_cleaner"
|
|
7
|
+
require "fileutils"
|
|
7
8
|
require "rack/test"
|
|
8
9
|
require "timecop"
|
|
9
10
|
require "webmock/rspec"
|
|
@@ -80,7 +81,8 @@ Delayed::Backend::ActiveRecord::Job.reset_column_information
|
|
|
80
81
|
Delayed::Backend::ActiveRecord::Job::Failed.reset_column_information
|
|
81
82
|
|
|
82
83
|
Time.zone = "UTC" # rubocop:disable Rails/TimeZoneAssignment
|
|
83
|
-
|
|
84
|
+
FileUtils.mkdir_p("tmp")
|
|
85
|
+
ActiveRecord::Base.logger = Rails.logger = Logger.new("tmp/test.log")
|
|
84
86
|
|
|
85
87
|
# Purely useful for test cases...
|
|
86
88
|
class Story < ActiveRecord::Base
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: inst-jobs
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.4.
|
|
4
|
+
version: 2.4.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tobias Luetke
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: exe
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2021-09-
|
|
12
|
+
date: 2021-09-18 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: activerecord
|
|
@@ -101,6 +101,20 @@ dependencies:
|
|
|
101
101
|
- - ">="
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
103
|
version: '5.2'
|
|
104
|
+
- !ruby/object:Gem::Dependency
|
|
105
|
+
name: appraisal
|
|
106
|
+
requirement: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - "~>"
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '2.4'
|
|
111
|
+
type: :development
|
|
112
|
+
prerelease: false
|
|
113
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - "~>"
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '2.4'
|
|
104
118
|
- !ruby/object:Gem::Dependency
|
|
105
119
|
name: bump
|
|
106
120
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -417,6 +431,7 @@ files:
|
|
|
417
431
|
- db/migrate/20200825011002_add_strand_order_override.rb
|
|
418
432
|
- db/migrate/20210809145804_add_n_strand_index.rb
|
|
419
433
|
- db/migrate/20210812210128_add_singleton_column.rb
|
|
434
|
+
- db/migrate/20210917232626_add_delete_conflicting_singletons_before_unlock_trigger.rb
|
|
420
435
|
- exe/inst_jobs
|
|
421
436
|
- lib/delayed/backend/active_record.rb
|
|
422
437
|
- lib/delayed/backend/base.rb
|
|
@@ -469,11 +484,6 @@ files:
|
|
|
469
484
|
- spec/delayed/worker/consul_health_check_spec.rb
|
|
470
485
|
- spec/delayed/worker/health_check_spec.rb
|
|
471
486
|
- spec/delayed/worker_spec.rb
|
|
472
|
-
- spec/gemfiles/52.gemfile
|
|
473
|
-
- spec/gemfiles/52.gemfile.lock
|
|
474
|
-
- spec/gemfiles/60.gemfile
|
|
475
|
-
- spec/gemfiles/60.gemfile.lock
|
|
476
|
-
- spec/gemfiles/61.gemfile
|
|
477
487
|
- spec/migrate/20140924140513_add_story_table.rb
|
|
478
488
|
- spec/sample_jobs.rb
|
|
479
489
|
- spec/shared/delayed_batch.rb
|
|
@@ -509,11 +519,6 @@ summary: Instructure-maintained fork of delayed_job
|
|
|
509
519
|
test_files:
|
|
510
520
|
- spec/sample_jobs.rb
|
|
511
521
|
- spec/spec_helper.rb
|
|
512
|
-
- spec/gemfiles/60.gemfile.lock
|
|
513
|
-
- spec/gemfiles/61.gemfile
|
|
514
|
-
- spec/gemfiles/60.gemfile
|
|
515
|
-
- spec/gemfiles/52.gemfile
|
|
516
|
-
- spec/gemfiles/52.gemfile.lock
|
|
517
522
|
- spec/shared_jobs_specs.rb
|
|
518
523
|
- spec/shared/performable_method.rb
|
|
519
524
|
- spec/shared/testing.rb
|
data/spec/gemfiles/52.gemfile
DELETED
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
PATH
|
|
2
|
-
remote: ../..
|
|
3
|
-
specs:
|
|
4
|
-
inst-jobs (2.3.3)
|
|
5
|
-
activerecord (>= 5.2)
|
|
6
|
-
activesupport (>= 5.2)
|
|
7
|
-
after_transaction_commit (>= 1.0, < 3)
|
|
8
|
-
debug_inspector (~> 1.0)
|
|
9
|
-
fugit (~> 1.3)
|
|
10
|
-
railties (>= 5.2)
|
|
11
|
-
redis (> 3.0)
|
|
12
|
-
redis-scripting (~> 1.0.1)
|
|
13
|
-
|
|
14
|
-
GEM
|
|
15
|
-
remote: https://rubygems.org/
|
|
16
|
-
specs:
|
|
17
|
-
actioncable (5.2.6)
|
|
18
|
-
actionpack (= 5.2.6)
|
|
19
|
-
nio4r (~> 2.0)
|
|
20
|
-
websocket-driver (>= 0.6.1)
|
|
21
|
-
actionmailer (5.2.6)
|
|
22
|
-
actionpack (= 5.2.6)
|
|
23
|
-
actionview (= 5.2.6)
|
|
24
|
-
activejob (= 5.2.6)
|
|
25
|
-
mail (~> 2.5, >= 2.5.4)
|
|
26
|
-
rails-dom-testing (~> 2.0)
|
|
27
|
-
actionpack (5.2.6)
|
|
28
|
-
actionview (= 5.2.6)
|
|
29
|
-
activesupport (= 5.2.6)
|
|
30
|
-
rack (~> 2.0, >= 2.0.8)
|
|
31
|
-
rack-test (>= 0.6.3)
|
|
32
|
-
rails-dom-testing (~> 2.0)
|
|
33
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
|
34
|
-
actionview (5.2.6)
|
|
35
|
-
activesupport (= 5.2.6)
|
|
36
|
-
builder (~> 3.1)
|
|
37
|
-
erubi (~> 1.4)
|
|
38
|
-
rails-dom-testing (~> 2.0)
|
|
39
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
|
40
|
-
activejob (5.2.6)
|
|
41
|
-
activesupport (= 5.2.6)
|
|
42
|
-
globalid (>= 0.3.6)
|
|
43
|
-
activemodel (5.2.6)
|
|
44
|
-
activesupport (= 5.2.6)
|
|
45
|
-
activerecord (5.2.6)
|
|
46
|
-
activemodel (= 5.2.6)
|
|
47
|
-
activesupport (= 5.2.6)
|
|
48
|
-
arel (>= 9.0)
|
|
49
|
-
activestorage (5.2.6)
|
|
50
|
-
actionpack (= 5.2.6)
|
|
51
|
-
activerecord (= 5.2.6)
|
|
52
|
-
marcel (~> 1.0.0)
|
|
53
|
-
activesupport (5.2.6)
|
|
54
|
-
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
55
|
-
i18n (>= 0.7, < 2)
|
|
56
|
-
minitest (~> 5.1)
|
|
57
|
-
tzinfo (~> 1.1)
|
|
58
|
-
addressable (2.8.0)
|
|
59
|
-
public_suffix (>= 2.0.2, < 5.0)
|
|
60
|
-
after_transaction_commit (2.2.2)
|
|
61
|
-
activerecord (>= 5.2)
|
|
62
|
-
arel (9.0.0)
|
|
63
|
-
builder (3.2.4)
|
|
64
|
-
bump (0.10.0)
|
|
65
|
-
byebug (11.1.3)
|
|
66
|
-
coderay (1.1.3)
|
|
67
|
-
concurrent-ruby (1.1.9)
|
|
68
|
-
crack (0.4.5)
|
|
69
|
-
rexml
|
|
70
|
-
crass (1.0.6)
|
|
71
|
-
database_cleaner (2.0.1)
|
|
72
|
-
database_cleaner-active_record (~> 2.0.0)
|
|
73
|
-
database_cleaner-active_record (2.0.1)
|
|
74
|
-
activerecord (>= 5.a)
|
|
75
|
-
database_cleaner-core (~> 2.0.0)
|
|
76
|
-
database_cleaner-core (2.0.1)
|
|
77
|
-
debug_inspector (1.1.0)
|
|
78
|
-
deep_merge (1.2.1)
|
|
79
|
-
diff-lcs (1.4.4)
|
|
80
|
-
diplomat (2.5.1)
|
|
81
|
-
deep_merge (~> 1.2)
|
|
82
|
-
faraday (>= 0.9)
|
|
83
|
-
erubi (1.10.0)
|
|
84
|
-
et-orbi (1.2.4)
|
|
85
|
-
tzinfo
|
|
86
|
-
faraday (1.7.0)
|
|
87
|
-
faraday-em_http (~> 1.0)
|
|
88
|
-
faraday-em_synchrony (~> 1.0)
|
|
89
|
-
faraday-excon (~> 1.1)
|
|
90
|
-
faraday-httpclient (~> 1.0.1)
|
|
91
|
-
faraday-net_http (~> 1.0)
|
|
92
|
-
faraday-net_http_persistent (~> 1.1)
|
|
93
|
-
faraday-patron (~> 1.0)
|
|
94
|
-
faraday-rack (~> 1.0)
|
|
95
|
-
multipart-post (>= 1.2, < 3)
|
|
96
|
-
ruby2_keywords (>= 0.0.4)
|
|
97
|
-
faraday-em_http (1.0.0)
|
|
98
|
-
faraday-em_synchrony (1.0.0)
|
|
99
|
-
faraday-excon (1.1.0)
|
|
100
|
-
faraday-httpclient (1.0.1)
|
|
101
|
-
faraday-net_http (1.0.1)
|
|
102
|
-
faraday-net_http_persistent (1.2.0)
|
|
103
|
-
faraday-patron (1.0.0)
|
|
104
|
-
faraday-rack (1.0.0)
|
|
105
|
-
fugit (1.5.0)
|
|
106
|
-
et-orbi (~> 1.1, >= 1.1.8)
|
|
107
|
-
raabro (~> 1.4)
|
|
108
|
-
globalid (0.5.2)
|
|
109
|
-
activesupport (>= 5.0)
|
|
110
|
-
hashdiff (1.0.1)
|
|
111
|
-
i18n (1.8.10)
|
|
112
|
-
concurrent-ruby (~> 1.0)
|
|
113
|
-
loofah (2.12.0)
|
|
114
|
-
crass (~> 1.0.2)
|
|
115
|
-
nokogiri (>= 1.5.9)
|
|
116
|
-
mail (2.7.1)
|
|
117
|
-
mini_mime (>= 0.1.1)
|
|
118
|
-
marcel (1.0.1)
|
|
119
|
-
method_source (1.0.0)
|
|
120
|
-
mini_mime (1.1.0)
|
|
121
|
-
minitest (5.14.4)
|
|
122
|
-
multi_json (1.15.0)
|
|
123
|
-
multipart-post (2.1.1)
|
|
124
|
-
mustermann (1.1.1)
|
|
125
|
-
ruby2_keywords (~> 0.0.1)
|
|
126
|
-
nio4r (2.5.8)
|
|
127
|
-
nokogiri (1.12.3-x86_64-darwin)
|
|
128
|
-
racc (~> 1.4)
|
|
129
|
-
pg (1.2.3)
|
|
130
|
-
pry (0.14.1)
|
|
131
|
-
coderay (~> 1.1)
|
|
132
|
-
method_source (~> 1.0)
|
|
133
|
-
public_suffix (4.0.6)
|
|
134
|
-
raabro (1.4.0)
|
|
135
|
-
racc (1.5.2)
|
|
136
|
-
rack (2.2.3)
|
|
137
|
-
rack-protection (2.1.0)
|
|
138
|
-
rack
|
|
139
|
-
rack-test (1.1.0)
|
|
140
|
-
rack (>= 1.0, < 3)
|
|
141
|
-
rails (5.2.6)
|
|
142
|
-
actioncable (= 5.2.6)
|
|
143
|
-
actionmailer (= 5.2.6)
|
|
144
|
-
actionpack (= 5.2.6)
|
|
145
|
-
actionview (= 5.2.6)
|
|
146
|
-
activejob (= 5.2.6)
|
|
147
|
-
activemodel (= 5.2.6)
|
|
148
|
-
activerecord (= 5.2.6)
|
|
149
|
-
activestorage (= 5.2.6)
|
|
150
|
-
activesupport (= 5.2.6)
|
|
151
|
-
bundler (>= 1.3.0)
|
|
152
|
-
railties (= 5.2.6)
|
|
153
|
-
sprockets-rails (>= 2.0.0)
|
|
154
|
-
rails-dom-testing (2.0.3)
|
|
155
|
-
activesupport (>= 4.2.0)
|
|
156
|
-
nokogiri (>= 1.6)
|
|
157
|
-
rails-html-sanitizer (1.3.0)
|
|
158
|
-
loofah (~> 2.3)
|
|
159
|
-
railties (5.2.6)
|
|
160
|
-
actionpack (= 5.2.6)
|
|
161
|
-
activesupport (= 5.2.6)
|
|
162
|
-
method_source
|
|
163
|
-
rake (>= 0.8.7)
|
|
164
|
-
thor (>= 0.19.0, < 2.0)
|
|
165
|
-
rake (13.0.6)
|
|
166
|
-
redis (4.4.0)
|
|
167
|
-
redis-scripting (1.0.1)
|
|
168
|
-
redis (>= 3.0)
|
|
169
|
-
rexml (3.2.5)
|
|
170
|
-
rspec (3.10.0)
|
|
171
|
-
rspec-core (~> 3.10.0)
|
|
172
|
-
rspec-expectations (~> 3.10.0)
|
|
173
|
-
rspec-mocks (~> 3.10.0)
|
|
174
|
-
rspec-core (3.10.1)
|
|
175
|
-
rspec-support (~> 3.10.0)
|
|
176
|
-
rspec-expectations (3.10.1)
|
|
177
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
|
178
|
-
rspec-support (~> 3.10.0)
|
|
179
|
-
rspec-mocks (3.10.2)
|
|
180
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
|
181
|
-
rspec-support (~> 3.10.0)
|
|
182
|
-
rspec-support (3.10.2)
|
|
183
|
-
ruby2_keywords (0.0.5)
|
|
184
|
-
sinatra (2.1.0)
|
|
185
|
-
mustermann (~> 1.0)
|
|
186
|
-
rack (~> 2.2)
|
|
187
|
-
rack-protection (= 2.1.0)
|
|
188
|
-
tilt (~> 2.0)
|
|
189
|
-
sinatra-contrib (2.1.0)
|
|
190
|
-
multi_json
|
|
191
|
-
mustermann (~> 1.0)
|
|
192
|
-
rack-protection (= 2.1.0)
|
|
193
|
-
sinatra (= 2.1.0)
|
|
194
|
-
tilt (~> 2.0)
|
|
195
|
-
sprockets (4.0.2)
|
|
196
|
-
concurrent-ruby (~> 1.0)
|
|
197
|
-
rack (> 1, < 3)
|
|
198
|
-
sprockets-rails (3.2.2)
|
|
199
|
-
actionpack (>= 4.0)
|
|
200
|
-
activesupport (>= 4.0)
|
|
201
|
-
sprockets (>= 3.0.0)
|
|
202
|
-
thor (1.1.0)
|
|
203
|
-
thread_safe (0.3.6)
|
|
204
|
-
tilt (2.0.10)
|
|
205
|
-
timecop (0.9.4)
|
|
206
|
-
tzinfo (1.2.9)
|
|
207
|
-
thread_safe (~> 0.1)
|
|
208
|
-
webmock (3.14.0)
|
|
209
|
-
addressable (>= 2.8.0)
|
|
210
|
-
crack (>= 0.3.2)
|
|
211
|
-
hashdiff (>= 0.4.0, < 2.0.0)
|
|
212
|
-
websocket-driver (0.7.5)
|
|
213
|
-
websocket-extensions (>= 0.1.0)
|
|
214
|
-
websocket-extensions (0.1.5)
|
|
215
|
-
wwtd (1.4.1)
|
|
216
|
-
|
|
217
|
-
PLATFORMS
|
|
218
|
-
x86_64-darwin-20
|
|
219
|
-
|
|
220
|
-
DEPENDENCIES
|
|
221
|
-
bump
|
|
222
|
-
byebug
|
|
223
|
-
database_cleaner (~> 2.0)
|
|
224
|
-
database_cleaner-active_record (~> 2.0)
|
|
225
|
-
diplomat (~> 2.5.1)
|
|
226
|
-
inst-jobs!
|
|
227
|
-
pg
|
|
228
|
-
pry
|
|
229
|
-
rack-test
|
|
230
|
-
rails (~> 5.2.0)
|
|
231
|
-
rake
|
|
232
|
-
rspec (~> 3.10)
|
|
233
|
-
sinatra (~> 2.0)
|
|
234
|
-
sinatra-contrib (~> 2.0)
|
|
235
|
-
timecop (= 0.9.4)
|
|
236
|
-
webmock
|
|
237
|
-
wwtd (~> 1.4.0)
|
|
238
|
-
|
|
239
|
-
BUNDLED WITH
|
|
240
|
-
2.2.24
|
data/spec/gemfiles/60.gemfile
DELETED
|
@@ -1,246 +0,0 @@
|
|
|
1
|
-
PATH
|
|
2
|
-
remote: ../..
|
|
3
|
-
specs:
|
|
4
|
-
inst-jobs (2.3.3)
|
|
5
|
-
activerecord (>= 5.2)
|
|
6
|
-
activesupport (>= 5.2)
|
|
7
|
-
after_transaction_commit (>= 1.0, < 3)
|
|
8
|
-
debug_inspector (~> 1.0)
|
|
9
|
-
fugit (~> 1.3)
|
|
10
|
-
railties (>= 5.2)
|
|
11
|
-
redis (> 3.0)
|
|
12
|
-
redis-scripting (~> 1.0.1)
|
|
13
|
-
|
|
14
|
-
GEM
|
|
15
|
-
remote: https://rubygems.org/
|
|
16
|
-
specs:
|
|
17
|
-
actioncable (6.0.3.7)
|
|
18
|
-
actionpack (= 6.0.3.7)
|
|
19
|
-
nio4r (~> 2.0)
|
|
20
|
-
websocket-driver (>= 0.6.1)
|
|
21
|
-
actionmailbox (6.0.3.7)
|
|
22
|
-
actionpack (= 6.0.3.7)
|
|
23
|
-
activejob (= 6.0.3.7)
|
|
24
|
-
activerecord (= 6.0.3.7)
|
|
25
|
-
activestorage (= 6.0.3.7)
|
|
26
|
-
activesupport (= 6.0.3.7)
|
|
27
|
-
mail (>= 2.7.1)
|
|
28
|
-
actionmailer (6.0.3.7)
|
|
29
|
-
actionpack (= 6.0.3.7)
|
|
30
|
-
actionview (= 6.0.3.7)
|
|
31
|
-
activejob (= 6.0.3.7)
|
|
32
|
-
mail (~> 2.5, >= 2.5.4)
|
|
33
|
-
rails-dom-testing (~> 2.0)
|
|
34
|
-
actionpack (6.0.3.7)
|
|
35
|
-
actionview (= 6.0.3.7)
|
|
36
|
-
activesupport (= 6.0.3.7)
|
|
37
|
-
rack (~> 2.0, >= 2.0.8)
|
|
38
|
-
rack-test (>= 0.6.3)
|
|
39
|
-
rails-dom-testing (~> 2.0)
|
|
40
|
-
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
|
41
|
-
actiontext (6.0.3.7)
|
|
42
|
-
actionpack (= 6.0.3.7)
|
|
43
|
-
activerecord (= 6.0.3.7)
|
|
44
|
-
activestorage (= 6.0.3.7)
|
|
45
|
-
activesupport (= 6.0.3.7)
|
|
46
|
-
nokogiri (>= 1.8.5)
|
|
47
|
-
actionview (6.0.3.7)
|
|
48
|
-
activesupport (= 6.0.3.7)
|
|
49
|
-
builder (~> 3.1)
|
|
50
|
-
erubi (~> 1.4)
|
|
51
|
-
rails-dom-testing (~> 2.0)
|
|
52
|
-
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
|
53
|
-
activejob (6.0.3.7)
|
|
54
|
-
activesupport (= 6.0.3.7)
|
|
55
|
-
globalid (>= 0.3.6)
|
|
56
|
-
activemodel (6.0.3.7)
|
|
57
|
-
activesupport (= 6.0.3.7)
|
|
58
|
-
activerecord (6.0.3.7)
|
|
59
|
-
activemodel (= 6.0.3.7)
|
|
60
|
-
activesupport (= 6.0.3.7)
|
|
61
|
-
activestorage (6.0.3.7)
|
|
62
|
-
actionpack (= 6.0.3.7)
|
|
63
|
-
activejob (= 6.0.3.7)
|
|
64
|
-
activerecord (= 6.0.3.7)
|
|
65
|
-
marcel (~> 1.0.0)
|
|
66
|
-
activesupport (6.0.3.7)
|
|
67
|
-
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
68
|
-
i18n (>= 0.7, < 2)
|
|
69
|
-
minitest (~> 5.1)
|
|
70
|
-
tzinfo (~> 1.1)
|
|
71
|
-
zeitwerk (~> 2.2, >= 2.2.2)
|
|
72
|
-
addressable (2.7.0)
|
|
73
|
-
public_suffix (>= 2.0.2, < 5.0)
|
|
74
|
-
after_transaction_commit (2.2.2)
|
|
75
|
-
activerecord (>= 5.2)
|
|
76
|
-
builder (3.2.4)
|
|
77
|
-
bump (0.10.0)
|
|
78
|
-
byebug (11.1.3)
|
|
79
|
-
coderay (1.1.3)
|
|
80
|
-
concurrent-ruby (1.1.9)
|
|
81
|
-
crack (0.4.5)
|
|
82
|
-
rexml
|
|
83
|
-
crass (1.0.6)
|
|
84
|
-
database_cleaner (2.0.1)
|
|
85
|
-
database_cleaner-active_record (~> 2.0.0)
|
|
86
|
-
database_cleaner-active_record (2.0.0)
|
|
87
|
-
activerecord (>= 5.a)
|
|
88
|
-
database_cleaner-core (~> 2.0.0)
|
|
89
|
-
database_cleaner-core (2.0.1)
|
|
90
|
-
debug_inspector (1.1.0)
|
|
91
|
-
deep_merge (1.2.1)
|
|
92
|
-
diff-lcs (1.4.4)
|
|
93
|
-
diplomat (2.5.1)
|
|
94
|
-
deep_merge (~> 1.2)
|
|
95
|
-
faraday (>= 0.9)
|
|
96
|
-
erubi (1.10.0)
|
|
97
|
-
et-orbi (1.2.4)
|
|
98
|
-
tzinfo
|
|
99
|
-
faraday (1.4.1)
|
|
100
|
-
faraday-excon (~> 1.1)
|
|
101
|
-
faraday-net_http (~> 1.0)
|
|
102
|
-
faraday-net_http_persistent (~> 1.1)
|
|
103
|
-
multipart-post (>= 1.2, < 3)
|
|
104
|
-
ruby2_keywords (>= 0.0.4)
|
|
105
|
-
faraday-excon (1.1.0)
|
|
106
|
-
faraday-net_http (1.0.1)
|
|
107
|
-
faraday-net_http_persistent (1.1.0)
|
|
108
|
-
fugit (1.4.5)
|
|
109
|
-
et-orbi (~> 1.1, >= 1.1.8)
|
|
110
|
-
raabro (~> 1.4)
|
|
111
|
-
globalid (0.4.2)
|
|
112
|
-
activesupport (>= 4.2.0)
|
|
113
|
-
hashdiff (1.0.1)
|
|
114
|
-
i18n (1.8.10)
|
|
115
|
-
concurrent-ruby (~> 1.0)
|
|
116
|
-
loofah (2.10.0)
|
|
117
|
-
crass (~> 1.0.2)
|
|
118
|
-
nokogiri (>= 1.5.9)
|
|
119
|
-
mail (2.7.1)
|
|
120
|
-
mini_mime (>= 0.1.1)
|
|
121
|
-
marcel (1.0.1)
|
|
122
|
-
method_source (1.0.0)
|
|
123
|
-
mini_mime (1.1.0)
|
|
124
|
-
minitest (5.14.4)
|
|
125
|
-
multi_json (1.15.0)
|
|
126
|
-
multipart-post (2.1.1)
|
|
127
|
-
mustermann (1.1.1)
|
|
128
|
-
ruby2_keywords (~> 0.0.1)
|
|
129
|
-
nio4r (2.5.7)
|
|
130
|
-
nokogiri (1.11.7-x86_64-darwin)
|
|
131
|
-
racc (~> 1.4)
|
|
132
|
-
pg (1.2.3)
|
|
133
|
-
pry (0.14.1)
|
|
134
|
-
coderay (~> 1.1)
|
|
135
|
-
method_source (~> 1.0)
|
|
136
|
-
public_suffix (4.0.6)
|
|
137
|
-
raabro (1.4.0)
|
|
138
|
-
racc (1.5.2)
|
|
139
|
-
rack (2.2.3)
|
|
140
|
-
rack-protection (2.1.0)
|
|
141
|
-
rack
|
|
142
|
-
rack-test (1.1.0)
|
|
143
|
-
rack (>= 1.0, < 3)
|
|
144
|
-
rails (6.0.3.7)
|
|
145
|
-
actioncable (= 6.0.3.7)
|
|
146
|
-
actionmailbox (= 6.0.3.7)
|
|
147
|
-
actionmailer (= 6.0.3.7)
|
|
148
|
-
actionpack (= 6.0.3.7)
|
|
149
|
-
actiontext (= 6.0.3.7)
|
|
150
|
-
actionview (= 6.0.3.7)
|
|
151
|
-
activejob (= 6.0.3.7)
|
|
152
|
-
activemodel (= 6.0.3.7)
|
|
153
|
-
activerecord (= 6.0.3.7)
|
|
154
|
-
activestorage (= 6.0.3.7)
|
|
155
|
-
activesupport (= 6.0.3.7)
|
|
156
|
-
bundler (>= 1.3.0)
|
|
157
|
-
railties (= 6.0.3.7)
|
|
158
|
-
sprockets-rails (>= 2.0.0)
|
|
159
|
-
rails-dom-testing (2.0.3)
|
|
160
|
-
activesupport (>= 4.2.0)
|
|
161
|
-
nokogiri (>= 1.6)
|
|
162
|
-
rails-html-sanitizer (1.3.0)
|
|
163
|
-
loofah (~> 2.3)
|
|
164
|
-
railties (6.0.3.7)
|
|
165
|
-
actionpack (= 6.0.3.7)
|
|
166
|
-
activesupport (= 6.0.3.7)
|
|
167
|
-
method_source
|
|
168
|
-
rake (>= 0.8.7)
|
|
169
|
-
thor (>= 0.20.3, < 2.0)
|
|
170
|
-
rake (13.0.3)
|
|
171
|
-
redis (4.2.5)
|
|
172
|
-
redis-scripting (1.0.1)
|
|
173
|
-
redis (>= 3.0)
|
|
174
|
-
rexml (3.2.5)
|
|
175
|
-
rspec (3.10.0)
|
|
176
|
-
rspec-core (~> 3.10.0)
|
|
177
|
-
rspec-expectations (~> 3.10.0)
|
|
178
|
-
rspec-mocks (~> 3.10.0)
|
|
179
|
-
rspec-core (3.10.1)
|
|
180
|
-
rspec-support (~> 3.10.0)
|
|
181
|
-
rspec-expectations (3.10.1)
|
|
182
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
|
183
|
-
rspec-support (~> 3.10.0)
|
|
184
|
-
rspec-mocks (3.10.2)
|
|
185
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
|
186
|
-
rspec-support (~> 3.10.0)
|
|
187
|
-
rspec-support (3.10.2)
|
|
188
|
-
ruby2_keywords (0.0.4)
|
|
189
|
-
sinatra (2.1.0)
|
|
190
|
-
mustermann (~> 1.0)
|
|
191
|
-
rack (~> 2.2)
|
|
192
|
-
rack-protection (= 2.1.0)
|
|
193
|
-
tilt (~> 2.0)
|
|
194
|
-
sinatra-contrib (2.1.0)
|
|
195
|
-
multi_json
|
|
196
|
-
mustermann (~> 1.0)
|
|
197
|
-
rack-protection (= 2.1.0)
|
|
198
|
-
sinatra (= 2.1.0)
|
|
199
|
-
tilt (~> 2.0)
|
|
200
|
-
sprockets (4.0.2)
|
|
201
|
-
concurrent-ruby (~> 1.0)
|
|
202
|
-
rack (> 1, < 3)
|
|
203
|
-
sprockets-rails (3.2.2)
|
|
204
|
-
actionpack (>= 4.0)
|
|
205
|
-
activesupport (>= 4.0)
|
|
206
|
-
sprockets (>= 3.0.0)
|
|
207
|
-
thor (1.1.0)
|
|
208
|
-
thread_safe (0.3.6)
|
|
209
|
-
tilt (2.0.10)
|
|
210
|
-
timecop (0.9.4)
|
|
211
|
-
tzinfo (1.2.9)
|
|
212
|
-
thread_safe (~> 0.1)
|
|
213
|
-
webmock (3.13.0)
|
|
214
|
-
addressable (>= 2.3.6)
|
|
215
|
-
crack (>= 0.3.2)
|
|
216
|
-
hashdiff (>= 0.4.0, < 2.0.0)
|
|
217
|
-
websocket-driver (0.7.5)
|
|
218
|
-
websocket-extensions (>= 0.1.0)
|
|
219
|
-
websocket-extensions (0.1.5)
|
|
220
|
-
wwtd (1.4.1)
|
|
221
|
-
zeitwerk (2.4.2)
|
|
222
|
-
|
|
223
|
-
PLATFORMS
|
|
224
|
-
x86_64-darwin-20
|
|
225
|
-
|
|
226
|
-
DEPENDENCIES
|
|
227
|
-
bump
|
|
228
|
-
byebug
|
|
229
|
-
database_cleaner (~> 2.0)
|
|
230
|
-
database_cleaner-active_record (~> 2.0)
|
|
231
|
-
diplomat (~> 2.5.1)
|
|
232
|
-
inst-jobs!
|
|
233
|
-
pg
|
|
234
|
-
pry
|
|
235
|
-
rack-test
|
|
236
|
-
rails (~> 6.0.0)
|
|
237
|
-
rake
|
|
238
|
-
rspec (~> 3.10)
|
|
239
|
-
sinatra (~> 2.0)
|
|
240
|
-
sinatra-contrib (~> 2.0)
|
|
241
|
-
timecop (= 0.9.4)
|
|
242
|
-
webmock
|
|
243
|
-
wwtd (~> 1.4.0)
|
|
244
|
-
|
|
245
|
-
BUNDLED WITH
|
|
246
|
-
2.2.17
|