cloudtasker 0.9.5 → 0.10.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/.travis.yml +16 -0
  4. data/Appraisals +0 -16
  5. data/CHANGELOG.md +0 -22
  6. data/README.md +40 -1
  7. data/app/controllers/cloudtasker/application_controller.rb +8 -0
  8. data/app/controllers/cloudtasker/worker_controller.rb +1 -4
  9. data/cloudtasker.gemspec +1 -2
  10. data/gemfiles/google_cloud_tasks_1.0.gemfile +5 -3
  11. data/gemfiles/google_cloud_tasks_1.0.gemfile.lock +154 -208
  12. data/gemfiles/google_cloud_tasks_1.1.gemfile +5 -3
  13. data/gemfiles/google_cloud_tasks_1.1.gemfile.lock +154 -208
  14. data/gemfiles/google_cloud_tasks_1.2.gemfile +5 -3
  15. data/gemfiles/google_cloud_tasks_1.2.gemfile.lock +154 -208
  16. data/gemfiles/google_cloud_tasks_1.3.gemfile +5 -3
  17. data/gemfiles/google_cloud_tasks_1.3.gemfile.lock +154 -208
  18. data/gemfiles/rails_5.2.gemfile +5 -3
  19. data/gemfiles/rails_5.2.gemfile.lock +91 -146
  20. data/gemfiles/rails_6.0.gemfile +5 -3
  21. data/gemfiles/rails_6.0.gemfile.lock +92 -147
  22. data/lib/cloudtasker/backend/google_cloud_task.rb +1 -1
  23. data/lib/cloudtasker/backend/memory_task.rb +8 -23
  24. data/lib/cloudtasker/config.rb +16 -1
  25. data/lib/cloudtasker/testing.rb +2 -2
  26. data/lib/cloudtasker/version.rb +1 -1
  27. data/lib/cloudtasker/worker_handler.rb +142 -5
  28. data/lib/cloudtasker/worker_logger.rb +1 -2
  29. data/lib/cloudtasker.rb +0 -1
  30. metadata +15 -32
  31. data/.github/workflows/test.yml +0 -45
  32. data/gemfiles/semantic_logger_3.4.gemfile +0 -7
  33. data/gemfiles/semantic_logger_4.6.gemfile +0 -7
  34. data/gemfiles/semantic_logger_4.7.0.gemfile +0 -7
  35. data/gemfiles/semantic_logger_4.7.2.gemfile +0 -7
  36. data/gemfiles/semantic_logger_4.7.gemfile +0 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3f8cde6f4433e688dce340d17a5194f9be7b0136a0bf472a8b46eed67223d4c7
4
- data.tar.gz: b803d0a9d1247f9da6cc09086008e916feaff43aa180edbd6489673f9c628e44
3
+ metadata.gz: d4cba7de3e429d612adf6c9c2f4424b6ef73db39d4db93b70804800300011e1b
4
+ data.tar.gz: 3775cdf3f16430cf8decd49dfc28be9e26f0ef6a63d45224bdc5ed11b13a86fc
5
5
  SHA512:
6
- metadata.gz: d7029b923e28b15a5021d86c76109eb8c56515ee6f193aa1a7664f251d3d47161e4fb61544c6ff5eebc09b233f0f0cedb45e32e99c6eb9c463049cfac77d2bb7
7
- data.tar.gz: 2ae3a73d3e375ffc71851adcefd3b4bfbdff7803220461fd26da655698dbb6833e0310eca308667476eb8a01b6b07c28fb4c9235b5f01738bac4bc7758c7cc51
6
+ metadata.gz: 5e2e15dc54fad72e3508763855a99804b591126968ccbcaccd8211d51b8b1e28bf6d2907c746f2b14c53c3c065ce1eb06871f30b39419df1f3d7b8a4e1b1fded
7
+ data.tar.gz: a2808491a7251b5212587351deb84a99f688a62f7a54c3f5b9c8ebe3a3b6a1ca6adda6ffe898424069223cef8260f1a49c8a086010c0e59dedc5e50ed371e830
data/.rubocop.yml CHANGED
@@ -2,7 +2,7 @@ require: rubocop-rspec
2
2
 
3
3
  AllCops:
4
4
  Exclude:
5
- - 'gemfiles/**/*'
5
+ - 'gemfiles/vendor/**/*'
6
6
  - 'vendor/**/*'
7
7
 
8
8
  Metrics/ClassLength:
data/.travis.yml ADDED
@@ -0,0 +1,16 @@
1
+ ---
2
+ language: ruby
3
+ cache: bundler
4
+ rvm:
5
+ - 2.5.5
6
+ services:
7
+ - redis-server
8
+ before_install: gem install bundler -v 2.0.2
9
+ before_script: bundle exec rubocop
10
+ gemfile:
11
+ - gemfiles/google_cloud_tasks_1.0.gemfile
12
+ - gemfiles/google_cloud_tasks_1.1.gemfile
13
+ - gemfiles/google_cloud_tasks_1.2.gemfile
14
+ - gemfiles/google_cloud_tasks_1.3.gemfile
15
+ - gemfiles/rails_5.2.gemfile
16
+ - gemfiles/rails_6.0.gemfile
data/Appraisals CHANGED
@@ -23,19 +23,3 @@ end
23
23
  appraise 'rails-6.0' do
24
24
  gem 'rails', '6.0'
25
25
  end
26
-
27
- appraise 'semantic_logger-3.4' do
28
- gem 'semantic_logger', '3.4.1'
29
- end
30
-
31
- appraise 'semantic_logger-4.6' do
32
- gem 'semantic_logger', '4.6.1'
33
- end
34
-
35
- appraise 'semantic_logger-4.7.0' do
36
- gem 'semantic_logger', '4.7.0'
37
- end
38
-
39
- appraise 'semantic_logger-4.7.2' do
40
- gem 'semantic_logger', '4.7.2'
41
- end
data/CHANGELOG.md CHANGED
@@ -1,27 +1,5 @@
1
1
  # Changelog
2
2
 
3
- ## [v0.9.5](https://github.com/keypup-io/cloudtasker/tree/v0.9.5) (2021-08-25)
4
-
5
- [Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.9.4...v0.9.5)
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.9.4](https://github.com/keypup-io/cloudtasker/tree/v0.9.4) (2020-10-05)
12
-
13
- [Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.9.3...v0.9.4)
14
-
15
- **Fixed bugs:**
16
- - Logging: fix log processing with `semantic_logger` `v4.7.2`. Accept any args on block passed to the logger.
17
-
18
- ## [v0.9.3](https://github.com/keypup-io/cloudtasker/tree/v0.9.3) (2020-06-25)
19
-
20
- [Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.9.2...v0.9.3)
21
-
22
- **Fixed bugs:**
23
- - Google Cloud Tasks: lock version to `~> 1.0` (Google recently released a v2 which changes its bindings completely). An [issue](https://github.com/keypup-io/cloudtasker/issues/11) has been raised to upgrade Cloudtasker to `google-cloud-tasks` `v2`.
24
-
25
3
  ## [v0.9.2](https://github.com/keypup-io/cloudtasker/tree/v0.9.2) (2020-03-04)
26
4
 
27
5
  [Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.9.1...v0.9.2)
data/README.md CHANGED
@@ -224,7 +224,7 @@ Cloudtasker.configure do |config|
224
224
  #
225
225
  # config.max_retries = 10
226
226
 
227
- #
227
+ #
228
228
  # Specify the redis connection hash.
229
229
  #
230
230
  # This is ONLY required in development for the Cloudtasker local server and in
@@ -235,6 +235,24 @@ Cloudtasker.configure do |config|
235
235
  # Default: redis-rb connects to redis://127.0.0.1:6379/0
236
236
  #
237
237
  # config.redis = { url: 'redis://localhost:6379/5' }
238
+
239
+ #
240
+ # Set to true to store job arguments in Redis instead of sending arguments as part
241
+ # of the job payload to Google Cloud Tasks.
242
+ #
243
+ # This is useful if you expect to process jobs with payloads exceeding 100KB, which
244
+ # is the limit enforced by Google Cloud Tasks.
245
+ #
246
+ # You can set this configuration parameter to a KB value if you want to store jobs
247
+ # args in redis only if the JSONified arguments payload exceeds that threshold.
248
+ #
249
+ # Default: false
250
+ #
251
+ # Store all job payloads in Redis:
252
+ # config.store_payloads_in_redis = true
253
+ #
254
+ # Store all job payloads in Redis exceeding 50 KB:
255
+ # config.store_payloads_in_redis = 50
238
256
  end
239
257
  ```
240
258
 
@@ -639,6 +657,27 @@ Google Cloud Tasks enforces a limit of 100 KB for job payloads. Taking into acco
639
657
 
640
658
  Any excessive job payload (> 100 KB) will raise a `Cloudtasker::MaxTaskSizeExceededError`, both in production and development mode.
641
659
 
660
+ #### Option 1: Use Cloudtasker optional support for payload storage in Redis
661
+ Cloudtasker provides optional support for storing argument payloads in Redis instead of sending them to Google Cloud Tasks.
662
+
663
+ To enable it simply put the following in your Cloudtasker initializer:
664
+ ```ruby
665
+ # config/initializers/cloudtasker.rb
666
+
667
+ Cloudtasker.configure do |config|
668
+ # Enable Redis support. Specify your redis connection
669
+ config.redis = { url: 'redis://localhost:6379/5' }
670
+
671
+ # Store all job payloads in Redis:
672
+ config.store_payloads_in_redis = true
673
+
674
+ # OR: store all job payloads in Redis exceeding 50 KB:
675
+ # config.store_payloads_in_redis = 50
676
+ end
677
+ ```
678
+
679
+ #### Option 2: Do it yourself solution
680
+
642
681
  If you feel that a job payload is going to get big, prefer to store the payload using a datastore (e.g. Redis) and pass a reference to the job to retrieve the payload inside your job `perform` method.
643
682
 
644
683
  E.g. Define a job like this
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cloudtasker
4
+ # Base Cloudtasker controller
5
+ class ApplicationController < ActionController::Base
6
+ skip_before_action :verify_authenticity_token
7
+ end
8
+ end
@@ -2,10 +2,7 @@
2
2
 
3
3
  module Cloudtasker
4
4
  # Handle execution of workers
5
- class WorkerController < ActionController::Base
6
- # No need for CSRF verification on API endpoints
7
- skip_before_action :verify_authenticity_token
8
-
5
+ class WorkerController < ApplicationController
9
6
  # Authenticate all requests.
10
7
  before_action :authenticate!
11
8
 
data/cloudtasker.gemspec CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
32
32
 
33
33
  spec.add_dependency 'activesupport'
34
34
  spec.add_dependency 'fugit'
35
- spec.add_dependency 'google-cloud-tasks', '~> 1.0'
35
+ spec.add_dependency 'google-cloud-tasks'
36
36
  spec.add_dependency 'jwt'
37
37
  spec.add_dependency 'redis'
38
38
 
@@ -43,7 +43,6 @@ Gem::Specification.new do |spec|
43
43
  spec.add_development_dependency 'rspec', '~> 3.0'
44
44
  spec.add_development_dependency 'rubocop', '0.76.0'
45
45
  spec.add_development_dependency 'rubocop-rspec', '1.37.0'
46
- spec.add_development_dependency 'semantic_logger'
47
46
  spec.add_development_dependency 'timecop'
48
47
  spec.add_development_dependency 'webmock'
49
48
 
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file was generated by Appraisal
2
4
 
3
- source "https://rubygems.org"
5
+ source 'https://rubygems.org'
4
6
 
5
- gem "google-cloud-tasks", "1.0"
7
+ gem 'google-cloud-tasks', '1.0'
6
8
 
7
- gemspec path: "../"
9
+ gemspec path: '../'