cloudtasker 0.11.rc1 → 0.11.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: 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