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 +4 -4
- data/.github/workflows/test.yml +1 -5
- data/CHANGELOG.md +39 -3
- data/README.md +56 -6
- data/app/controllers/cloudtasker/worker_controller.rb +4 -1
- data/docs/BATCH_JOBS.md +34 -2
- data/gemfiles/google_cloud_tasks_1.0.gemfile.lock +114 -105
- data/gemfiles/google_cloud_tasks_1.1.gemfile.lock +114 -105
- data/gemfiles/google_cloud_tasks_1.2.gemfile.lock +114 -105
- data/gemfiles/google_cloud_tasks_1.3.gemfile.lock +114 -105
- data/gemfiles/rails_5.2.gemfile.lock +59 -50
- data/gemfiles/rails_6.0.gemfile.lock +59 -50
- data/lib/cloudtasker/backend/redis_task.rb +1 -1
- data/lib/cloudtasker/batch/extension/worker.rb +1 -1
- data/lib/cloudtasker/batch/job.rb +12 -10
- data/lib/cloudtasker/config.rb +26 -2
- data/lib/cloudtasker/local_server.rb +1 -1
- data/lib/cloudtasker/unique_job/job.rb +5 -12
- data/lib/cloudtasker/version.rb +1 -1
- data/lib/cloudtasker/worker_handler.rb +2 -0
- data/lib/cloudtasker.rb +1 -0
- metadata +7 -8
- data/app/controllers/cloudtasker/application_controller.rb +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab6a1615278350bb5ba27b6cce48a9f8e6b6a52f2fcfcf91878428e948d58472
|
4
|
+
data.tar.gz: 8dfb96442d4b4010f0cf1e81f08b5a804c0a5249a4a106aee7faabffe183f9e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4faaa0888a5446fde4726facf76a99c57c8dcbfbbabaae9cd7ae7640b774748aa1db5993bb61a242ac093b5797f43b649a99b91abf2882750ea6b0e3e18684a0
|
7
|
+
data.tar.gz: 3bc948b6437aa56ca98cdebb7eb2996ed4fb895a0fab2819adefb109de21387dcde5d16b89795bc075076958b310b74149b1731bfb90016903fa491f10859736
|
data/.github/workflows/test.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,40 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
##
|
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.
|
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) (
|
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. [
|
39
|
-
3. [
|
40
|
-
4. [
|
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.
|
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
|
-
###
|
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.
|
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 <
|
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.
|
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.
|
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.
|
17
|
-
actionpack (= 6.1.
|
18
|
-
activesupport (= 6.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.
|
22
|
-
actionpack (= 6.1.
|
23
|
-
activejob (= 6.1.
|
24
|
-
activerecord (= 6.1.
|
25
|
-
activestorage (= 6.1.
|
26
|
-
activesupport (= 6.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.
|
29
|
-
actionpack (= 6.1.
|
30
|
-
actionview (= 6.1.
|
31
|
-
activejob (= 6.1.
|
32
|
-
activesupport (= 6.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.
|
36
|
-
actionview (= 6.1.
|
37
|
-
activesupport (= 6.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.
|
43
|
-
actionpack (= 6.1.
|
44
|
-
activerecord (= 6.1.
|
45
|
-
activestorage (= 6.1.
|
46
|
-
activesupport (= 6.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.
|
49
|
-
activesupport (= 6.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.
|
55
|
-
activesupport (= 6.1.
|
54
|
+
activejob (6.1.4.1)
|
55
|
+
activesupport (= 6.1.4.1)
|
56
56
|
globalid (>= 0.3.6)
|
57
|
-
activemodel (6.1.
|
58
|
-
activesupport (= 6.1.
|
59
|
-
activerecord (6.1.
|
60
|
-
activemodel (= 6.1.
|
61
|
-
activesupport (= 6.1.
|
62
|
-
activestorage (6.1.
|
63
|
-
actionpack (= 6.1.
|
64
|
-
activejob (= 6.1.
|
65
|
-
activerecord (= 6.1.
|
66
|
-
activesupport (= 6.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 (
|
69
|
-
activesupport (6.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.
|
75
|
+
addressable (2.8.0)
|
76
76
|
public_suffix (>= 2.0.2, < 5.0)
|
77
|
-
appraisal (2.4.
|
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.
|
82
|
+
async (1.30.1)
|
83
83
|
console (~> 1.10)
|
84
84
|
nio4r (~> 2.3)
|
85
85
|
timers (~> 4.1)
|
86
|
-
async-http (0.
|
87
|
-
async (
|
88
|
-
async-io (
|
89
|
-
async-pool (
|
90
|
-
protocol-http (~> 0.
|
91
|
-
protocol-http1 (~> 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.
|
93
|
+
async-http-faraday (0.11.0)
|
94
94
|
async-http (~> 0.42)
|
95
95
|
faraday
|
96
|
-
async-io (1.
|
97
|
-
async
|
98
|
-
async-pool (0.3.
|
99
|
-
async (
|
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.
|
101
|
+
concurrent-ruby (1.1.9)
|
102
102
|
connection_pool (2.2.5)
|
103
|
-
console (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.
|
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.
|
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.
|
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.
|
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
|
-
|
137
|
-
|
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.
|
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
|
163
|
+
googleapis-common-protos-types (1.1.0)
|
155
164
|
google-protobuf (~> 3.14)
|
156
|
-
googleauth (0.
|
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.
|
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.
|
175
|
-
loofah (2.
|
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.
|
184
|
-
mini_portile2 (2.
|
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.
|
189
|
-
nokogiri (1.
|
190
|
-
mini_portile2 (~> 2.
|
197
|
+
nio4r (2.5.8)
|
198
|
+
nokogiri (1.12.3)
|
199
|
+
mini_portile2 (~> 2.6.1)
|
191
200
|
racc (~> 1.4)
|
192
|
-
octokit (4.
|
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.
|
206
|
+
parser (3.0.2.0)
|
198
207
|
ast (~> 2.4.1)
|
199
208
|
protocol-hpack (1.4.2)
|
200
|
-
protocol-http (0.
|
201
|
-
protocol-http1 (0.
|
202
|
-
protocol-http (~> 0.
|
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.
|
213
|
-
actioncable (= 6.1.
|
214
|
-
actionmailbox (= 6.1.
|
215
|
-
actionmailer (= 6.1.
|
216
|
-
actionpack (= 6.1.
|
217
|
-
actiontext (= 6.1.
|
218
|
-
actionview (= 6.1.
|
219
|
-
activejob (= 6.1.
|
220
|
-
activemodel (= 6.1.
|
221
|
-
activerecord (= 6.1.
|
222
|
-
activestorage (= 6.1.
|
223
|
-
activesupport (= 6.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.
|
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.
|
239
|
+
rails-html-sanitizer (1.4.2)
|
231
240
|
loofah (~> 2.3)
|
232
|
-
railties (6.1.
|
233
|
-
actionpack (= 6.1.
|
234
|
-
activesupport (= 6.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.
|
245
|
+
rake (>= 0.13)
|
237
246
|
thor (~> 1.0)
|
238
247
|
rainbow (3.0.0)
|
239
|
-
rake (13.0.
|
240
|
-
redis (4.
|
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.
|
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.
|
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.
|
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.
|
302
|
-
addressable (>= 2.
|
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.
|
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.
|
341
|
+
2.2.26
|