cloudtasker 0.9.5 → 0.10.rc1

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.
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: '../'