cloudtasker 0.8.0 → 0.8.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: e2a110c5354118a009e8620c887eb0c8bb9ff5c7aa63fefcf242ac9a649bd0e1
4
- data.tar.gz: 58772d851865727f326bc30dfa3b94f170fe602eff264ce8661f2abd175033e9
3
+ metadata.gz: 3459c464d92cbd6e9c920a0f67a96ba143bf5746af3e8dde4fe13cade0a75ffb
4
+ data.tar.gz: 42313e898816af4d2eb670622569e1545e13eb54f2de1acaee2f4cddb923e101
5
5
  SHA512:
6
- metadata.gz: af8b0e59a08d7e65bcc46f03135c17932b69816c2282bc651b1ae60887bde3ea0e52af051accb5606f1c2d042dd15dc224313a6aa7b8e6222aeef01806147464
7
- data.tar.gz: 8b9d7e921aca496913a36357a43e8e3c0f77e059ac31439b3ccbe749afde946117a9faca70de11ee50ed6a9ff97b3439889b90bdb30db534ba4ac7690a0e3bfb
6
+ metadata.gz: 7ce1fcf26ec35f3e21a8f932f5f530c54a136193458944535097e84186c23fdf61306059fbe7449af38c3747ba48b0aad380cf706c3d4d27ffa70eae36c2f042
7
+ data.tar.gz: ad8c3a5529ef16e699a5db45594b19ee72eaaa3ff22315e463fc68e7548b961ce399ce7a44af784270cf7cac02b057cc5f31bb41188eabbb6e29224fbc0e87ef
data/.gitignore CHANGED
@@ -12,5 +12,8 @@
12
12
  /spec/dummy/tmp/
13
13
  /tmp/
14
14
 
15
+ # Ignore lock files (e.g. Gemfile.lock)
16
+ *.lock
17
+
15
18
  # rspec failure tracking
16
19
  .rspec_status
@@ -1,5 +1,10 @@
1
1
  require: rubocop-rspec
2
2
 
3
+ AllCops:
4
+ Exclude:
5
+ - 'gemfiles/vendor/**/*'
6
+ - 'vendor/**/*'
7
+
3
8
  Metrics/ClassLength:
4
9
  Max: 150
5
10
 
@@ -2,11 +2,11 @@
2
2
  language: ruby
3
3
  cache: bundler
4
4
  rvm:
5
- - 2.3
6
- - 2.4
7
5
  - 2.5.5
6
+ services:
7
+ - redis-server
8
8
  before_install: gem install bundler -v 2.0.2
9
- before_script: rubocop
9
+ before_script: bundle exec rubocop
10
10
  gemfile:
11
11
  - gemfiles/google_cloud_tasks_1.0.gemfile
12
12
  - gemfiles/google_cloud_tasks_1.1.gemfile
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## [v0.8.0](https://github.com/keypup-io/cloudtasker/tree/v0.8.0) (2019-11-27)
4
+
5
+ [Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.7.0...v0.8.0)
6
+
3
7
  ## [v0.7.0](https://github.com/keypup-io/cloudtasker/tree/v0.7.0) (2019-11-25)
4
8
 
5
9
  [Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.6.0...v0.7.0)
data/README.md CHANGED
@@ -1,14 +1,16 @@
1
+ [![Build Status](https://travis-ci.org/keypup-io/cloudtasker.svg?branch=master)](https://travis-ci.org/keypup-io/cloudtasker) [![Gem Version](https://badge.fury.io/rb/cloudtasker.svg)](https://badge.fury.io/rb/cloudtasker)
2
+
1
3
  # Cloudtasker
2
4
 
3
5
  Background jobs for Ruby using Google Cloud Tasks.
4
6
 
5
7
  Cloudtasker provides an easy to manage interface to Google Cloud Tasks for background job processing. Workers can be defined programmatically using the Cloudtasker DSL and enqueued for processing using a simple to use API.
6
8
 
7
- Cloudtasker is particularly suited for serverless applications only responding to HTTP requests and where running a dedicated job processing is not an option (e.g. deploy via [Cloud Run](https://cloud.google.com/run)). All jobs enqueued in Cloud Tasks via Cloudtasker eventually gets processed by your application via HTTP requests.
9
+ Cloudtasker is particularly suited for serverless applications only responding to HTTP requests and where running a dedicated job processing is not an option (e.g. deploy via [Cloud Run](https://cloud.google.com/run)). All jobs enqueued in Cloud Tasks via Cloudtasker eventually get processed by your application via HTTP requests.
8
10
 
9
11
  Cloudtasker also provides optional modules for running [cron jobs](docs/CRON_JOBS.md), [batch jobs](docs/BATCH_JOBS.md) and [unique jobs](docs/UNIQUE_JOBS.md).
10
12
 
11
- A local processing server is also available in development. This local server processes jobs in lieu of Cloud Tasks and allow you to work offline.
13
+ A local processing server is also available in development. This local server processes jobs in lieu of Cloud Tasks and allows you to work offline.
12
14
 
13
15
  ## Summary
14
16
 
@@ -107,7 +109,7 @@ Open a Rails console and enqueue some jobs
107
109
  DummyWorker.perform_async('foo')
108
110
 
109
111
  # Process job in 60 seconds
110
- DummyWorker.perform_in(10, 'foo')
112
+ DummyWorker.perform_in(60, 'foo')
111
113
  ```
112
114
 
113
115
  Your Rails logs should display the following:
@@ -349,7 +351,7 @@ When working locally on your application it is usually not possible to have a pu
349
351
  ### Option 1: Cloudtasker local server
350
352
  The Cloudtasker local server is a ruby daemon that looks for jobs pushed to Redis and sends them to your application via HTTP POST requests. The server mimics the way Google Cloud Tasks works, but locally!
351
353
 
352
- You can configure your applicatiion to use the Cloudtasker local server using the following initializer:
354
+ You can configure your application to use the Cloudtasker local server using the following initializer:
353
355
  ```ruby
354
356
  # config/initializers/cloudtasker.rb
355
357
 
@@ -371,20 +373,20 @@ bundle exec cloudtasker
371
373
  You can as well define a Procfile to manage the cloudtasker process via foreman. Then use `foreman start` to launch both your Rails server and the Cloudtasker local server.
372
374
  ```yaml
373
375
  # Procfile
374
- web: rails s
375
- worker: cloudtasker
376
+ web: bundle exec rails s
377
+ worker: bundle exec cloudtasker
376
378
  ```
377
379
 
378
380
  Note that the local development server runs with `5` concurrent threads by default. You can tune the number of threads per queue by running `cloudtasker` the following options:
379
381
  ```bash
380
- cloudtasker -q critical,5 -q important,4 -q default,3
382
+ bundle exec cloudtasker -q critical,5 -q important,4 -q default,3
381
383
  ```
382
384
 
383
385
  ### Option 2: Using ngrok
384
386
 
385
387
  Want to test your application end to end with Google Cloud Task? Then [ngrok](https://ngrok.io) is the way to go.
386
388
 
387
- First start your ngrok tunnel and take note of the :
389
+ First start your ngrok tunnel:
388
390
  ```bash
389
391
  ngrok http 3000
390
392
  ```
@@ -409,7 +411,7 @@ end
409
411
 
410
412
  Finally start Rails to accept jobs from Google Cloud Tasks
411
413
  ```bash
412
- rails s
414
+ bundle exec rails s
413
415
  ```
414
416
 
415
417
  ## Logging
@@ -418,7 +420,7 @@ There are several options available to configure logging and logging context.
418
420
  ### Configuring a logger
419
421
  Cloudtasker uses `Rails.logger` if Rails is available and falls back on a plain ruby logger `Logger.new(STDOUT)` if not.
420
422
 
421
- It is also possible to configure your own logger. For example you can setup Cloudtasker with [semantic_logger](http://rocketjob.github.io/semantic_logger) by doing the following your initializer:
423
+ It is also possible to configure your own logger. For example you can setup Cloudtasker with [semantic_logger](http://rocketjob.github.io/semantic_logger) by doing the following in your initializer:
422
424
  ```ruby
423
425
  # config/initializers/cloudtasker.rb
424
426
 
@@ -464,7 +466,7 @@ Cloudtasker::WorkerLogger.log_context_processor = lambda { |worker|
464
466
  }
465
467
  ```
466
468
 
467
- You could also decide to log all available context (including arguments passed to perform) for specific workers only:
469
+ You could also decide to log all available context - including arguments passed to `perform` - for specific workers only:
468
470
  ```ruby
469
471
  # app/workers/full_context_worker.rb
470
472
 
@@ -479,7 +481,7 @@ class FullContextWorker
479
481
  end
480
482
  ```
481
483
 
482
- See the [Cloudtasker::Worker class](blob/master/lib/cloudtasker/worker.rb) for more information on attributes available to be logged in your `log_context_processor` proc.
484
+ See the [Cloudtasker::Worker class](lib/cloudtasker/worker.rb) for more information on attributes available to be logged in your `log_context_processor` proc.
483
485
 
484
486
  ## Error Handling
485
487
 
@@ -611,7 +613,7 @@ MyWorker.new.perform({ 'foo' => 'bar', 'baz' => { 'key' => 'value' } })
611
613
  ```
612
614
 
613
615
  ### Be careful with default arguments
614
- Default arguments passed to the `perform` method are not actually considered as job arguments. Default arguments will therefore be ignored in contextual logging and by extensions relying on arguments such as the `unique-job` extension.
616
+ Default arguments passed to the `perform` method are not actually considered as job arguments. Default arguments will therefore be ignored in contextual logging and by extensions relying on arguments such as the [unique job](docs/UNIQUE_JOBS.md) extension.
615
617
 
616
618
  Consider the following worker:
617
619
  ```ruby
@@ -664,13 +666,13 @@ BigPayloadWorker.perform_async(payload_id)
664
666
 
665
667
  ### Sizing the concurrency of your queues
666
668
 
667
- When defining the max concurrency concurrency of your queues (`max_concurrent_dispatches` in Cloud Tasks) you must keep in mind the maximum number of threads that your application provides. Otherwise your application threads may eventually get exhausted and your users will experience outages if all your web threads are busy running jobs.
669
+ When defining the max concurrency of your queues (`max_concurrent_dispatches` in Cloud Tasks) you must keep in mind the maximum number of threads that your application provides. Otherwise your application threads may eventually get exhausted and your users will experience outages if all your web threads are busy running jobs.
668
670
 
669
671
  #### With server based applications
670
672
 
671
673
  Let's consider an application deployed in production with 3 instances, each having `RAILS_MAX_THREADS` set to `20`. This gives us a total of `60` threads available.
672
674
 
673
- Now let's say that we distribute jobs across two queues: `default` and `critical`. We can set the concurrency of each each queue depending on the profile of the application:
675
+ Now let's say that we distribute jobs across two queues: `default` and `critical`. We can set the concurrency of each queue depending on the profile of the application:
674
676
 
675
677
  E.g. 1: The application serves requests from web users and runs backgrounds jobs in a balanced way
676
678
  ```
@@ -687,7 +689,7 @@ concurrency for default queue: 35
687
689
  concurrency for critical queue: 15
688
690
 
689
691
  Total threads consumed by jobs at most: 50
690
- Total threads always available to web users at worst: 10
692
+ Total threads always available to API clients at worst: 10
691
693
  ```
692
694
 
693
695
  Also always ensure that your total number of threads does not exceed the available number of database connections (if you use any).
@@ -698,7 +700,7 @@ In a serverless context your application will be scaled up/down based on traffic
698
700
 
699
701
  Because your application is auto-scaled - and assuming you haven't set a maximum - your job processing capacity if theoretically unlimited. The main limiting factor in a serverless context becomes external constraints such as the number of database connections available.
700
702
 
701
- To size the concurrency of your queues you should therefore take the most limiting factor - which is often the database connection pool size for RDBMS databases - and use the calculations of the previous section with this limiting factor as the capping parameter instead of the threads.
703
+ To size the concurrency of your queues you should therefore take the most limiting factor - which is often the database connection pool size of relational databases - and use the calculations of the previous section with this limiting factor as the capping parameter instead of threads.
702
704
 
703
705
 
704
706
  ## Development
@@ -0,0 +1 @@
1
+ theme: jekyll-theme-slate
@@ -17,9 +17,7 @@ module Cloudtasker
17
17
  #
18
18
  def run
19
19
  # Build payload
20
- payload = request.params
21
- .slice(:worker, :job_id, :job_args, :job_meta, :job_queue)
22
- .merge(job_retries: job_retries)
20
+ payload = JSON.parse(request.body.read).merge(job_retries: job_retries)
23
21
 
24
22
  # Process payload
25
23
  WorkerHandler.execute_from_payload!(payload)
@@ -2,7 +2,7 @@
2
2
 
3
3
  **Note**: this extension requires redis
4
4
 
5
- The Cloudtasker batch job extension allows to add sub-jobs to regular jobs. This adds the ability to enqueue a list of jobs and track their overall progression as a groupd of jobs (the batch). This extension allows jobs to define callbacks in their worker to track completion of the batch and take action based on that.
5
+ The Cloudtasker batch job extension allows to add sub-jobs to regular jobs. This adds the ability to enqueue a list of jobs and track their overall progression as a group of jobs (a "batch"). This extension allows jobs to define callbacks in their worker to track completion of the batch and take actions based on that.
6
6
 
7
7
  ## Configuration
8
8
 
@@ -53,7 +53,7 @@ The following callbacks are available on your workers to track the progress of t
53
53
 
54
54
  | Callback | Argument | Description |
55
55
  |------|-------------|-----------|
56
- | `on_batch_node_complete` | `The child job` | Invoked when any descendant (e.g. sub-sub job) successfully completess |
56
+ | `on_batch_node_complete` | `The child job` | Invoked when any descendant (e.g. sub-sub job) successfully completes |
57
57
  | `on_child_complete` | `The child job` | Invoked when a direct descendant successfully completes |
58
58
  | `on_child_error` | `The child job` | Invoked when a child fails |
59
59
  | `on_child_dead` | `The child job` | Invoked when a child has exhausted all of its retries |s
@@ -88,4 +88,4 @@ def on_batch_node_complete(_child_job)
88
88
  logger.info("Completed: #{batch.progress.completed}")
89
89
  logger.info("Progress: #{batch.progress.percent.to_i}%")
90
90
  end
91
- ```
91
+ ```
@@ -30,9 +30,7 @@ unless Rails.env.test?
30
30
  worker: 'OtherCronWorker',
31
31
  cron: '15 * * * *',
32
32
  queue: 'critical'
33
- args:
34
- - 'foo'
35
- - 'bar
33
+ args: ['foo', 'bar']
36
34
  }
37
35
  )
38
36
  end
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- cloudtasker (0.2.0)
4
+ cloudtasker (0.8.0)
5
5
  activesupport
6
6
  fugit
7
7
  google-cloud-tasks
@@ -84,9 +84,19 @@ GEM
84
84
  tzinfo
85
85
  faraday (0.17.0)
86
86
  multipart-post (>= 1.2, < 3)
87
+ faraday-http-cache (2.0.0)
88
+ faraday (~> 0.8)
87
89
  fugit (1.3.3)
88
90
  et-orbi (~> 1.1, >= 1.1.8)
89
91
  raabro (~> 1.1)
92
+ github_changelog_generator (1.15.0)
93
+ activesupport
94
+ faraday-http-cache
95
+ multi_json
96
+ octokit (~> 4.6)
97
+ rainbow (>= 2.2.1)
98
+ rake (>= 10.0)
99
+ retriable (~> 3.0)
90
100
  globalid (0.4.2)
91
101
  activesupport (>= 4.2.0)
92
102
  google-cloud-tasks (1.0.0)
@@ -99,7 +109,7 @@ GEM
99
109
  googleauth (~> 0.9)
100
110
  grpc (~> 1.24)
101
111
  rly (~> 0.2.3)
102
- google-protobuf (3.10.1)
112
+ google-protobuf (3.11.0)
103
113
  googleapis-common-protos (1.3.9)
104
114
  google-protobuf (~> 3.0)
105
115
  googleapis-common-protos-types (~> 1.0)
@@ -124,7 +134,7 @@ GEM
124
134
  concurrent-ruby (~> 1.0)
125
135
  jaro_winkler (1.5.4)
126
136
  jwt (2.2.1)
127
- loofah (2.3.1)
137
+ loofah (2.4.0)
128
138
  crass (~> 1.0.2)
129
139
  nokogiri (>= 1.5.9)
130
140
  mail (2.7.1)
@@ -142,8 +152,10 @@ GEM
142
152
  nio4r (2.5.2)
143
153
  nokogiri (1.10.5)
144
154
  mini_portile2 (~> 2.4.0)
155
+ octokit (4.14.0)
156
+ sawyer (~> 0.8.0, >= 0.5.3)
145
157
  os (1.0.1)
146
- parallel (1.19.0)
158
+ parallel (1.19.1)
147
159
  parser (2.6.5.0)
148
160
  ast (~> 2.4.0)
149
161
  public_suffix (4.0.1)
@@ -180,6 +192,7 @@ GEM
180
192
  rainbow (3.0.0)
181
193
  rake (10.5.0)
182
194
  redis (4.1.3)
195
+ retriable (3.1.2)
183
196
  rly (0.2.3)
184
197
  rspec (3.9.0)
185
198
  rspec-core (~> 3.9.0)
@@ -209,10 +222,13 @@ GEM
209
222
  rainbow (>= 2.2.2, < 4.0)
210
223
  ruby-progressbar (~> 1.7)
211
224
  unicode-display_width (>= 1.4.0, < 1.7)
212
- rubocop-rspec (1.36.0)
225
+ rubocop-rspec (1.37.0)
213
226
  rubocop (>= 0.68.1)
214
227
  ruby-progressbar (1.10.1)
215
228
  safe_yaml (1.0.5)
229
+ sawyer (0.8.2)
230
+ addressable (>= 2.3.5)
231
+ faraday (> 0.8, < 2.0)
216
232
  signet (0.12.0)
217
233
  addressable (~> 2.3)
218
234
  faraday (~> 0.9)
@@ -248,6 +264,7 @@ DEPENDENCIES
248
264
  appraisal
249
265
  bundler (~> 2.0)
250
266
  cloudtasker!
267
+ github_changelog_generator
251
268
  google-cloud-tasks (= 1.0)
252
269
  rails
253
270
  rake (~> 10.0)
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- cloudtasker (0.2.0)
4
+ cloudtasker (0.8.0)
5
5
  activesupport
6
6
  fugit
7
7
  google-cloud-tasks
@@ -84,9 +84,19 @@ GEM
84
84
  tzinfo
85
85
  faraday (0.17.0)
86
86
  multipart-post (>= 1.2, < 3)
87
+ faraday-http-cache (2.0.0)
88
+ faraday (~> 0.8)
87
89
  fugit (1.3.3)
88
90
  et-orbi (~> 1.1, >= 1.1.8)
89
91
  raabro (~> 1.1)
92
+ github_changelog_generator (1.15.0)
93
+ activesupport
94
+ faraday-http-cache
95
+ multi_json
96
+ octokit (~> 4.6)
97
+ rainbow (>= 2.2.1)
98
+ rake (>= 10.0)
99
+ retriable (~> 3.0)
90
100
  globalid (0.4.2)
91
101
  activesupport (>= 4.2.0)
92
102
  google-cloud-tasks (1.1.0)
@@ -99,7 +109,7 @@ GEM
99
109
  googleauth (~> 0.9)
100
110
  grpc (~> 1.24)
101
111
  rly (~> 0.2.3)
102
- google-protobuf (3.10.1)
112
+ google-protobuf (3.11.0)
103
113
  googleapis-common-protos (1.3.9)
104
114
  google-protobuf (~> 3.0)
105
115
  googleapis-common-protos-types (~> 1.0)
@@ -124,7 +134,7 @@ GEM
124
134
  concurrent-ruby (~> 1.0)
125
135
  jaro_winkler (1.5.4)
126
136
  jwt (2.2.1)
127
- loofah (2.3.1)
137
+ loofah (2.4.0)
128
138
  crass (~> 1.0.2)
129
139
  nokogiri (>= 1.5.9)
130
140
  mail (2.7.1)
@@ -142,8 +152,10 @@ GEM
142
152
  nio4r (2.5.2)
143
153
  nokogiri (1.10.5)
144
154
  mini_portile2 (~> 2.4.0)
155
+ octokit (4.14.0)
156
+ sawyer (~> 0.8.0, >= 0.5.3)
145
157
  os (1.0.1)
146
- parallel (1.19.0)
158
+ parallel (1.19.1)
147
159
  parser (2.6.5.0)
148
160
  ast (~> 2.4.0)
149
161
  public_suffix (4.0.1)
@@ -180,6 +192,7 @@ GEM
180
192
  rainbow (3.0.0)
181
193
  rake (10.5.0)
182
194
  redis (4.1.3)
195
+ retriable (3.1.2)
183
196
  rly (0.2.3)
184
197
  rspec (3.9.0)
185
198
  rspec-core (~> 3.9.0)
@@ -209,10 +222,13 @@ GEM
209
222
  rainbow (>= 2.2.2, < 4.0)
210
223
  ruby-progressbar (~> 1.7)
211
224
  unicode-display_width (>= 1.4.0, < 1.7)
212
- rubocop-rspec (1.36.0)
225
+ rubocop-rspec (1.37.0)
213
226
  rubocop (>= 0.68.1)
214
227
  ruby-progressbar (1.10.1)
215
228
  safe_yaml (1.0.5)
229
+ sawyer (0.8.2)
230
+ addressable (>= 2.3.5)
231
+ faraday (> 0.8, < 2.0)
216
232
  signet (0.12.0)
217
233
  addressable (~> 2.3)
218
234
  faraday (~> 0.9)
@@ -248,6 +264,7 @@ DEPENDENCIES
248
264
  appraisal
249
265
  bundler (~> 2.0)
250
266
  cloudtasker!
267
+ github_changelog_generator
251
268
  google-cloud-tasks (= 1.1)
252
269
  rails
253
270
  rake (~> 10.0)
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- cloudtasker (0.2.0)
4
+ cloudtasker (0.8.0)
5
5
  activesupport
6
6
  fugit
7
7
  google-cloud-tasks
@@ -84,9 +84,19 @@ GEM
84
84
  tzinfo
85
85
  faraday (0.17.0)
86
86
  multipart-post (>= 1.2, < 3)
87
+ faraday-http-cache (2.0.0)
88
+ faraday (~> 0.8)
87
89
  fugit (1.3.3)
88
90
  et-orbi (~> 1.1, >= 1.1.8)
89
91
  raabro (~> 1.1)
92
+ github_changelog_generator (1.15.0)
93
+ activesupport
94
+ faraday-http-cache
95
+ multi_json
96
+ octokit (~> 4.6)
97
+ rainbow (>= 2.2.1)
98
+ rake (>= 10.0)
99
+ retriable (~> 3.0)
90
100
  globalid (0.4.2)
91
101
  activesupport (>= 4.2.0)
92
102
  google-cloud-tasks (1.2.0)
@@ -99,7 +109,7 @@ GEM
99
109
  googleauth (~> 0.9)
100
110
  grpc (~> 1.24)
101
111
  rly (~> 0.2.3)
102
- google-protobuf (3.10.1-universal-darwin)
112
+ google-protobuf (3.11.0)
103
113
  googleapis-common-protos (1.3.9)
104
114
  google-protobuf (~> 3.0)
105
115
  googleapis-common-protos-types (~> 1.0)
@@ -113,7 +123,7 @@ GEM
113
123
  multi_json (~> 1.11)
114
124
  os (>= 0.9, < 2.0)
115
125
  signet (~> 0.12)
116
- grpc (1.25.0-universal-darwin)
126
+ grpc (1.25.0)
117
127
  google-protobuf (~> 3.8)
118
128
  googleapis-common-protos-types (~> 1.0)
119
129
  grpc-google-iam-v1 (0.6.9)
@@ -124,7 +134,7 @@ GEM
124
134
  concurrent-ruby (~> 1.0)
125
135
  jaro_winkler (1.5.4)
126
136
  jwt (2.2.1)
127
- loofah (2.3.1)
137
+ loofah (2.4.0)
128
138
  crass (~> 1.0.2)
129
139
  nokogiri (>= 1.5.9)
130
140
  mail (2.7.1)
@@ -142,8 +152,10 @@ GEM
142
152
  nio4r (2.5.2)
143
153
  nokogiri (1.10.5)
144
154
  mini_portile2 (~> 2.4.0)
155
+ octokit (4.14.0)
156
+ sawyer (~> 0.8.0, >= 0.5.3)
145
157
  os (1.0.1)
146
- parallel (1.19.0)
158
+ parallel (1.19.1)
147
159
  parser (2.6.5.0)
148
160
  ast (~> 2.4.0)
149
161
  public_suffix (4.0.1)
@@ -180,6 +192,7 @@ GEM
180
192
  rainbow (3.0.0)
181
193
  rake (10.5.0)
182
194
  redis (4.1.3)
195
+ retriable (3.1.2)
183
196
  rly (0.2.3)
184
197
  rspec (3.9.0)
185
198
  rspec-core (~> 3.9.0)
@@ -209,10 +222,13 @@ GEM
209
222
  rainbow (>= 2.2.2, < 4.0)
210
223
  ruby-progressbar (~> 1.7)
211
224
  unicode-display_width (>= 1.4.0, < 1.7)
212
- rubocop-rspec (1.36.0)
225
+ rubocop-rspec (1.37.0)
213
226
  rubocop (>= 0.68.1)
214
227
  ruby-progressbar (1.10.1)
215
228
  safe_yaml (1.0.5)
229
+ sawyer (0.8.2)
230
+ addressable (>= 2.3.5)
231
+ faraday (> 0.8, < 2.0)
216
232
  signet (0.12.0)
217
233
  addressable (~> 2.3)
218
234
  faraday (~> 0.9)
@@ -248,6 +264,7 @@ DEPENDENCIES
248
264
  appraisal
249
265
  bundler (~> 2.0)
250
266
  cloudtasker!
267
+ github_changelog_generator
251
268
  google-cloud-tasks (= 1.2)
252
269
  rails
253
270
  rake (~> 10.0)
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- cloudtasker (0.2.0)
4
+ cloudtasker (0.8.0)
5
5
  activesupport
6
6
  fugit
7
7
  google-cloud-tasks
@@ -84,9 +84,19 @@ GEM
84
84
  tzinfo
85
85
  faraday (0.17.0)
86
86
  multipart-post (>= 1.2, < 3)
87
+ faraday-http-cache (2.0.0)
88
+ faraday (~> 0.8)
87
89
  fugit (1.3.3)
88
90
  et-orbi (~> 1.1, >= 1.1.8)
89
91
  raabro (~> 1.1)
92
+ github_changelog_generator (1.15.0)
93
+ activesupport
94
+ faraday-http-cache
95
+ multi_json
96
+ octokit (~> 4.6)
97
+ rainbow (>= 2.2.1)
98
+ rake (>= 10.0)
99
+ retriable (~> 3.0)
90
100
  globalid (0.4.2)
91
101
  activesupport (>= 4.2.0)
92
102
  google-cloud-tasks (1.3.0)
@@ -100,7 +110,7 @@ GEM
100
110
  googleauth (~> 0.9)
101
111
  grpc (~> 1.24)
102
112
  rly (~> 0.2.3)
103
- google-protobuf (3.10.1)
113
+ google-protobuf (3.11.0)
104
114
  googleapis-common-protos (1.3.9)
105
115
  google-protobuf (~> 3.0)
106
116
  googleapis-common-protos-types (~> 1.0)
@@ -125,7 +135,7 @@ GEM
125
135
  concurrent-ruby (~> 1.0)
126
136
  jaro_winkler (1.5.4)
127
137
  jwt (2.2.1)
128
- loofah (2.3.1)
138
+ loofah (2.4.0)
129
139
  crass (~> 1.0.2)
130
140
  nokogiri (>= 1.5.9)
131
141
  mail (2.7.1)
@@ -143,8 +153,10 @@ GEM
143
153
  nio4r (2.5.2)
144
154
  nokogiri (1.10.5)
145
155
  mini_portile2 (~> 2.4.0)
156
+ octokit (4.14.0)
157
+ sawyer (~> 0.8.0, >= 0.5.3)
146
158
  os (1.0.1)
147
- parallel (1.19.0)
159
+ parallel (1.19.1)
148
160
  parser (2.6.5.0)
149
161
  ast (~> 2.4.0)
150
162
  public_suffix (4.0.1)
@@ -181,6 +193,7 @@ GEM
181
193
  rainbow (3.0.0)
182
194
  rake (10.5.0)
183
195
  redis (4.1.3)
196
+ retriable (3.1.2)
184
197
  rly (0.2.3)
185
198
  rspec (3.9.0)
186
199
  rspec-core (~> 3.9.0)
@@ -210,10 +223,13 @@ GEM
210
223
  rainbow (>= 2.2.2, < 4.0)
211
224
  ruby-progressbar (~> 1.7)
212
225
  unicode-display_width (>= 1.4.0, < 1.7)
213
- rubocop-rspec (1.36.0)
226
+ rubocop-rspec (1.37.0)
214
227
  rubocop (>= 0.68.1)
215
228
  ruby-progressbar (1.10.1)
216
229
  safe_yaml (1.0.5)
230
+ sawyer (0.8.2)
231
+ addressable (>= 2.3.5)
232
+ faraday (> 0.8, < 2.0)
217
233
  signet (0.12.0)
218
234
  addressable (~> 2.3)
219
235
  faraday (~> 0.9)
@@ -249,6 +265,7 @@ DEPENDENCIES
249
265
  appraisal
250
266
  bundler (~> 2.0)
251
267
  cloudtasker!
268
+ github_changelog_generator
252
269
  google-cloud-tasks (= 1.3)
253
270
  rails
254
271
  rake (~> 10.0)
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- cloudtasker (0.2.0)
4
+ cloudtasker (0.8.0)
5
5
  activesupport
6
6
  fugit
7
7
  google-cloud-tasks
@@ -71,9 +71,19 @@ GEM
71
71
  tzinfo
72
72
  faraday (0.17.0)
73
73
  multipart-post (>= 1.2, < 3)
74
+ faraday-http-cache (2.0.0)
75
+ faraday (~> 0.8)
74
76
  fugit (1.3.3)
75
77
  et-orbi (~> 1.1, >= 1.1.8)
76
78
  raabro (~> 1.1)
79
+ github_changelog_generator (1.15.0)
80
+ activesupport
81
+ faraday-http-cache
82
+ multi_json
83
+ octokit (~> 4.6)
84
+ rainbow (>= 2.2.1)
85
+ rake (>= 10.0)
86
+ retriable (~> 3.0)
77
87
  globalid (0.4.2)
78
88
  activesupport (>= 4.2.0)
79
89
  google-cloud-tasks (1.3.1)
@@ -87,7 +97,7 @@ GEM
87
97
  googleauth (~> 0.9)
88
98
  grpc (~> 1.24)
89
99
  rly (~> 0.2.3)
90
- google-protobuf (3.10.1)
100
+ google-protobuf (3.11.0)
91
101
  googleapis-common-protos (1.3.9)
92
102
  google-protobuf (~> 3.0)
93
103
  googleapis-common-protos-types (~> 1.0)
@@ -112,7 +122,7 @@ GEM
112
122
  concurrent-ruby (~> 1.0)
113
123
  jaro_winkler (1.5.4)
114
124
  jwt (2.2.1)
115
- loofah (2.3.1)
125
+ loofah (2.4.0)
116
126
  crass (~> 1.0.2)
117
127
  nokogiri (>= 1.5.9)
118
128
  mail (2.7.1)
@@ -130,8 +140,10 @@ GEM
130
140
  nio4r (2.5.2)
131
141
  nokogiri (1.10.5)
132
142
  mini_portile2 (~> 2.4.0)
143
+ octokit (4.14.0)
144
+ sawyer (~> 0.8.0, >= 0.5.3)
133
145
  os (1.0.1)
134
- parallel (1.19.0)
146
+ parallel (1.19.1)
135
147
  parser (2.6.5.0)
136
148
  ast (~> 2.4.0)
137
149
  public_suffix (4.0.1)
@@ -166,6 +178,7 @@ GEM
166
178
  rainbow (3.0.0)
167
179
  rake (10.5.0)
168
180
  redis (4.1.3)
181
+ retriable (3.1.2)
169
182
  rly (0.2.3)
170
183
  rspec (3.9.0)
171
184
  rspec-core (~> 3.9.0)
@@ -195,10 +208,13 @@ GEM
195
208
  rainbow (>= 2.2.2, < 4.0)
196
209
  ruby-progressbar (~> 1.7)
197
210
  unicode-display_width (>= 1.4.0, < 1.7)
198
- rubocop-rspec (1.36.0)
211
+ rubocop-rspec (1.37.0)
199
212
  rubocop (>= 0.68.1)
200
213
  ruby-progressbar (1.10.1)
201
214
  safe_yaml (1.0.5)
215
+ sawyer (0.8.2)
216
+ addressable (>= 2.3.5)
217
+ faraday (> 0.8, < 2.0)
202
218
  signet (0.12.0)
203
219
  addressable (~> 2.3)
204
220
  faraday (~> 0.9)
@@ -233,6 +249,7 @@ DEPENDENCIES
233
249
  appraisal
234
250
  bundler (~> 2.0)
235
251
  cloudtasker!
252
+ github_changelog_generator
236
253
  rails (= 5.2)
237
254
  rake (~> 10.0)
238
255
  rspec (~> 3.0)
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- cloudtasker (0.2.0)
4
+ cloudtasker (0.8.0)
5
5
  activesupport
6
6
  fugit
7
7
  google-cloud-tasks
@@ -84,9 +84,19 @@ GEM
84
84
  tzinfo
85
85
  faraday (0.17.0)
86
86
  multipart-post (>= 1.2, < 3)
87
+ faraday-http-cache (2.0.0)
88
+ faraday (~> 0.8)
87
89
  fugit (1.3.3)
88
90
  et-orbi (~> 1.1, >= 1.1.8)
89
91
  raabro (~> 1.1)
92
+ github_changelog_generator (1.15.0)
93
+ activesupport
94
+ faraday-http-cache
95
+ multi_json
96
+ octokit (~> 4.6)
97
+ rainbow (>= 2.2.1)
98
+ rake (>= 10.0)
99
+ retriable (~> 3.0)
90
100
  globalid (0.4.2)
91
101
  activesupport (>= 4.2.0)
92
102
  google-cloud-tasks (1.3.1)
@@ -100,7 +110,7 @@ GEM
100
110
  googleauth (~> 0.9)
101
111
  grpc (~> 1.24)
102
112
  rly (~> 0.2.3)
103
- google-protobuf (3.10.1-universal-darwin)
113
+ google-protobuf (3.11.0)
104
114
  googleapis-common-protos (1.3.9)
105
115
  google-protobuf (~> 3.0)
106
116
  googleapis-common-protos-types (~> 1.0)
@@ -114,7 +124,7 @@ GEM
114
124
  multi_json (~> 1.11)
115
125
  os (>= 0.9, < 2.0)
116
126
  signet (~> 0.12)
117
- grpc (1.25.0-universal-darwin)
127
+ grpc (1.25.0)
118
128
  google-protobuf (~> 3.8)
119
129
  googleapis-common-protos-types (~> 1.0)
120
130
  grpc-google-iam-v1 (0.6.9)
@@ -125,7 +135,7 @@ GEM
125
135
  concurrent-ruby (~> 1.0)
126
136
  jaro_winkler (1.5.4)
127
137
  jwt (2.2.1)
128
- loofah (2.3.1)
138
+ loofah (2.4.0)
129
139
  crass (~> 1.0.2)
130
140
  nokogiri (>= 1.5.9)
131
141
  mail (2.7.1)
@@ -143,8 +153,10 @@ GEM
143
153
  nio4r (2.5.2)
144
154
  nokogiri (1.10.5)
145
155
  mini_portile2 (~> 2.4.0)
156
+ octokit (4.14.0)
157
+ sawyer (~> 0.8.0, >= 0.5.3)
146
158
  os (1.0.1)
147
- parallel (1.19.0)
159
+ parallel (1.19.1)
148
160
  parser (2.6.5.0)
149
161
  ast (~> 2.4.0)
150
162
  public_suffix (4.0.1)
@@ -181,6 +193,7 @@ GEM
181
193
  rainbow (3.0.0)
182
194
  rake (10.5.0)
183
195
  redis (4.1.3)
196
+ retriable (3.1.2)
184
197
  rly (0.2.3)
185
198
  rspec (3.9.0)
186
199
  rspec-core (~> 3.9.0)
@@ -210,10 +223,13 @@ GEM
210
223
  rainbow (>= 2.2.2, < 4.0)
211
224
  ruby-progressbar (~> 1.7)
212
225
  unicode-display_width (>= 1.4.0, < 1.7)
213
- rubocop-rspec (1.36.0)
226
+ rubocop-rspec (1.37.0)
214
227
  rubocop (>= 0.68.1)
215
228
  ruby-progressbar (1.10.1)
216
229
  safe_yaml (1.0.5)
230
+ sawyer (0.8.2)
231
+ addressable (>= 2.3.5)
232
+ faraday (> 0.8, < 2.0)
217
233
  signet (0.12.0)
218
234
  addressable (~> 2.3)
219
235
  faraday (~> 0.9)
@@ -249,6 +265,7 @@ DEPENDENCIES
249
265
  appraisal
250
266
  bundler (~> 2.0)
251
267
  cloudtasker!
268
+ github_changelog_generator
252
269
  rails (= 6.0)
253
270
  rake (~> 10.0)
254
271
  rspec (~> 3.0)
@@ -121,7 +121,7 @@ module Cloudtasker
121
121
  @http_request = http_request
122
122
  @schedule_time = Time.at(schedule_time || 0)
123
123
  @retries = retries || 0
124
- @queue = queue
124
+ @queue = queue || Cloudtasker::Config::DEFAULT_JOB_QUEUE
125
125
  end
126
126
 
127
127
  #
@@ -163,10 +163,13 @@ module Cloudtasker
163
163
  # @param [Integer] interval The delay in seconds before retrying the task
164
164
  #
165
165
  def retry_later(interval, is_error: true)
166
- redis.write(gid,
167
- retries: is_error ? retries + 1 : retries,
168
- http_request: http_request,
169
- schedule_time: (Time.now + interval).to_i)
166
+ redis.write(
167
+ gid,
168
+ retries: is_error ? retries + 1 : retries,
169
+ http_request: http_request,
170
+ schedule_time: (Time.now + interval).to_i,
171
+ queue: queue
172
+ )
170
173
  end
171
174
 
172
175
  #
@@ -101,8 +101,11 @@ module Cloudtasker
101
101
  def processor_host=(val)
102
102
  @processor_host = val
103
103
 
104
+ # Check if Rails supports host filtering
105
+ return unless val && defined?(Rails) && Rails.application.config.respond_to?(:hosts)
106
+
104
107
  # Add processor host to the list of authorized hosts
105
- Rails.application.config.hosts << val.gsub(%r{https?://}, '') if val && defined?(Rails)
108
+ Rails.application.config.hosts << val.gsub(%r{https?://}, '')
106
109
  end
107
110
 
108
111
  #
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cloudtasker
4
- VERSION = '0.8.0'
4
+ VERSION = '0.8.1'
5
5
  end
@@ -35,7 +35,7 @@ module Cloudtasker
35
35
  def self.from_hash(hash)
36
36
  # Symbolize metadata keys and stringify job arguments
37
37
  payload = JSON.parse(hash.to_json, symbolize_names: true)
38
- payload[:job_args] = JSON.parse(hash[:job_args].to_json)
38
+ payload[:job_args] = JSON.parse(payload[:job_args].to_json)
39
39
 
40
40
  # Extract worker parameters
41
41
  klass_name = payload&.dig(:worker)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudtasker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arnaud Lachaume
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-27 00:00:00.000000000 Z
11
+ date: 2019-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -264,10 +264,10 @@ files:
264
264
  - CHANGELOG.md
265
265
  - CODE_OF_CONDUCT.md
266
266
  - Gemfile
267
- - Gemfile.lock
268
267
  - LICENSE.txt
269
268
  - README.md
270
269
  - Rakefile
270
+ - _config.yml
271
271
  - app/controllers/cloudtasker/application_controller.rb
272
272
  - app/controllers/cloudtasker/worker_controller.rb
273
273
  - bin/console
@@ -1,280 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- cloudtasker (0.8.0)
5
- activesupport
6
- fugit
7
- google-cloud-tasks
8
- jwt
9
- redis
10
-
11
- GEM
12
- remote: https://rubygems.org/
13
- specs:
14
- actioncable (6.0.0)
15
- actionpack (= 6.0.0)
16
- nio4r (~> 2.0)
17
- websocket-driver (>= 0.6.1)
18
- actionmailbox (6.0.0)
19
- actionpack (= 6.0.0)
20
- activejob (= 6.0.0)
21
- activerecord (= 6.0.0)
22
- activestorage (= 6.0.0)
23
- activesupport (= 6.0.0)
24
- mail (>= 2.7.1)
25
- actionmailer (6.0.0)
26
- actionpack (= 6.0.0)
27
- actionview (= 6.0.0)
28
- activejob (= 6.0.0)
29
- mail (~> 2.5, >= 2.5.4)
30
- rails-dom-testing (~> 2.0)
31
- actionpack (6.0.0)
32
- actionview (= 6.0.0)
33
- activesupport (= 6.0.0)
34
- rack (~> 2.0)
35
- rack-test (>= 0.6.3)
36
- rails-dom-testing (~> 2.0)
37
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
38
- actiontext (6.0.0)
39
- actionpack (= 6.0.0)
40
- activerecord (= 6.0.0)
41
- activestorage (= 6.0.0)
42
- activesupport (= 6.0.0)
43
- nokogiri (>= 1.8.5)
44
- actionview (6.0.0)
45
- activesupport (= 6.0.0)
46
- builder (~> 3.1)
47
- erubi (~> 1.4)
48
- rails-dom-testing (~> 2.0)
49
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
50
- activejob (6.0.0)
51
- activesupport (= 6.0.0)
52
- globalid (>= 0.3.6)
53
- activemodel (6.0.0)
54
- activesupport (= 6.0.0)
55
- activerecord (6.0.0)
56
- activemodel (= 6.0.0)
57
- activesupport (= 6.0.0)
58
- activestorage (6.0.0)
59
- actionpack (= 6.0.0)
60
- activejob (= 6.0.0)
61
- activerecord (= 6.0.0)
62
- marcel (~> 0.3.1)
63
- activesupport (6.0.0)
64
- concurrent-ruby (~> 1.0, >= 1.0.2)
65
- i18n (>= 0.7, < 2)
66
- minitest (~> 5.1)
67
- tzinfo (~> 1.1)
68
- zeitwerk (~> 2.1, >= 2.1.8)
69
- addressable (2.7.0)
70
- public_suffix (>= 2.0.2, < 5.0)
71
- appraisal (2.2.0)
72
- bundler
73
- rake
74
- thor (>= 0.14.0)
75
- ast (2.4.0)
76
- builder (3.2.3)
77
- concurrent-ruby (1.1.5)
78
- crack (0.4.3)
79
- safe_yaml (~> 1.0.0)
80
- crass (1.0.5)
81
- diff-lcs (1.3)
82
- erubi (1.9.0)
83
- et-orbi (1.2.2)
84
- tzinfo
85
- faraday (0.17.0)
86
- multipart-post (>= 1.2, < 3)
87
- faraday-http-cache (2.0.0)
88
- faraday (~> 0.8)
89
- fugit (1.3.3)
90
- et-orbi (~> 1.1, >= 1.1.8)
91
- raabro (~> 1.1)
92
- github_changelog_generator (1.15.0)
93
- activesupport
94
- faraday-http-cache
95
- multi_json
96
- octokit (~> 4.6)
97
- rainbow (>= 2.2.1)
98
- rake (>= 10.0)
99
- retriable (~> 3.0)
100
- globalid (0.4.2)
101
- activesupport (>= 4.2.0)
102
- google-cloud-tasks (1.3.1)
103
- google-gax (~> 1.8)
104
- googleapis-common-protos (>= 1.3.9, < 2.0)
105
- googleapis-common-protos-types (>= 1.0.4, < 2.0)
106
- grpc-google-iam-v1 (~> 0.6.9)
107
- google-gax (1.8.1)
108
- google-protobuf (~> 3.9)
109
- googleapis-common-protos (>= 1.3.9, < 2.0)
110
- googleauth (~> 0.9)
111
- grpc (~> 1.24)
112
- rly (~> 0.2.3)
113
- google-protobuf (3.11.0-universal-darwin)
114
- googleapis-common-protos (1.3.9)
115
- google-protobuf (~> 3.0)
116
- googleapis-common-protos-types (~> 1.0)
117
- grpc (~> 1.0)
118
- googleapis-common-protos-types (1.0.4)
119
- google-protobuf (~> 3.0)
120
- googleauth (0.10.0)
121
- faraday (~> 0.12)
122
- jwt (>= 1.4, < 3.0)
123
- memoist (~> 0.16)
124
- multi_json (~> 1.11)
125
- os (>= 0.9, < 2.0)
126
- signet (~> 0.12)
127
- grpc (1.25.0-universal-darwin)
128
- google-protobuf (~> 3.8)
129
- googleapis-common-protos-types (~> 1.0)
130
- grpc-google-iam-v1 (0.6.9)
131
- googleapis-common-protos (>= 1.3.1, < 2.0)
132
- grpc (~> 1.0)
133
- hashdiff (1.0.0)
134
- i18n (1.7.0)
135
- concurrent-ruby (~> 1.0)
136
- jaro_winkler (1.5.4)
137
- jwt (2.2.1)
138
- loofah (2.3.1)
139
- crass (~> 1.0.2)
140
- nokogiri (>= 1.5.9)
141
- mail (2.7.1)
142
- mini_mime (>= 0.1.1)
143
- marcel (0.3.3)
144
- mimemagic (~> 0.3.2)
145
- memoist (0.16.1)
146
- method_source (0.9.2)
147
- mimemagic (0.3.3)
148
- mini_mime (1.0.2)
149
- mini_portile2 (2.4.0)
150
- minitest (5.13.0)
151
- multi_json (1.14.1)
152
- multipart-post (2.1.1)
153
- nio4r (2.5.2)
154
- nokogiri (1.10.5)
155
- mini_portile2 (~> 2.4.0)
156
- octokit (4.14.0)
157
- sawyer (~> 0.8.0, >= 0.5.3)
158
- os (1.0.1)
159
- parallel (1.18.0)
160
- parser (2.6.5.0)
161
- ast (~> 2.4.0)
162
- public_suffix (4.0.1)
163
- raabro (1.1.6)
164
- rack (2.0.7)
165
- rack-test (1.1.0)
166
- rack (>= 1.0, < 3)
167
- rails (6.0.0)
168
- actioncable (= 6.0.0)
169
- actionmailbox (= 6.0.0)
170
- actionmailer (= 6.0.0)
171
- actionpack (= 6.0.0)
172
- actiontext (= 6.0.0)
173
- actionview (= 6.0.0)
174
- activejob (= 6.0.0)
175
- activemodel (= 6.0.0)
176
- activerecord (= 6.0.0)
177
- activestorage (= 6.0.0)
178
- activesupport (= 6.0.0)
179
- bundler (>= 1.3.0)
180
- railties (= 6.0.0)
181
- sprockets-rails (>= 2.0.0)
182
- rails-dom-testing (2.0.3)
183
- activesupport (>= 4.2.0)
184
- nokogiri (>= 1.6)
185
- rails-html-sanitizer (1.3.0)
186
- loofah (~> 2.3)
187
- railties (6.0.0)
188
- actionpack (= 6.0.0)
189
- activesupport (= 6.0.0)
190
- method_source
191
- rake (>= 0.8.7)
192
- thor (>= 0.20.3, < 2.0)
193
- rainbow (3.0.0)
194
- rake (10.5.0)
195
- redis (4.1.3)
196
- retriable (3.1.2)
197
- rly (0.2.3)
198
- rspec (3.9.0)
199
- rspec-core (~> 3.9.0)
200
- rspec-expectations (~> 3.9.0)
201
- rspec-mocks (~> 3.9.0)
202
- rspec-core (3.9.0)
203
- rspec-support (~> 3.9.0)
204
- rspec-expectations (3.9.0)
205
- diff-lcs (>= 1.2.0, < 2.0)
206
- rspec-support (~> 3.9.0)
207
- rspec-mocks (3.9.0)
208
- diff-lcs (>= 1.2.0, < 2.0)
209
- rspec-support (~> 3.9.0)
210
- rspec-rails (3.9.0)
211
- actionpack (>= 3.0)
212
- activesupport (>= 3.0)
213
- railties (>= 3.0)
214
- rspec-core (~> 3.9.0)
215
- rspec-expectations (~> 3.9.0)
216
- rspec-mocks (~> 3.9.0)
217
- rspec-support (~> 3.9.0)
218
- rspec-support (3.9.0)
219
- rubocop (0.76.0)
220
- jaro_winkler (~> 1.5.1)
221
- parallel (~> 1.10)
222
- parser (>= 2.6)
223
- rainbow (>= 2.2.2, < 4.0)
224
- ruby-progressbar (~> 1.7)
225
- unicode-display_width (>= 1.4.0, < 1.7)
226
- rubocop-rspec (1.36.0)
227
- rubocop (>= 0.68.1)
228
- ruby-progressbar (1.10.1)
229
- safe_yaml (1.0.5)
230
- sawyer (0.8.2)
231
- addressable (>= 2.3.5)
232
- faraday (> 0.8, < 2.0)
233
- signet (0.12.0)
234
- addressable (~> 2.3)
235
- faraday (~> 0.9)
236
- jwt (>= 1.5, < 3.0)
237
- multi_json (~> 1.10)
238
- sprockets (4.0.0)
239
- concurrent-ruby (~> 1.0)
240
- rack (> 1, < 3)
241
- sprockets-rails (3.2.1)
242
- actionpack (>= 4.0)
243
- activesupport (>= 4.0)
244
- sprockets (>= 3.0.0)
245
- sqlite3 (1.4.0)
246
- thor (0.20.3)
247
- thread_safe (0.3.6)
248
- timecop (0.9.1)
249
- tzinfo (1.2.5)
250
- thread_safe (~> 0.1)
251
- unicode-display_width (1.6.0)
252
- webmock (3.7.6)
253
- addressable (>= 2.3.6)
254
- crack (>= 0.3.2)
255
- hashdiff (>= 0.4.0, < 2.0.0)
256
- websocket-driver (0.7.1)
257
- websocket-extensions (>= 0.1.0)
258
- websocket-extensions (0.1.4)
259
- zeitwerk (2.2.1)
260
-
261
- PLATFORMS
262
- ruby
263
-
264
- DEPENDENCIES
265
- appraisal
266
- bundler (~> 2.0)
267
- cloudtasker!
268
- github_changelog_generator
269
- rails
270
- rake (~> 10.0)
271
- rspec (~> 3.0)
272
- rspec-rails
273
- rubocop (= 0.76.0)
274
- rubocop-rspec
275
- sqlite3
276
- timecop
277
- webmock
278
-
279
- BUNDLED WITH
280
- 2.0.2