cloudtasker 0.12.rc9 → 0.12.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: 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