cloudtasker 0.11.rc1 → 0.11.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/.rubocop.yml +4 -0
- data/CHANGELOG.md +32 -0
- data/README.md +94 -0
- data/app/controllers/cloudtasker/worker_controller.rb +4 -1
- data/cloudtasker.gemspec +1 -0
- data/docs/BATCH_JOBS.md +1 -1
- data/gemfiles/google_cloud_tasks_1.0.gemfile.lock +200 -147
- data/gemfiles/google_cloud_tasks_1.1.gemfile.lock +200 -147
- data/gemfiles/google_cloud_tasks_1.2.gemfile.lock +200 -147
- data/gemfiles/google_cloud_tasks_1.3.gemfile.lock +200 -147
- data/gemfiles/rails_5.2.gemfile.lock +136 -82
- data/gemfiles/rails_6.0.gemfile.lock +137 -83
- data/lib/active_job/queue_adapters/cloudtasker_adapter.rb +82 -0
- data/lib/cloudtasker/batch/job.rb +4 -0
- data/lib/cloudtasker/batch/middleware.rb +2 -0
- data/lib/cloudtasker/cli.rb +1 -0
- data/lib/cloudtasker/engine.rb +5 -1
- data/lib/cloudtasker/version.rb +1 -1
- data/lib/cloudtasker.rb +1 -0
- metadata +22 -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: d0073665ed9d9a5422641a1e86d876f5d7de70a66a060c589b1a02958497dd2a
|
4
|
+
data.tar.gz: eaa1e44611b8f3d312064ab3019a1ba2bfc5e368ef7ae2eabed3f69395b1ad05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7c21279533185a8067adb7b78d860703dc9f7f33a099ed74d6a88f1a8f804401751d3387912671ddf683121fed1aaf9437d89839ad346cf11dd456e8595564e6
|
7
|
+
data.tar.gz: d03c95197c2a6195f16f9943d1d2621c3c2b759bb5cd721cb9218a33522fb40e936ddd378d01c0b073c1ef1c97653894ddc870d5ab0e566e195ae505f7f9b5ee
|
data/.github/workflows/test.yml
CHANGED
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,37 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [v0.11.1](https://github.com/keypup-io/cloudtasker/tree/v0.11.1) (2021-08-25)
|
4
|
+
|
5
|
+
[Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.11.0...v0.11.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.10.2](https://github.com/keypup-io/cloudtasker/tree/v0.10.2) (2021-08-25)
|
12
|
+
|
13
|
+
[Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.10.1...v0.10.2)
|
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.9.5](https://github.com/keypup-io/cloudtasker/tree/v0.9.5) (2021-08-25)
|
20
|
+
|
21
|
+
[Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.9.4...v0.9.5)
|
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.11.0](https://github.com/keypup-io/cloudtasker/tree/v0.11.0) (2020-11-23)
|
28
|
+
|
29
|
+
[Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.10.0...v0.11.0)
|
30
|
+
|
31
|
+
**Improvements:**
|
32
|
+
- Worker: drop job (return 205 response) when worker arguments are not available (e.g. arguments were stored in Redis and the latter was flushed)
|
33
|
+
- Rails: add ActiveJob adapter (thanks @vovimayhem)
|
34
|
+
|
3
35
|
## [v0.10.1](https://github.com/keypup-io/cloudtasker/tree/v0.10.1) (2020-10-05)
|
4
36
|
|
5
37
|
[Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.10.0...v0.10.1)
|
data/README.md
CHANGED
@@ -12,10 +12,13 @@ Cloudtasker also provides optional modules for running [cron jobs](docs/CRON_JOB
|
|
12
12
|
|
13
13
|
A local processing server is also available for development. This local server processes jobs in lieu of Cloud Tasks and allows you to work offline.
|
14
14
|
|
15
|
+
**Maturity**: This gem is production-ready. We at Keypup have already processed millions of jobs using Cloudtasker and all related extensions (cron, batch and unique jobs). I'm waiting till the end of 2020 before releasing the official `v1.0.0` in case we've missed any edge-case bug.
|
16
|
+
|
15
17
|
## Summary
|
16
18
|
|
17
19
|
1. [Installation](#installation)
|
18
20
|
2. [Get started with Rails](#get-started-with-rails)
|
21
|
+
2. [Get started with Rails & ActiveJob](#get-started-with-rails--activejob)
|
19
22
|
3. [Configuring Cloudtasker](#configuring-cloudtasker)
|
20
23
|
1. [Cloud Tasks authentication & permissions](#cloud-tasks-authentication--permissions)
|
21
24
|
2. [Cloudtasker initializer](#cloudtasker-initializer)
|
@@ -132,6 +135,95 @@ That's it! Your job was picked up by the Cloudtasker local server and sent for p
|
|
132
135
|
|
133
136
|
Now jump to the next section to configure your app to use Google Cloud Tasks as a backend.
|
134
137
|
|
138
|
+
## Get started with Rails & ActiveJob
|
139
|
+
**Note**: ActiveJob is supported since `0.11.0`
|
140
|
+
**Note**: Cloudtasker extensions (cron, batch and unique jobs) are not available when using cloudtasker via ActiveJob.
|
141
|
+
|
142
|
+
Cloudtasker is pre-integrated with ActiveJob. Follow the steps below to get started.
|
143
|
+
|
144
|
+
Install redis on your machine (this is required by the Cloudtasker local processing server)
|
145
|
+
```bash
|
146
|
+
# E.g. using brew
|
147
|
+
brew install redis
|
148
|
+
```
|
149
|
+
|
150
|
+
Add the following initializer
|
151
|
+
```ruby
|
152
|
+
# config/initializers/cloudtasker.rb
|
153
|
+
|
154
|
+
Cloudtasker.configure do |config|
|
155
|
+
#
|
156
|
+
# Adapt the server port to be the one used by your Rails web process
|
157
|
+
#
|
158
|
+
config.processor_host = 'http://localhost:3000'
|
159
|
+
|
160
|
+
#
|
161
|
+
# If you do not have any Rails secret_key_base defined, uncomment the following
|
162
|
+
# This secret is used to authenticate jobs sent to the processing endpoint
|
163
|
+
# of your application.
|
164
|
+
#
|
165
|
+
# config.secret = 'some-long-token'
|
166
|
+
end
|
167
|
+
```
|
168
|
+
|
169
|
+
Configure ActiveJob to use Cloudtasker. You can also configure ActiveJob per environment via the config/environments/:env.rb files
|
170
|
+
```ruby
|
171
|
+
# config/application.rb
|
172
|
+
|
173
|
+
require_relative 'boot'
|
174
|
+
require 'rails/all'
|
175
|
+
|
176
|
+
Bundler.require(*Rails.groups)
|
177
|
+
|
178
|
+
module Dummy
|
179
|
+
class Application < Rails::Application
|
180
|
+
# Initialize configuration defaults for originally generated Rails version.
|
181
|
+
config.load_defaults 6.0
|
182
|
+
|
183
|
+
# Settings in config/environments/* take precedence over those specified here.
|
184
|
+
# Application configuration can go into files in config/initializers
|
185
|
+
# -- all .rb files in that directory are automatically loaded after loading
|
186
|
+
# the framework and any gems in your application.
|
187
|
+
|
188
|
+
# Use cloudtasker as the ActiveJob backend:
|
189
|
+
config.active_job.queue_adapter = :cloudtasker
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
```
|
194
|
+
|
195
|
+
Define your first job:
|
196
|
+
```ruby
|
197
|
+
# app/jobs/example_job.rb
|
198
|
+
|
199
|
+
class ExampleJob < ApplicationJob
|
200
|
+
queue_as :default
|
201
|
+
|
202
|
+
def perform(some_arg)
|
203
|
+
logger.info("Job run with #{some_arg}. This is working!")
|
204
|
+
end
|
205
|
+
end
|
206
|
+
```
|
207
|
+
|
208
|
+
Launch Rails and the local Cloudtasker processing server (or add `cloudtasker` to your foreman config as a `worker` process)
|
209
|
+
```bash
|
210
|
+
# In one terminal
|
211
|
+
> rails s -p 3000
|
212
|
+
|
213
|
+
# In another terminal
|
214
|
+
> cloudtasker
|
215
|
+
```
|
216
|
+
|
217
|
+
Open a Rails console and enqueue some jobs
|
218
|
+
```ruby
|
219
|
+
# Process job as soon as possible
|
220
|
+
ExampleJob.perform_later('foo')
|
221
|
+
|
222
|
+
# Process job in 60 seconds
|
223
|
+
ExampleJob.set(wait: 60).perform_later('foo')
|
224
|
+
```
|
225
|
+
|
226
|
+
|
135
227
|
## Configuring Cloudtasker
|
136
228
|
|
137
229
|
### Cloud Tasks authentication & permissions
|
@@ -361,6 +453,8 @@ CriticalWorker.schedule(args: [1], queue: :important)
|
|
361
453
|
```
|
362
454
|
|
363
455
|
## Extensions
|
456
|
+
**Note**: Extensions are not available when using cloudtasker via ActiveJob.
|
457
|
+
|
364
458
|
Cloudtasker comes with three optional features:
|
365
459
|
- Cron Jobs [[docs](docs/CRON_JOBS.md)]: Run jobs at fixed intervals.
|
366
460
|
- Batch Jobs [[docs](docs/BATCH_JOBS.md)]: Run jobs in jobs and track completion of the overall batch.
|
@@ -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/cloudtasker.gemspec
CHANGED
@@ -41,6 +41,7 @@ Gem::Specification.new do |spec|
|
|
41
41
|
spec.add_development_dependency 'github_changelog_generator'
|
42
42
|
spec.add_development_dependency 'rake', '>= 12.3.3'
|
43
43
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
44
|
+
spec.add_development_dependency 'rspec-json_expectations', '~> 2.2'
|
44
45
|
spec.add_development_dependency 'rubocop', '0.76.0'
|
45
46
|
spec.add_development_dependency 'rubocop-rspec', '1.37.0'
|
46
47
|
spec.add_development_dependency 'semantic_logger'
|
data/docs/BATCH_JOBS.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
cloudtasker (0.11.
|
4
|
+
cloudtasker (0.11.0)
|
5
5
|
activesupport
|
6
6
|
connection_pool
|
7
7
|
fugit
|
@@ -13,95 +13,138 @@ PATH
|
|
13
13
|
GEM
|
14
14
|
remote: https://rubygems.org/
|
15
15
|
specs:
|
16
|
-
actioncable (6.
|
17
|
-
actionpack (= 6.
|
16
|
+
actioncable (6.1.4.1)
|
17
|
+
actionpack (= 6.1.4.1)
|
18
|
+
activesupport (= 6.1.4.1)
|
18
19
|
nio4r (~> 2.0)
|
19
20
|
websocket-driver (>= 0.6.1)
|
20
|
-
actionmailbox (6.
|
21
|
-
actionpack (= 6.
|
22
|
-
activejob (= 6.
|
23
|
-
activerecord (= 6.
|
24
|
-
activestorage (= 6.
|
25
|
-
activesupport (= 6.
|
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)
|
26
27
|
mail (>= 2.7.1)
|
27
|
-
actionmailer (6.
|
28
|
-
actionpack (= 6.
|
29
|
-
actionview (= 6.
|
30
|
-
activejob (= 6.
|
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)
|
31
33
|
mail (~> 2.5, >= 2.5.4)
|
32
34
|
rails-dom-testing (~> 2.0)
|
33
|
-
actionpack (6.
|
34
|
-
actionview (= 6.
|
35
|
-
activesupport (= 6.
|
36
|
-
rack (~> 2.0, >= 2.0.
|
35
|
+
actionpack (6.1.4.1)
|
36
|
+
actionview (= 6.1.4.1)
|
37
|
+
activesupport (= 6.1.4.1)
|
38
|
+
rack (~> 2.0, >= 2.0.9)
|
37
39
|
rack-test (>= 0.6.3)
|
38
40
|
rails-dom-testing (~> 2.0)
|
39
41
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
40
|
-
actiontext (6.
|
41
|
-
actionpack (= 6.
|
42
|
-
activerecord (= 6.
|
43
|
-
activestorage (= 6.
|
44
|
-
activesupport (= 6.
|
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)
|
45
47
|
nokogiri (>= 1.8.5)
|
46
|
-
actionview (6.
|
47
|
-
activesupport (= 6.
|
48
|
+
actionview (6.1.4.1)
|
49
|
+
activesupport (= 6.1.4.1)
|
48
50
|
builder (~> 3.1)
|
49
51
|
erubi (~> 1.4)
|
50
52
|
rails-dom-testing (~> 2.0)
|
51
53
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
52
|
-
activejob (6.
|
53
|
-
activesupport (= 6.
|
54
|
+
activejob (6.1.4.1)
|
55
|
+
activesupport (= 6.1.4.1)
|
54
56
|
globalid (>= 0.3.6)
|
55
|
-
activemodel (6.
|
56
|
-
activesupport (= 6.
|
57
|
-
activerecord (6.
|
58
|
-
activemodel (= 6.
|
59
|
-
activesupport (= 6.
|
60
|
-
activestorage (6.
|
61
|
-
actionpack (= 6.
|
62
|
-
activejob (= 6.
|
63
|
-
activerecord (= 6.
|
64
|
-
|
65
|
-
|
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
|
+
marcel (~> 1.0.0)
|
68
|
+
mini_mime (>= 1.1.0)
|
69
|
+
activesupport (6.1.4.1)
|
66
70
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
67
|
-
i18n (>=
|
68
|
-
minitest (
|
69
|
-
tzinfo (~>
|
70
|
-
zeitwerk (~> 2.
|
71
|
-
addressable (2.
|
71
|
+
i18n (>= 1.6, < 2)
|
72
|
+
minitest (>= 5.1)
|
73
|
+
tzinfo (~> 2.0)
|
74
|
+
zeitwerk (~> 2.3)
|
75
|
+
addressable (2.8.0)
|
72
76
|
public_suffix (>= 2.0.2, < 5.0)
|
73
|
-
appraisal (2.
|
77
|
+
appraisal (2.4.1)
|
74
78
|
bundler
|
75
79
|
rake
|
76
80
|
thor (>= 0.14.0)
|
77
|
-
ast (2.4.
|
81
|
+
ast (2.4.2)
|
82
|
+
async (1.30.1)
|
83
|
+
console (~> 1.10)
|
84
|
+
nio4r (~> 2.3)
|
85
|
+
timers (~> 4.1)
|
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
|
+
protocol-http2 (~> 0.14.0)
|
93
|
+
async-http-faraday (0.11.0)
|
94
|
+
async-http (~> 0.42)
|
95
|
+
faraday
|
96
|
+
async-io (1.32.2)
|
97
|
+
async
|
98
|
+
async-pool (0.3.8)
|
99
|
+
async (>= 1.25)
|
78
100
|
builder (3.2.4)
|
79
|
-
concurrent-ruby (1.1.
|
80
|
-
connection_pool (2.2.
|
81
|
-
|
82
|
-
|
101
|
+
concurrent-ruby (1.1.9)
|
102
|
+
connection_pool (2.2.5)
|
103
|
+
console (1.13.1)
|
104
|
+
fiber-local
|
105
|
+
crack (0.4.5)
|
106
|
+
rexml
|
83
107
|
crass (1.0.6)
|
84
|
-
diff-lcs (1.
|
85
|
-
erubi (1.
|
108
|
+
diff-lcs (1.4.4)
|
109
|
+
erubi (1.10.0)
|
86
110
|
et-orbi (1.2.4)
|
87
111
|
tzinfo
|
88
|
-
faraday (1.0
|
112
|
+
faraday (1.7.0)
|
113
|
+
faraday-em_http (~> 1.0)
|
114
|
+
faraday-em_synchrony (~> 1.0)
|
115
|
+
faraday-excon (~> 1.1)
|
116
|
+
faraday-httpclient (~> 1.0.1)
|
117
|
+
faraday-net_http (~> 1.0)
|
118
|
+
faraday-net_http_persistent (~> 1.1)
|
119
|
+
faraday-patron (~> 1.0)
|
120
|
+
faraday-rack (~> 1.0)
|
89
121
|
multipart-post (>= 1.2, < 3)
|
122
|
+
ruby2_keywords (>= 0.0.4)
|
123
|
+
faraday-em_http (1.0.0)
|
124
|
+
faraday-em_synchrony (1.0.0)
|
125
|
+
faraday-excon (1.1.0)
|
90
126
|
faraday-http-cache (2.2.0)
|
91
127
|
faraday (>= 0.8)
|
92
|
-
|
128
|
+
faraday-httpclient (1.0.1)
|
129
|
+
faraday-net_http (1.0.1)
|
130
|
+
faraday-net_http_persistent (1.2.0)
|
131
|
+
faraday-patron (1.0.0)
|
132
|
+
faraday-rack (1.0.0)
|
133
|
+
fiber-local (1.0.0)
|
134
|
+
fugit (1.5.1)
|
93
135
|
et-orbi (~> 1.1, >= 1.1.8)
|
94
|
-
raabro (~> 1.
|
95
|
-
github_changelog_generator (1.
|
136
|
+
raabro (~> 1.4)
|
137
|
+
github_changelog_generator (1.16.4)
|
96
138
|
activesupport
|
139
|
+
async (>= 1.25.0)
|
140
|
+
async-http-faraday
|
97
141
|
faraday-http-cache
|
98
142
|
multi_json
|
99
143
|
octokit (~> 4.6)
|
100
144
|
rainbow (>= 2.2.1)
|
101
145
|
rake (>= 10.0)
|
102
|
-
|
103
|
-
|
104
|
-
activesupport (>= 4.2.0)
|
146
|
+
globalid (0.5.2)
|
147
|
+
activesupport (>= 5.0)
|
105
148
|
google-cloud-tasks (1.0.0)
|
106
149
|
google-gax (~> 1.3)
|
107
150
|
googleapis-common-protos (>= 1.3.9, < 2.0)
|
@@ -112,114 +155,123 @@ GEM
|
|
112
155
|
googleauth (~> 0.9)
|
113
156
|
grpc (~> 1.24)
|
114
157
|
rly (~> 0.2.3)
|
115
|
-
google-protobuf (3.
|
116
|
-
googleapis-common-protos (1.3.
|
117
|
-
google-protobuf (~> 3.
|
118
|
-
googleapis-common-protos-types (>= 1.0.
|
158
|
+
google-protobuf (3.17.3)
|
159
|
+
googleapis-common-protos (1.3.11)
|
160
|
+
google-protobuf (~> 3.14)
|
161
|
+
googleapis-common-protos-types (>= 1.0.6, < 2.0)
|
119
162
|
grpc (~> 1.27)
|
120
|
-
googleapis-common-protos-types (1.0
|
121
|
-
google-protobuf (~> 3.
|
122
|
-
googleauth (0.
|
163
|
+
googleapis-common-protos-types (1.1.0)
|
164
|
+
google-protobuf (~> 3.14)
|
165
|
+
googleauth (0.17.0)
|
123
166
|
faraday (>= 0.17.3, < 2.0)
|
124
167
|
jwt (>= 1.4, < 3.0)
|
125
168
|
memoist (~> 0.16)
|
126
169
|
multi_json (~> 1.11)
|
127
170
|
os (>= 0.9, < 2.0)
|
128
171
|
signet (~> 0.14)
|
129
|
-
grpc (1.
|
130
|
-
google-protobuf (~> 3.
|
172
|
+
grpc (1.38.0)
|
173
|
+
google-protobuf (~> 3.15)
|
131
174
|
googleapis-common-protos-types (~> 1.0)
|
132
|
-
grpc-google-iam-v1 (0.6.
|
133
|
-
google-protobuf (~> 3.
|
134
|
-
googleapis-common-protos (>= 1.3.
|
175
|
+
grpc-google-iam-v1 (0.6.11)
|
176
|
+
google-protobuf (~> 3.14)
|
177
|
+
googleapis-common-protos (>= 1.3.11, < 2.0)
|
135
178
|
grpc (~> 1.27)
|
136
179
|
hashdiff (1.0.1)
|
137
|
-
i18n (1.8.
|
180
|
+
i18n (1.8.10)
|
138
181
|
concurrent-ruby (~> 1.0)
|
139
182
|
jaro_winkler (1.5.4)
|
140
|
-
jwt (2.2.
|
141
|
-
loofah (2.
|
183
|
+
jwt (2.2.3)
|
184
|
+
loofah (2.12.0)
|
142
185
|
crass (~> 1.0.2)
|
143
186
|
nokogiri (>= 1.5.9)
|
144
187
|
mail (2.7.1)
|
145
188
|
mini_mime (>= 0.1.1)
|
146
|
-
marcel (0.
|
147
|
-
mimemagic (~> 0.3.2)
|
189
|
+
marcel (1.0.1)
|
148
190
|
memoist (0.16.2)
|
149
191
|
method_source (1.0.0)
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
multi_json (1.14.1)
|
192
|
+
mini_mime (1.1.1)
|
193
|
+
mini_portile2 (2.6.1)
|
194
|
+
minitest (5.14.4)
|
195
|
+
multi_json (1.15.0)
|
155
196
|
multipart-post (2.1.1)
|
156
|
-
nio4r (2.5.
|
157
|
-
nokogiri (1.
|
158
|
-
mini_portile2 (~> 2.
|
159
|
-
|
197
|
+
nio4r (2.5.8)
|
198
|
+
nokogiri (1.12.3)
|
199
|
+
mini_portile2 (~> 2.6.1)
|
200
|
+
racc (~> 1.4)
|
201
|
+
octokit (4.21.0)
|
160
202
|
faraday (>= 0.9)
|
161
203
|
sawyer (~> 0.8.0, >= 0.5.3)
|
162
|
-
os (1.1.
|
163
|
-
parallel (1.
|
164
|
-
parser (
|
165
|
-
ast (~> 2.4.
|
166
|
-
|
204
|
+
os (1.1.1)
|
205
|
+
parallel (1.20.1)
|
206
|
+
parser (3.0.2.0)
|
207
|
+
ast (~> 2.4.1)
|
208
|
+
protocol-hpack (1.4.2)
|
209
|
+
protocol-http (0.22.5)
|
210
|
+
protocol-http1 (0.14.2)
|
211
|
+
protocol-http (~> 0.22)
|
212
|
+
protocol-http2 (0.14.2)
|
213
|
+
protocol-hpack (~> 1.4)
|
214
|
+
protocol-http (~> 0.18)
|
215
|
+
public_suffix (4.0.6)
|
167
216
|
raabro (1.4.0)
|
168
|
-
|
217
|
+
racc (1.5.2)
|
218
|
+
rack (2.2.3)
|
169
219
|
rack-test (1.1.0)
|
170
220
|
rack (>= 1.0, < 3)
|
171
|
-
rails (6.
|
172
|
-
actioncable (= 6.
|
173
|
-
actionmailbox (= 6.
|
174
|
-
actionmailer (= 6.
|
175
|
-
actionpack (= 6.
|
176
|
-
actiontext (= 6.
|
177
|
-
actionview (= 6.
|
178
|
-
activejob (= 6.
|
179
|
-
activemodel (= 6.
|
180
|
-
activerecord (= 6.
|
181
|
-
activestorage (= 6.
|
182
|
-
activesupport (= 6.
|
183
|
-
bundler (>= 1.
|
184
|
-
railties (= 6.
|
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)
|
233
|
+
bundler (>= 1.15.0)
|
234
|
+
railties (= 6.1.4.1)
|
185
235
|
sprockets-rails (>= 2.0.0)
|
186
236
|
rails-dom-testing (2.0.3)
|
187
237
|
activesupport (>= 4.2.0)
|
188
238
|
nokogiri (>= 1.6)
|
189
|
-
rails-html-sanitizer (1.
|
239
|
+
rails-html-sanitizer (1.4.2)
|
190
240
|
loofah (~> 2.3)
|
191
|
-
railties (6.
|
192
|
-
actionpack (= 6.
|
193
|
-
activesupport (= 6.
|
241
|
+
railties (6.1.4.1)
|
242
|
+
actionpack (= 6.1.4.1)
|
243
|
+
activesupport (= 6.1.4.1)
|
194
244
|
method_source
|
195
|
-
rake (>= 0.
|
196
|
-
thor (
|
245
|
+
rake (>= 0.13)
|
246
|
+
thor (~> 1.0)
|
197
247
|
rainbow (3.0.0)
|
198
|
-
rake (13.0.
|
199
|
-
redis (4.
|
248
|
+
rake (13.0.6)
|
249
|
+
redis (4.4.0)
|
200
250
|
retriable (3.1.2)
|
251
|
+
rexml (3.2.5)
|
201
252
|
rly (0.2.3)
|
202
|
-
rspec (3.
|
203
|
-
rspec-core (~> 3.
|
204
|
-
rspec-expectations (~> 3.
|
205
|
-
rspec-mocks (~> 3.
|
206
|
-
rspec-core (3.
|
207
|
-
rspec-support (~> 3.
|
208
|
-
rspec-expectations (3.
|
253
|
+
rspec (3.10.0)
|
254
|
+
rspec-core (~> 3.10.0)
|
255
|
+
rspec-expectations (~> 3.10.0)
|
256
|
+
rspec-mocks (~> 3.10.0)
|
257
|
+
rspec-core (3.10.1)
|
258
|
+
rspec-support (~> 3.10.0)
|
259
|
+
rspec-expectations (3.10.1)
|
209
260
|
diff-lcs (>= 1.2.0, < 2.0)
|
210
|
-
rspec-support (~> 3.
|
211
|
-
rspec-
|
261
|
+
rspec-support (~> 3.10.0)
|
262
|
+
rspec-json_expectations (2.2.0)
|
263
|
+
rspec-mocks (3.10.2)
|
212
264
|
diff-lcs (>= 1.2.0, < 2.0)
|
213
|
-
rspec-support (~> 3.
|
214
|
-
rspec-rails (
|
215
|
-
actionpack (>=
|
216
|
-
activesupport (>=
|
217
|
-
railties (>=
|
218
|
-
rspec-core (~> 3.
|
219
|
-
rspec-expectations (~> 3.
|
220
|
-
rspec-mocks (~> 3.
|
221
|
-
rspec-support (~> 3.
|
222
|
-
rspec-support (3.
|
265
|
+
rspec-support (~> 3.10.0)
|
266
|
+
rspec-rails (5.0.2)
|
267
|
+
actionpack (>= 5.2)
|
268
|
+
activesupport (>= 5.2)
|
269
|
+
railties (>= 5.2)
|
270
|
+
rspec-core (~> 3.10)
|
271
|
+
rspec-expectations (~> 3.10)
|
272
|
+
rspec-mocks (~> 3.10)
|
273
|
+
rspec-support (~> 3.10)
|
274
|
+
rspec-support (3.10.2)
|
223
275
|
rubocop (0.76.0)
|
224
276
|
jaro_winkler (~> 1.5.1)
|
225
277
|
parallel (~> 1.10)
|
@@ -229,40 +281,40 @@ GEM
|
|
229
281
|
unicode-display_width (>= 1.4.0, < 1.7)
|
230
282
|
rubocop-rspec (1.37.0)
|
231
283
|
rubocop (>= 0.68.1)
|
232
|
-
ruby-progressbar (1.
|
233
|
-
|
284
|
+
ruby-progressbar (1.11.0)
|
285
|
+
ruby2_keywords (0.0.5)
|
234
286
|
sawyer (0.8.2)
|
235
287
|
addressable (>= 2.3.5)
|
236
288
|
faraday (> 0.8, < 2.0)
|
237
|
-
semantic_logger (4.
|
289
|
+
semantic_logger (4.8.2)
|
238
290
|
concurrent-ruby (~> 1.0)
|
239
|
-
signet (0.
|
291
|
+
signet (0.15.0)
|
240
292
|
addressable (~> 2.3)
|
241
293
|
faraday (>= 0.17.3, < 2.0)
|
242
294
|
jwt (>= 1.5, < 3.0)
|
243
295
|
multi_json (~> 1.10)
|
244
|
-
sprockets (4.0.
|
296
|
+
sprockets (4.0.2)
|
245
297
|
concurrent-ruby (~> 1.0)
|
246
298
|
rack (> 1, < 3)
|
247
|
-
sprockets-rails (3.2.
|
299
|
+
sprockets-rails (3.2.2)
|
248
300
|
actionpack (>= 4.0)
|
249
301
|
activesupport (>= 4.0)
|
250
302
|
sprockets (>= 3.0.0)
|
251
303
|
sqlite3 (1.4.2)
|
252
|
-
thor (1.0
|
253
|
-
|
254
|
-
|
255
|
-
tzinfo (
|
256
|
-
|
304
|
+
thor (1.1.0)
|
305
|
+
timecop (0.9.4)
|
306
|
+
timers (4.3.3)
|
307
|
+
tzinfo (2.0.4)
|
308
|
+
concurrent-ruby (~> 1.0)
|
257
309
|
unicode-display_width (1.6.1)
|
258
|
-
webmock (3.
|
259
|
-
addressable (>= 2.
|
310
|
+
webmock (3.14.0)
|
311
|
+
addressable (>= 2.8.0)
|
260
312
|
crack (>= 0.3.2)
|
261
313
|
hashdiff (>= 0.4.0, < 2.0.0)
|
262
|
-
websocket-driver (0.7.
|
314
|
+
websocket-driver (0.7.5)
|
263
315
|
websocket-extensions (>= 0.1.0)
|
264
|
-
websocket-extensions (0.1.
|
265
|
-
zeitwerk (2.
|
316
|
+
websocket-extensions (0.1.5)
|
317
|
+
zeitwerk (2.4.2)
|
266
318
|
|
267
319
|
PLATFORMS
|
268
320
|
ruby
|
@@ -276,6 +328,7 @@ DEPENDENCIES
|
|
276
328
|
rails
|
277
329
|
rake (>= 12.3.3)
|
278
330
|
rspec (~> 3.0)
|
331
|
+
rspec-json_expectations (~> 2.2)
|
279
332
|
rspec-rails
|
280
333
|
rubocop (= 0.76.0)
|
281
334
|
rubocop-rspec (= 1.37.0)
|
@@ -285,4 +338,4 @@ DEPENDENCIES
|
|
285
338
|
webmock
|
286
339
|
|
287
340
|
BUNDLED WITH
|
288
|
-
2.
|
341
|
+
2.2.9
|