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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1a0759638a4af47fcc26467b93039b3c6355908db5cafd0a20972b7e48649b81
4
- data.tar.gz: a0f76c953bc0f64276f5b10f90300bcf7415dbfe305fac6697e4bd9fb83b53c0
3
+ metadata.gz: d0073665ed9d9a5422641a1e86d876f5d7de70a66a060c589b1a02958497dd2a
4
+ data.tar.gz: eaa1e44611b8f3d312064ab3019a1ba2bfc5e368ef7ae2eabed3f69395b1ad05
5
5
  SHA512:
6
- metadata.gz: ef16621727a56793623e1c582bac1f6e4971b8ff1af3ee36a3d37b22d239f7bb3504a35b5f1ffc9f250343b2ed5ae888e75b8d583b49487f34dc69eb45cd9d13
7
- data.tar.gz: aea0fa6eb2873f6b99df05c613d89363a3c6103fe814123d25a7508ede1fbf92cf653d10e7d57863d7ec6065d1c96e5c5f3ecf371a75ac925a588693849c320e
6
+ metadata.gz: 7c21279533185a8067adb7b78d860703dc9f7f33a099ed74d6a88f1a8f804401751d3387912671ddf683121fed1aaf9437d89839ad346cf11dd456e8595564e6
7
+ data.tar.gz: d03c95197c2a6195f16f9943d1d2621c3c2b759bb5cd721cb9218a33522fb40e936ddd378d01c0b073c1ef1c97653894ddc870d5ab0e566e195ae505f7f9b5ee
@@ -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/.rubocop.yml CHANGED
@@ -20,6 +20,10 @@ Metrics/LineLength:
20
20
  Metrics/MethodLength:
21
21
  Max: 20
22
22
 
23
+ RSpec/DescribeClass:
24
+ Exclude:
25
+ - 'spec/integration/**/*_spec.rb'
26
+
23
27
  RSpec/ExpectInHook:
24
28
  Enabled: false
25
29
 
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 < 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/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,4 +1,4 @@
1
- # Cloudtasker Unique Jobs
1
+ # Cloudtasker Batch Jobs
2
2
 
3
3
  **Note**: this extension requires redis
4
4
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- cloudtasker (0.11.rc1)
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.0.2.2)
17
- actionpack (= 6.0.2.2)
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.0.2.2)
21
- actionpack (= 6.0.2.2)
22
- activejob (= 6.0.2.2)
23
- activerecord (= 6.0.2.2)
24
- activestorage (= 6.0.2.2)
25
- activesupport (= 6.0.2.2)
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.0.2.2)
28
- actionpack (= 6.0.2.2)
29
- actionview (= 6.0.2.2)
30
- activejob (= 6.0.2.2)
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.0.2.2)
34
- actionview (= 6.0.2.2)
35
- activesupport (= 6.0.2.2)
36
- rack (~> 2.0, >= 2.0.8)
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.0.2.2)
41
- actionpack (= 6.0.2.2)
42
- activerecord (= 6.0.2.2)
43
- activestorage (= 6.0.2.2)
44
- activesupport (= 6.0.2.2)
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.0.2.2)
47
- activesupport (= 6.0.2.2)
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.0.2.2)
53
- activesupport (= 6.0.2.2)
54
+ activejob (6.1.4.1)
55
+ activesupport (= 6.1.4.1)
54
56
  globalid (>= 0.3.6)
55
- activemodel (6.0.2.2)
56
- activesupport (= 6.0.2.2)
57
- activerecord (6.0.2.2)
58
- activemodel (= 6.0.2.2)
59
- activesupport (= 6.0.2.2)
60
- activestorage (6.0.2.2)
61
- actionpack (= 6.0.2.2)
62
- activejob (= 6.0.2.2)
63
- activerecord (= 6.0.2.2)
64
- marcel (~> 0.3.1)
65
- activesupport (6.0.2.2)
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 (>= 0.7, < 2)
68
- minitest (~> 5.1)
69
- tzinfo (~> 1.1)
70
- zeitwerk (~> 2.2)
71
- addressable (2.7.0)
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.2.0)
77
+ appraisal (2.4.1)
74
78
  bundler
75
79
  rake
76
80
  thor (>= 0.14.0)
77
- ast (2.4.0)
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.6)
80
- connection_pool (2.2.3)
81
- crack (0.4.3)
82
- safe_yaml (~> 1.0.0)
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.3)
85
- erubi (1.9.0)
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.1)
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
- fugit (1.3.9)
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.3)
95
- github_changelog_generator (1.15.2)
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
- retriable (~> 3.0)
103
- globalid (0.4.2)
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.11.4)
116
- googleapis-common-protos (1.3.10)
117
- google-protobuf (~> 3.11)
118
- googleapis-common-protos-types (>= 1.0.5, < 2.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.5)
121
- google-protobuf (~> 3.11)
122
- googleauth (0.12.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.28.0)
130
- google-protobuf (~> 3.11)
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.10)
133
- google-protobuf (~> 3.11)
134
- googleapis-common-protos (>= 1.3.10, < 2.0)
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.2)
180
+ i18n (1.8.10)
138
181
  concurrent-ruby (~> 1.0)
139
182
  jaro_winkler (1.5.4)
140
- jwt (2.2.1)
141
- loofah (2.5.0)
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.3.3)
147
- mimemagic (~> 0.3.2)
189
+ marcel (1.0.1)
148
190
  memoist (0.16.2)
149
191
  method_source (1.0.0)
150
- mimemagic (0.3.4)
151
- mini_mime (1.0.2)
152
- mini_portile2 (2.4.0)
153
- minitest (5.14.0)
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.2)
157
- nokogiri (1.10.9)
158
- mini_portile2 (~> 2.4.0)
159
- octokit (4.18.0)
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.0)
163
- parallel (1.19.1)
164
- parser (2.7.1.1)
165
- ast (~> 2.4.0)
166
- public_suffix (4.0.4)
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
- rack (2.2.2)
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.0.2.2)
172
- actioncable (= 6.0.2.2)
173
- actionmailbox (= 6.0.2.2)
174
- actionmailer (= 6.0.2.2)
175
- actionpack (= 6.0.2.2)
176
- actiontext (= 6.0.2.2)
177
- actionview (= 6.0.2.2)
178
- activejob (= 6.0.2.2)
179
- activemodel (= 6.0.2.2)
180
- activerecord (= 6.0.2.2)
181
- activestorage (= 6.0.2.2)
182
- activesupport (= 6.0.2.2)
183
- bundler (>= 1.3.0)
184
- railties (= 6.0.2.2)
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.3.0)
239
+ rails-html-sanitizer (1.4.2)
190
240
  loofah (~> 2.3)
191
- railties (6.0.2.2)
192
- actionpack (= 6.0.2.2)
193
- activesupport (= 6.0.2.2)
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.8.7)
196
- thor (>= 0.20.3, < 2.0)
245
+ rake (>= 0.13)
246
+ thor (~> 1.0)
197
247
  rainbow (3.0.0)
198
- rake (13.0.1)
199
- redis (4.2.2)
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.9.0)
203
- rspec-core (~> 3.9.0)
204
- rspec-expectations (~> 3.9.0)
205
- rspec-mocks (~> 3.9.0)
206
- rspec-core (3.9.1)
207
- rspec-support (~> 3.9.1)
208
- rspec-expectations (3.9.1)
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.9.0)
211
- rspec-mocks (3.9.1)
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.9.0)
214
- rspec-rails (4.0.0)
215
- actionpack (>= 4.2)
216
- activesupport (>= 4.2)
217
- railties (>= 4.2)
218
- rspec-core (~> 3.9)
219
- rspec-expectations (~> 3.9)
220
- rspec-mocks (~> 3.9)
221
- rspec-support (~> 3.9)
222
- rspec-support (3.9.2)
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.10.1)
233
- safe_yaml (1.0.5)
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.7.0)
289
+ semantic_logger (4.8.2)
238
290
  concurrent-ruby (~> 1.0)
239
- signet (0.14.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.0)
296
+ sprockets (4.0.2)
245
297
  concurrent-ruby (~> 1.0)
246
298
  rack (> 1, < 3)
247
- sprockets-rails (3.2.1)
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.1)
253
- thread_safe (0.3.6)
254
- timecop (0.9.1)
255
- tzinfo (1.2.7)
256
- thread_safe (~> 0.1)
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.8.3)
259
- addressable (>= 2.3.6)
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.1)
314
+ websocket-driver (0.7.5)
263
315
  websocket-extensions (>= 0.1.0)
264
- websocket-extensions (0.1.4)
265
- zeitwerk (2.3.0)
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.1.4
341
+ 2.2.9