cloudtasker 0.12.rc9 → 0.12.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 50cd6021ad7511d7b5b385a6086eb315d9381a4f43909a6e1e9a0defbc679ea4
4
- data.tar.gz: dc16cc1330b14b46a5d6ade9f9c171981fd3aef5b3db67dd474e29548acc177f
3
+ metadata.gz: ab6a1615278350bb5ba27b6cce48a9f8e6b6a52f2fcfcf91878428e948d58472
4
+ data.tar.gz: 8dfb96442d4b4010f0cf1e81f08b5a804c0a5249a4a106aee7faabffe183f9e2
5
5
  SHA512:
6
- metadata.gz: 30feac9331b9e8113e71af6c44a20d2f47fcbd41652a0d345ab8808d272bd14271ebb4a98711e42b238f6202fa8023a37c543e0f4ec7d9f9f7a46cc2732d96aa
7
- data.tar.gz: 9b70a3c0733b2c510fafe48232c65bb79f5ad4da6b90fbcff86c0736fee590fab5f89846df9c41855dc7084460425660ee42799975975775b2239b9b8997171a
6
+ metadata.gz: 4faaa0888a5446fde4726facf76a99c57c8dcbfbbabaae9cd7ae7640b774748aa1db5993bb61a242ac093b5797f43b649a99b91abf2882750ea6b0e3e18684a0
7
+ data.tar.gz: 3bc948b6437aa56ca98cdebb7eb2996ed4fb895a0fab2819adefb109de21387dcde5d16b89795bc075076958b310b74149b1731bfb90016903fa491f10859736
@@ -1,10 +1,6 @@
1
1
  name: Test
2
2
 
3
- on:
4
- push:
5
- branches: [ master, 0.9-stable ]
6
- pull_request:
7
- branches: [ master, 0.9-stable ]
3
+ on: [push, pull_request]
8
4
 
9
5
  jobs:
10
6
  build:
data/CHANGELOG.md CHANGED
@@ -1,8 +1,40 @@
1
1
  # Changelog
2
2
 
3
- ## Latest RC [v0.12.rc8](https://github.com/keypup-io/cloudtasker/tree/v0.12.rc8) (2021-04-06)
3
+ ## [v0.12.1](https://github.com/keypup-io/cloudtasker/tree/v0.12.1) (2021-08-25)
4
4
 
5
- [Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.11.0...v0.12.rc8)
5
+ [Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.12.0...v0.12.1)
6
+
7
+ **Fixed bugs:**
8
+ - Dependencies: Require `try` from `activesupport`. This was preventing non-Rails projects from properly running Cloudtasker jobs.
9
+ - WorkerController: remove useless inheritance from local ApplicationController. The parent controller was not always loaded on Rails 5 which in turn created issues with authenticity token. Fixes [#40](https://github.com/keypup-io/cloudtasker/issues/40)
10
+
11
+ ## [v0.11.1](https://github.com/keypup-io/cloudtasker/tree/v0.11.1) (2021-08-25)
12
+
13
+ [Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.11.0...v0.11.1)
14
+
15
+ **Fixed bugs:**
16
+ - Dependencies: Require `try` from `activesupport`. This was preventing non-Rails projects from properly running Cloudtasker jobs.
17
+ - WorkerController: remove useless inheritance from local ApplicationController. The parent controller was not always loaded on Rails 5 which in turn created issues with authenticity token. Fixes [#40](https://github.com/keypup-io/cloudtasker/issues/40)
18
+
19
+ ## [v0.10.2](https://github.com/keypup-io/cloudtasker/tree/v0.10.2) (2021-08-25)
20
+
21
+ [Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.10.1...v0.10.2)
22
+
23
+ **Fixed bugs:**
24
+ - Dependencies: Require `try` from `activesupport`. This was preventing non-Rails projects from properly running Cloudtasker jobs.
25
+ - WorkerController: remove useless inheritance from local ApplicationController. The parent controller was not always loaded on Rails 5 which in turn created issues with authenticity token. Fixes [#40](https://github.com/keypup-io/cloudtasker/issues/40)
26
+
27
+ ## [v0.9.5](https://github.com/keypup-io/cloudtasker/tree/v0.9.5) (2021-08-25)
28
+
29
+ [Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.9.4...v0.9.5)
30
+
31
+ **Fixed bugs:**
32
+ - Dependencies: Require `try` from `activesupport`. This was preventing non-Rails projects from properly running Cloudtasker jobs.
33
+ - WorkerController: remove useless inheritance from local ApplicationController. The parent controller was not always loaded on Rails 5 which in turn created issues with authenticity token. Fixes [#40](https://github.com/keypup-io/cloudtasker/issues/40)
34
+
35
+ ## [v0.12.0](https://github.com/keypup-io/cloudtasker/tree/v0.12.0) (2021-08-19)
36
+
37
+ [Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.11.0...v0.12.0)
6
38
 
7
39
  **Improvements:**
8
40
  - ActiveJob: do not double log errors (ActiveJob has its own error logging)
@@ -10,18 +42,22 @@
10
42
  - Batch state: use native Redis hashes to store batch state instead of a serialized hash in a string key
11
43
  - Batch progress: restrict calculation to direct children by default. Allow depth to be specified. Calculating progress using all tree jobs created significant delays on large batches.
12
44
  - Batch redis usage: cleanup batches as they get completed or become dead to avoid excessive redis usage with large batches.
45
+ - Batch expansion: Inject `parent_batch` in jobs. Can be used to expand the parent batch the job is in.
13
46
  - Configuration: allow configuration of Cloud Tasks `dispatch deadline` at global and worker level
47
+ - Configuration: allow specifying global `on_error` and `on_dead` callbacks for error reporting
14
48
  - Cron jobs: Use Redis Sets instead of key pattern matching for resource listing
15
49
  - Error logging: Use worker logger so as to include context (job args etc.)
16
50
  - Error logging: Do not log exception and stack trace separately, combine them instead.
17
51
  - Local server: Use Redis Sets instead of key pattern matching for resource listing
52
+ - Local server: Guard against nil tasks to prevent job daemon failures
53
+ - Performance: remove use of redis locks and rely on atomic transactions instead for Batch and Unique Job.
18
54
  - Worker: raise DeadWorkerError instead of MissingWorkerArgumentsError when arguments are missing. This is more consistent with what middlewares expect.
19
55
  - Worker redis usage: delete redis payload storage once the job is successful or dead instead of expiring the key.
20
56
 
21
57
  **Fixed bugs:**
22
58
  - Retries: Enforce job retry limit on job processing. There was an edge case where jobs could be retried indefinitely on batch callback errors.
23
59
 
24
- ## [v0.11.0](https://github.com/keypup-io/cloudtasker/tree/v0.11.0) (2021-03-11)
60
+ ## [v0.11.0](https://github.com/keypup-io/cloudtasker/tree/v0.11.0) (2020-11-23)
25
61
 
26
62
  [Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.10.0...v0.11.0)
27
63
 
data/README.md CHANGED
@@ -35,9 +35,10 @@ A local processing server is also available for development. This local server p
35
35
  2. [Logging context](#logging-context)
36
36
  9. [Error Handling](#error-handling)
37
37
  1. [HTTP Error codes](#http-error-codes)
38
- 2. [Error callbacks](#error-callbacks)
39
- 3. [Max retries](#max-retries)
40
- 4. [Dispatch deadline](#dispatch-deadline)
38
+ 2. [Worker callbacks](#worker-callbacks)
39
+ 3. [Global callbacks](#global-callbacks)
40
+ 4. [Max retries](#max-retries)
41
+ 5. [Dispatch deadline](#dispatch-deadline)
41
42
  10. [Testing](#testing)
42
43
  1. [Test helper setup](#test-helper-setup)
43
44
  2. [In-memory queues](#in-memory-queues)
@@ -364,11 +365,41 @@ Cloudtasker.configure do |config|
364
365
  # This option can also be configured on a per worker basis via
365
366
  # the cloudtasker_options directive.
366
367
  #
367
- # Supported since: v0.12.rc8
368
+ # Supported since: v0.12.0
368
369
  #
369
370
  # Default: 600 seconds (10 minutes)
370
371
  #
371
372
  # config.dispatch_deadline = 600
373
+
374
+ #
375
+ # Specify a proc to be invoked every time a job fails due to a runtime
376
+ # error.
377
+ #
378
+ # This hook is not invoked for DeadWorkerError. See on_dead instead.
379
+ #
380
+ # This is useful when you need to apply general exception handling, such
381
+ # as reporting errors to a third-party service like Rollbar or Bugsnag.
382
+ #
383
+ # Note: the worker argument might be nil, such as when InvalidWorkerError is raised.
384
+ #
385
+ # Supported since: v0.12.0
386
+ #
387
+ # Default: no operation
388
+ #
389
+ # config.on_error = ->(error, worker) { Rollbar.error(error) }
390
+
391
+ #
392
+ # Specify a proc to be invoked every time a job dies due to too many
393
+ # retries.
394
+ #
395
+ # This is useful when you need to apply general exception handling, such
396
+ # logging specific messages/context when a job dies.
397
+ #
398
+ # Supported since: v0.12.0
399
+ #
400
+ # Default: no operation
401
+ #
402
+ # config.on_dead = ->(error, worker) { Rollbar.error(error) }
372
403
  end
373
404
  ```
374
405
 
@@ -649,7 +680,7 @@ Jobs failing will automatically return the following HTTP error code to Cloud Ta
649
680
  | 404 | The job has specified an incorrect worker class. |
650
681
  | 422 | An error happened during the execution of the worker (`perform` method) |
651
682
 
652
- ### Error callbacks
683
+ ### Worker callbacks
653
684
 
654
685
  Workers can implement the `on_error(error)` and `on_dead(error)` callbacks to do things when a job fails during its execution:
655
686
 
@@ -677,6 +708,25 @@ class HandleErrorWorker
677
708
  end
678
709
  ```
679
710
 
711
+ ### Global callbacks
712
+ **Supported since**: `0.12.0`
713
+
714
+ If you need to apply general exception handling logic to your workers you can specify `on_error` and `on_dead` hooks in the Cloudtasker configuration.
715
+
716
+ This is useful if you need to report errors to third-party services such as Rollbar or Bugsnag.
717
+
718
+ ```ruby
719
+ # config/initializers/cloudtasker.rb
720
+
721
+ Cloudtasker.configure do |config|
722
+ #
723
+ # Report runtime and dead worker errors to Rollbar
724
+ #
725
+ config.on_error = -> (error, _worker) { Rollbar.error(error) }
726
+ config.on_dead = -> (error, _worker) { Rollbar.error(error) }
727
+ end
728
+ ```
729
+
680
730
  ### Max retries
681
731
 
682
732
  By default jobs are retried 25 times - using an exponential backoff - before being declared dead. This number of retries can be customized locally on workers and/or globally via the Cloudtasker initializer.
@@ -740,7 +790,7 @@ end
740
790
  ```
741
791
 
742
792
  ### Dispatch deadline
743
- **Supported since**: `0.12.rc8`
793
+ **Supported since**: `0.12.0`
744
794
 
745
795
  By default Cloud Tasks will automatically timeout your jobs after 10 minutes, independently of your server HTTP timeout configuration.
746
796
 
@@ -2,7 +2,10 @@
2
2
 
3
3
  module Cloudtasker
4
4
  # Handle execution of workers
5
- class WorkerController < ApplicationController
5
+ class WorkerController < ActionController::Base
6
+ # No need for CSRF verification on API endpoints
7
+ skip_before_action :verify_authenticity_token
8
+
6
9
  # Authenticate all requests.
7
10
  before_action :authenticate!
8
11
 
data/docs/BATCH_JOBS.md CHANGED
@@ -18,7 +18,7 @@ Cloudtasker.configure do |config|
18
18
  end
19
19
  ```
20
20
 
21
- ## Example
21
+ ## Example: Creating a new batch
22
22
 
23
23
  The following example defines a worker that adds itself to the batch with different arguments then monitors the success of the batch.
24
24
 
@@ -47,6 +47,38 @@ class BatchWorker
47
47
  end
48
48
  ```
49
49
 
50
+ ## Example: Expanding the parent batch
51
+ **Note**: `parent_batch` is available since `0.12.0`
52
+
53
+ ```ruby
54
+ # All the jobs will be attached to the top parent batch.
55
+ class BatchWorker
56
+ include Cloudtasker::Worker
57
+
58
+ def perform(level, instance)
59
+ # Use existing parent_batch or create a new one
60
+ current_batch = parent_batch || batch
61
+
62
+ 3.times { |n| current_batch.add(self.class, level + 1, n) } if level < 2
63
+ end
64
+
65
+ # Invoked when any descendant (e.g. sub-sub job) is complete
66
+ def on_batch_node_complete(child)
67
+ logger.info("Direct or Indirect child complete: #{child.job_id}")
68
+ end
69
+
70
+ # Invoked when a direct descendant is complete
71
+ def on_child_complete(child)
72
+ logger.info("Direct child complete: #{child.job_id}")
73
+ end
74
+
75
+ # Invoked when all chidren have finished
76
+ def on_batch_complete
77
+ Rails.logger.info("Batch complete")
78
+ end
79
+ end
80
+ ```
81
+
50
82
  ## Available callbacks
51
83
 
52
84
  The following callbacks are available on your workers to track the progress of the batch:
@@ -91,7 +123,7 @@ def on_batch_node_complete(_child_job)
91
123
  end
92
124
  ```
93
125
 
94
- **Since:** `v0.12.rc5`
126
+ **Since:** `v0.12.0`
95
127
  By default the `progress` method only considers the direct child jobs to evaluate the batch progress. You can pass `depth: somenumber` to the `progress` method to calculate the actual batch progress in a more granular way. Be careful however that this method recursively calculates progress on the sub-batches and is therefore expensive.
96
128
 
97
129
  E.g.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- cloudtasker (0.12.rc9)
4
+ cloudtasker (0.12.1)
5
5
  activesupport
6
6
  connection_pool
7
7
  fugit
@@ -13,94 +13,94 @@ PATH
13
13
  GEM
14
14
  remote: https://rubygems.org/
15
15
  specs:
16
- actioncable (6.1.3.1)
17
- actionpack (= 6.1.3.1)
18
- activesupport (= 6.1.3.1)
16
+ actioncable (6.1.4.1)
17
+ actionpack (= 6.1.4.1)
18
+ activesupport (= 6.1.4.1)
19
19
  nio4r (~> 2.0)
20
20
  websocket-driver (>= 0.6.1)
21
- actionmailbox (6.1.3.1)
22
- actionpack (= 6.1.3.1)
23
- activejob (= 6.1.3.1)
24
- activerecord (= 6.1.3.1)
25
- activestorage (= 6.1.3.1)
26
- activesupport (= 6.1.3.1)
21
+ actionmailbox (6.1.4.1)
22
+ actionpack (= 6.1.4.1)
23
+ activejob (= 6.1.4.1)
24
+ activerecord (= 6.1.4.1)
25
+ activestorage (= 6.1.4.1)
26
+ activesupport (= 6.1.4.1)
27
27
  mail (>= 2.7.1)
28
- actionmailer (6.1.3.1)
29
- actionpack (= 6.1.3.1)
30
- actionview (= 6.1.3.1)
31
- activejob (= 6.1.3.1)
32
- activesupport (= 6.1.3.1)
28
+ actionmailer (6.1.4.1)
29
+ actionpack (= 6.1.4.1)
30
+ actionview (= 6.1.4.1)
31
+ activejob (= 6.1.4.1)
32
+ activesupport (= 6.1.4.1)
33
33
  mail (~> 2.5, >= 2.5.4)
34
34
  rails-dom-testing (~> 2.0)
35
- actionpack (6.1.3.1)
36
- actionview (= 6.1.3.1)
37
- activesupport (= 6.1.3.1)
35
+ actionpack (6.1.4.1)
36
+ actionview (= 6.1.4.1)
37
+ activesupport (= 6.1.4.1)
38
38
  rack (~> 2.0, >= 2.0.9)
39
39
  rack-test (>= 0.6.3)
40
40
  rails-dom-testing (~> 2.0)
41
41
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
42
- actiontext (6.1.3.1)
43
- actionpack (= 6.1.3.1)
44
- activerecord (= 6.1.3.1)
45
- activestorage (= 6.1.3.1)
46
- activesupport (= 6.1.3.1)
42
+ actiontext (6.1.4.1)
43
+ actionpack (= 6.1.4.1)
44
+ activerecord (= 6.1.4.1)
45
+ activestorage (= 6.1.4.1)
46
+ activesupport (= 6.1.4.1)
47
47
  nokogiri (>= 1.8.5)
48
- actionview (6.1.3.1)
49
- activesupport (= 6.1.3.1)
48
+ actionview (6.1.4.1)
49
+ activesupport (= 6.1.4.1)
50
50
  builder (~> 3.1)
51
51
  erubi (~> 1.4)
52
52
  rails-dom-testing (~> 2.0)
53
53
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
54
- activejob (6.1.3.1)
55
- activesupport (= 6.1.3.1)
54
+ activejob (6.1.4.1)
55
+ activesupport (= 6.1.4.1)
56
56
  globalid (>= 0.3.6)
57
- activemodel (6.1.3.1)
58
- activesupport (= 6.1.3.1)
59
- activerecord (6.1.3.1)
60
- activemodel (= 6.1.3.1)
61
- activesupport (= 6.1.3.1)
62
- activestorage (6.1.3.1)
63
- actionpack (= 6.1.3.1)
64
- activejob (= 6.1.3.1)
65
- activerecord (= 6.1.3.1)
66
- activesupport (= 6.1.3.1)
57
+ activemodel (6.1.4.1)
58
+ activesupport (= 6.1.4.1)
59
+ activerecord (6.1.4.1)
60
+ activemodel (= 6.1.4.1)
61
+ activesupport (= 6.1.4.1)
62
+ activestorage (6.1.4.1)
63
+ actionpack (= 6.1.4.1)
64
+ activejob (= 6.1.4.1)
65
+ activerecord (= 6.1.4.1)
66
+ activesupport (= 6.1.4.1)
67
67
  marcel (~> 1.0.0)
68
- mini_mime (~> 1.0.2)
69
- activesupport (6.1.3.1)
68
+ mini_mime (>= 1.1.0)
69
+ activesupport (6.1.4.1)
70
70
  concurrent-ruby (~> 1.0, >= 1.0.2)
71
71
  i18n (>= 1.6, < 2)
72
72
  minitest (>= 5.1)
73
73
  tzinfo (~> 2.0)
74
74
  zeitwerk (~> 2.3)
75
- addressable (2.7.0)
75
+ addressable (2.8.0)
76
76
  public_suffix (>= 2.0.2, < 5.0)
77
- appraisal (2.4.0)
77
+ appraisal (2.4.1)
78
78
  bundler
79
79
  rake
80
80
  thor (>= 0.14.0)
81
81
  ast (2.4.2)
82
- async (1.29.0)
82
+ async (1.30.1)
83
83
  console (~> 1.10)
84
84
  nio4r (~> 2.3)
85
85
  timers (~> 4.1)
86
- async-http (0.54.1)
87
- async (~> 1.25)
88
- async-io (~> 1.28)
89
- async-pool (~> 0.2)
90
- protocol-http (~> 0.21.0)
91
- protocol-http1 (~> 0.13.0)
86
+ async-http (0.56.5)
87
+ async (>= 1.25)
88
+ async-io (>= 1.28)
89
+ async-pool (>= 0.2)
90
+ protocol-http (~> 0.22.0)
91
+ protocol-http1 (~> 0.14.0)
92
92
  protocol-http2 (~> 0.14.0)
93
- async-http-faraday (0.9.0)
93
+ async-http-faraday (0.11.0)
94
94
  async-http (~> 0.42)
95
95
  faraday
96
- async-io (1.30.2)
97
- async (~> 1.14)
98
- async-pool (0.3.5)
99
- async (~> 1.25)
96
+ async-io (1.32.2)
97
+ async
98
+ async-pool (0.3.8)
99
+ async (>= 1.25)
100
100
  builder (3.2.4)
101
- concurrent-ruby (1.1.8)
101
+ concurrent-ruby (1.1.9)
102
102
  connection_pool (2.2.5)
103
- console (1.11.1)
103
+ console (1.13.1)
104
104
  fiber-local
105
105
  crack (0.4.5)
106
106
  rexml
@@ -109,22 +109,32 @@ GEM
109
109
  erubi (1.10.0)
110
110
  et-orbi (1.2.4)
111
111
  tzinfo
112
- faraday (1.4.1)
112
+ faraday (1.7.0)
113
+ faraday-em_http (~> 1.0)
114
+ faraday-em_synchrony (~> 1.0)
113
115
  faraday-excon (~> 1.1)
116
+ faraday-httpclient (~> 1.0.1)
114
117
  faraday-net_http (~> 1.0)
115
118
  faraday-net_http_persistent (~> 1.1)
119
+ faraday-patron (~> 1.0)
120
+ faraday-rack (~> 1.0)
116
121
  multipart-post (>= 1.2, < 3)
117
122
  ruby2_keywords (>= 0.0.4)
123
+ faraday-em_http (1.0.0)
124
+ faraday-em_synchrony (1.0.0)
118
125
  faraday-excon (1.1.0)
119
126
  faraday-http-cache (2.2.0)
120
127
  faraday (>= 0.8)
128
+ faraday-httpclient (1.0.1)
121
129
  faraday-net_http (1.0.1)
122
- faraday-net_http_persistent (1.1.0)
130
+ faraday-net_http_persistent (1.2.0)
131
+ faraday-patron (1.0.0)
132
+ faraday-rack (1.0.0)
123
133
  fiber-local (1.0.0)
124
- fugit (1.4.4)
134
+ fugit (1.5.1)
125
135
  et-orbi (~> 1.1, >= 1.1.8)
126
136
  raabro (~> 1.4)
127
- github_changelog_generator (1.16.1)
137
+ github_changelog_generator (1.16.4)
128
138
  activesupport
129
139
  async (>= 1.25.0)
130
140
  async-http-faraday
@@ -133,9 +143,8 @@ GEM
133
143
  octokit (~> 4.6)
134
144
  rainbow (>= 2.2.1)
135
145
  rake (>= 10.0)
136
- retriable (~> 3.0)
137
- globalid (0.4.2)
138
- activesupport (>= 4.2.0)
146
+ globalid (0.5.2)
147
+ activesupport (>= 5.0)
139
148
  google-cloud-tasks (1.0.0)
140
149
  google-gax (~> 1.3)
141
150
  googleapis-common-protos (>= 1.3.9, < 2.0)
@@ -146,21 +155,21 @@ GEM
146
155
  googleauth (~> 0.9)
147
156
  grpc (~> 1.24)
148
157
  rly (~> 0.2.3)
149
- google-protobuf (3.15.8)
158
+ google-protobuf (3.17.3)
150
159
  googleapis-common-protos (1.3.11)
151
160
  google-protobuf (~> 3.14)
152
161
  googleapis-common-protos-types (>= 1.0.6, < 2.0)
153
162
  grpc (~> 1.27)
154
- googleapis-common-protos-types (1.0.6)
163
+ googleapis-common-protos-types (1.1.0)
155
164
  google-protobuf (~> 3.14)
156
- googleauth (0.16.1)
165
+ googleauth (0.17.0)
157
166
  faraday (>= 0.17.3, < 2.0)
158
167
  jwt (>= 1.4, < 3.0)
159
168
  memoist (~> 0.16)
160
169
  multi_json (~> 1.11)
161
170
  os (>= 0.9, < 2.0)
162
171
  signet (~> 0.14)
163
- grpc (1.37.0)
172
+ grpc (1.38.0)
164
173
  google-protobuf (~> 3.15)
165
174
  googleapis-common-protos-types (~> 1.0)
166
175
  grpc-google-iam-v1 (0.6.11)
@@ -171,8 +180,8 @@ GEM
171
180
  i18n (1.8.10)
172
181
  concurrent-ruby (~> 1.0)
173
182
  jaro_winkler (1.5.4)
174
- jwt (2.2.2)
175
- loofah (2.9.1)
183
+ jwt (2.2.3)
184
+ loofah (2.12.0)
176
185
  crass (~> 1.0.2)
177
186
  nokogiri (>= 1.5.9)
178
187
  mail (2.7.1)
@@ -180,26 +189,26 @@ GEM
180
189
  marcel (1.0.1)
181
190
  memoist (0.16.2)
182
191
  method_source (1.0.0)
183
- mini_mime (1.0.3)
184
- mini_portile2 (2.5.0)
192
+ mini_mime (1.1.1)
193
+ mini_portile2 (2.6.1)
185
194
  minitest (5.14.4)
186
195
  multi_json (1.15.0)
187
196
  multipart-post (2.1.1)
188
- nio4r (2.5.7)
189
- nokogiri (1.11.3)
190
- mini_portile2 (~> 2.5.0)
197
+ nio4r (2.5.8)
198
+ nokogiri (1.12.3)
199
+ mini_portile2 (~> 2.6.1)
191
200
  racc (~> 1.4)
192
- octokit (4.20.0)
201
+ octokit (4.21.0)
193
202
  faraday (>= 0.9)
194
203
  sawyer (~> 0.8.0, >= 0.5.3)
195
204
  os (1.1.1)
196
205
  parallel (1.20.1)
197
- parser (3.0.1.0)
206
+ parser (3.0.2.0)
198
207
  ast (~> 2.4.1)
199
208
  protocol-hpack (1.4.2)
200
- protocol-http (0.21.0)
201
- protocol-http1 (0.13.2)
202
- protocol-http (~> 0.19)
209
+ protocol-http (0.22.5)
210
+ protocol-http1 (0.14.2)
211
+ protocol-http (~> 0.22)
203
212
  protocol-http2 (0.14.2)
204
213
  protocol-hpack (~> 1.4)
205
214
  protocol-http (~> 0.18)
@@ -209,35 +218,35 @@ GEM
209
218
  rack (2.2.3)
210
219
  rack-test (1.1.0)
211
220
  rack (>= 1.0, < 3)
212
- rails (6.1.3.1)
213
- actioncable (= 6.1.3.1)
214
- actionmailbox (= 6.1.3.1)
215
- actionmailer (= 6.1.3.1)
216
- actionpack (= 6.1.3.1)
217
- actiontext (= 6.1.3.1)
218
- actionview (= 6.1.3.1)
219
- activejob (= 6.1.3.1)
220
- activemodel (= 6.1.3.1)
221
- activerecord (= 6.1.3.1)
222
- activestorage (= 6.1.3.1)
223
- activesupport (= 6.1.3.1)
221
+ rails (6.1.4.1)
222
+ actioncable (= 6.1.4.1)
223
+ actionmailbox (= 6.1.4.1)
224
+ actionmailer (= 6.1.4.1)
225
+ actionpack (= 6.1.4.1)
226
+ actiontext (= 6.1.4.1)
227
+ actionview (= 6.1.4.1)
228
+ activejob (= 6.1.4.1)
229
+ activemodel (= 6.1.4.1)
230
+ activerecord (= 6.1.4.1)
231
+ activestorage (= 6.1.4.1)
232
+ activesupport (= 6.1.4.1)
224
233
  bundler (>= 1.15.0)
225
- railties (= 6.1.3.1)
234
+ railties (= 6.1.4.1)
226
235
  sprockets-rails (>= 2.0.0)
227
236
  rails-dom-testing (2.0.3)
228
237
  activesupport (>= 4.2.0)
229
238
  nokogiri (>= 1.6)
230
- rails-html-sanitizer (1.3.0)
239
+ rails-html-sanitizer (1.4.2)
231
240
  loofah (~> 2.3)
232
- railties (6.1.3.1)
233
- actionpack (= 6.1.3.1)
234
- activesupport (= 6.1.3.1)
241
+ railties (6.1.4.1)
242
+ actionpack (= 6.1.4.1)
243
+ activesupport (= 6.1.4.1)
235
244
  method_source
236
- rake (>= 0.8.7)
245
+ rake (>= 0.13)
237
246
  thor (~> 1.0)
238
247
  rainbow (3.0.0)
239
- rake (13.0.3)
240
- redis (4.2.5)
248
+ rake (13.0.6)
249
+ redis (4.4.0)
241
250
  retriable (3.1.2)
242
251
  rexml (3.2.5)
243
252
  rly (0.2.3)
@@ -254,7 +263,7 @@ GEM
254
263
  rspec-mocks (3.10.2)
255
264
  diff-lcs (>= 1.2.0, < 2.0)
256
265
  rspec-support (~> 3.10.0)
257
- rspec-rails (5.0.1)
266
+ rspec-rails (5.0.2)
258
267
  actionpack (>= 5.2)
259
268
  activesupport (>= 5.2)
260
269
  railties (>= 5.2)
@@ -273,11 +282,11 @@ GEM
273
282
  rubocop-rspec (1.37.0)
274
283
  rubocop (>= 0.68.1)
275
284
  ruby-progressbar (1.11.0)
276
- ruby2_keywords (0.0.4)
285
+ ruby2_keywords (0.0.5)
277
286
  sawyer (0.8.2)
278
287
  addressable (>= 2.3.5)
279
288
  faraday (> 0.8, < 2.0)
280
- semantic_logger (4.7.4)
289
+ semantic_logger (4.8.2)
281
290
  concurrent-ruby (~> 1.0)
282
291
  signet (0.15.0)
283
292
  addressable (~> 2.3)
@@ -298,11 +307,11 @@ GEM
298
307
  tzinfo (2.0.4)
299
308
  concurrent-ruby (~> 1.0)
300
309
  unicode-display_width (1.6.1)
301
- webmock (3.12.2)
302
- addressable (>= 2.3.6)
310
+ webmock (3.14.0)
311
+ addressable (>= 2.8.0)
303
312
  crack (>= 0.3.2)
304
313
  hashdiff (>= 0.4.0, < 2.0.0)
305
- websocket-driver (0.7.3)
314
+ websocket-driver (0.7.5)
306
315
  websocket-extensions (>= 0.1.0)
307
316
  websocket-extensions (0.1.5)
308
317
  zeitwerk (2.4.2)
@@ -329,4 +338,4 @@ DEPENDENCIES
329
338
  webmock
330
339
 
331
340
  BUNDLED WITH
332
- 2.2.9
341
+ 2.2.26