hard_worker 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.rspec +1 -0
  4. data/.rubocop.yml +13 -0
  5. data/CHANGELOG.md +11 -1
  6. data/Gemfile +3 -0
  7. data/Gemfile.lock +133 -1
  8. data/README.md +48 -1
  9. data/bin/bundle +3 -0
  10. data/bin/hard_worker +32 -1
  11. data/dummy/Rakefile +8 -0
  12. data/dummy/app/assets/config/manifest.js +3 -0
  13. data/dummy/app/assets/images/.keep +0 -0
  14. data/dummy/app/assets/stylesheets/application.css +15 -0
  15. data/dummy/app/channels/application_cable/channel.rb +6 -0
  16. data/dummy/app/channels/application_cable/connection.rb +6 -0
  17. data/dummy/app/controllers/application_controller.rb +5 -0
  18. data/dummy/app/controllers/concerns/.keep +0 -0
  19. data/dummy/app/helpers/application_helper.rb +4 -0
  20. data/dummy/app/javascript/packs/application.js +15 -0
  21. data/dummy/app/jobs/application_job.rb +9 -0
  22. data/dummy/app/mailers/application_mailer.rb +6 -0
  23. data/dummy/app/models/application_record.rb +5 -0
  24. data/dummy/app/models/concerns/.keep +0 -0
  25. data/dummy/app/models/user.rb +2 -0
  26. data/dummy/app/views/application/index.html.erb +4 -0
  27. data/dummy/app/views/layouts/application.html.erb +15 -0
  28. data/dummy/app/views/layouts/mailer.html.erb +13 -0
  29. data/dummy/app/views/layouts/mailer.text.erb +1 -0
  30. data/dummy/bin/rails +6 -0
  31. data/dummy/bin/rake +6 -0
  32. data/dummy/bin/setup +35 -0
  33. data/dummy/config.ru +8 -0
  34. data/dummy/config/application.rb +23 -0
  35. data/dummy/config/boot.rb +7 -0
  36. data/dummy/config/cable.yml +10 -0
  37. data/dummy/config/credentials.yml.enc +1 -0
  38. data/dummy/config/database.yml +25 -0
  39. data/dummy/config/environment.rb +7 -0
  40. data/dummy/config/environments/development.rb +78 -0
  41. data/dummy/config/environments/production.rb +122 -0
  42. data/dummy/config/environments/test.rb +51 -0
  43. data/dummy/config/initializers/application_controller_renderer.rb +9 -0
  44. data/dummy/config/initializers/backtrace_silencers.rb +10 -0
  45. data/dummy/config/initializers/content_security_policy.rb +29 -0
  46. data/dummy/config/initializers/cookies_serializer.rb +7 -0
  47. data/dummy/config/initializers/filter_parameter_logging.rb +8 -0
  48. data/dummy/config/initializers/inflections.rb +17 -0
  49. data/dummy/config/initializers/mime_types.rb +5 -0
  50. data/dummy/config/initializers/permissions_policy.rb +12 -0
  51. data/dummy/config/initializers/wrap_parameters.rb +16 -0
  52. data/dummy/config/locales/en.yml +33 -0
  53. data/dummy/config/master.key +1 -0
  54. data/dummy/config/puma.rb +45 -0
  55. data/dummy/config/routes.rb +5 -0
  56. data/dummy/config/storage.yml +34 -0
  57. data/dummy/db/migrate/20210613015406_create_users.rb +10 -0
  58. data/dummy/db/production.sqlite3 +0 -0
  59. data/dummy/db/schema.rb +20 -0
  60. data/dummy/db/test.sqlite3 +0 -0
  61. data/dummy/lib/assets/.keep +0 -0
  62. data/dummy/log/.keep +0 -0
  63. data/dummy/log/development.log +0 -0
  64. data/dummy/log/production.log +3 -0
  65. data/dummy/log/test.log +31 -0
  66. data/dummy/public/404.html +67 -0
  67. data/dummy/public/422.html +67 -0
  68. data/dummy/public/500.html +66 -0
  69. data/dummy/public/apple-touch-icon-precomposed.png +0 -0
  70. data/dummy/public/apple-touch-icon.png +0 -0
  71. data/dummy/public/favicon.ico +0 -0
  72. data/dummy/storage/.keep +0 -0
  73. data/dummy/tmp/.keep +0 -0
  74. data/dummy/tmp/development_secret.txt +1 -0
  75. data/dummy/tmp/pids/.keep +0 -0
  76. data/dummy/tmp/storage/.keep +0 -0
  77. data/{hardwordker.gemspec → hard_worker.gemspec} +7 -0
  78. data/lib/hard_worker.rb +87 -9
  79. data/lib/hard_worker/client.rb +16 -0
  80. data/lib/hard_worker/rails.rb +5 -0
  81. data/lib/hard_worker/version.rb +1 -1
  82. data/lib/hard_worker/worker.rb +1 -1
  83. metadata +91 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b52df482216a2a82f96d8bdaca1f10e7982cb5c897fb0488abb2294ecfa0e33a
4
- data.tar.gz: 5b7368324bff956a7f31987a209f07ab685e0fdc9aed96dd4cec5e2bf20014eb
3
+ metadata.gz: 61d96fa08d1068e7bc79f2eea45d9cb78ba20773f343be2ddb0df5e598accc82
4
+ data.tar.gz: 2093f3e18019a457e32fb160ce503f8aae73c2e728d0e7a5b55c18a5a4d7bf4e
5
5
  SHA512:
6
- metadata.gz: 680f5d641d281b19b5362ba5380a804582efa1d9a46be5c582f527639aea056351cc310768edeca85fc600770390f20d79198edda9856efc93aefe5beb030ec3
7
- data.tar.gz: c4f544d238c9f2403fde1f88009b3c5f0d75001b5310d84c9cd97c6f1049d6e5618e08b274a1b3778feb2e83ae80a1311063d9128d0344325a9247757b92b9b2
6
+ metadata.gz: e073fadacdb5099ad0c507465cd0c291d6290cbb66d1387e3204bcb7a0d147e05cffd02cbd1eb5e3bc0bf323c83fe109f4d4911d44526ddbd36abc5fc05ba2b0
7
+ data.tar.gz: 42b0a7707ac39012fcbd1ee28e7ee5aa3ca6fa4169581e48ae4262466ef3ef15bda9e9bd1a81e9bb1917bfe796a264a770e4ec6d0e429fe11f667f386de5eb4f
data/.gitignore CHANGED
@@ -6,7 +6,9 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
-
9
+ /.idea/
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
12
  .byebug_history
13
+ /dummy/tmp/cache/
14
+ hard_worker_dump
data/.rspec CHANGED
@@ -1,3 +1,4 @@
1
1
  --format documentation
2
2
  --color
3
3
  --require spec_helper
4
+ --profile
data/.rubocop.yml CHANGED
@@ -22,5 +22,18 @@ Style/AsciiComments:
22
22
  Style/ClassVars:
23
23
  Enabled: false
24
24
 
25
+ Style/Documentation:
26
+ Enabled: false
27
+
28
+ Style/GlobalVars:
29
+ Enabled: false
30
+
31
+ Style/BlockDelimiters:
32
+ EnforcedStyle: braces_for_chaining
33
+
34
+ Metrics/BlockLength:
35
+ Exclude:
36
+ - 'spec/**/*.rb'
37
+
25
38
  Security/YAMLLoad:
26
39
  Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [Unreleased]
2
2
 
3
+ Rails support!
4
+ Need a better way to find Rails config, going to release 0.1.0 after that.
5
+ Going to change the name of the gem to something a bit more original than HardWorker.
6
+ (HardWorker is already in use in Sidekiq documentation)
3
7
  ## [0.0.1] - 2021-07-15
4
8
 
5
9
  - Initial release! :tada:
@@ -13,4 +17,10 @@ Things are almost working. You can enqueue jobs! That should be more than enough
13
17
  ## [0.0.3] - 2021-07-16
14
18
 
15
19
  - YAML Marshalled queue! So now the queue stays in memory even if restarted. Though kill and term signals still need catching.. that is not done yet.
16
- - Also, now you can use classes! As long as the class has a perform-method.
20
+ - Also, now you can use classes! As long as the class has a perform-method.
21
+
22
+ ## [0.0.4] - 2021-07-24
23
+
24
+ - Rails support!
25
+ - Banner (for Belated though...)
26
+ - Final release, as the name of this gem is going to change to Belated.
data/Gemfile CHANGED
@@ -10,3 +10,6 @@ gem 'rake', '~> 13.0'
10
10
  gem 'rspec', '~> 3.0'
11
11
 
12
12
  gem 'rubocop', '~> 1.7'
13
+
14
+ gem 'rails', '>= 6.1.3'
15
+ gem 'sqlite3'
data/Gemfile.lock CHANGED
@@ -1,19 +1,134 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hard_worker (0.0.3)
4
+ hard_worker (0.0.4)
5
5
  drb
6
+ dry-configurable
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
9
10
  specs:
11
+ actioncable (6.1.4)
12
+ actionpack (= 6.1.4)
13
+ activesupport (= 6.1.4)
14
+ nio4r (~> 2.0)
15
+ websocket-driver (>= 0.6.1)
16
+ actionmailbox (6.1.4)
17
+ actionpack (= 6.1.4)
18
+ activejob (= 6.1.4)
19
+ activerecord (= 6.1.4)
20
+ activestorage (= 6.1.4)
21
+ activesupport (= 6.1.4)
22
+ mail (>= 2.7.1)
23
+ actionmailer (6.1.4)
24
+ actionpack (= 6.1.4)
25
+ actionview (= 6.1.4)
26
+ activejob (= 6.1.4)
27
+ activesupport (= 6.1.4)
28
+ mail (~> 2.5, >= 2.5.4)
29
+ rails-dom-testing (~> 2.0)
30
+ actionpack (6.1.4)
31
+ actionview (= 6.1.4)
32
+ activesupport (= 6.1.4)
33
+ rack (~> 2.0, >= 2.0.9)
34
+ rack-test (>= 0.6.3)
35
+ rails-dom-testing (~> 2.0)
36
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
37
+ actiontext (6.1.4)
38
+ actionpack (= 6.1.4)
39
+ activerecord (= 6.1.4)
40
+ activestorage (= 6.1.4)
41
+ activesupport (= 6.1.4)
42
+ nokogiri (>= 1.8.5)
43
+ actionview (6.1.4)
44
+ activesupport (= 6.1.4)
45
+ builder (~> 3.1)
46
+ erubi (~> 1.4)
47
+ rails-dom-testing (~> 2.0)
48
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
49
+ activejob (6.1.4)
50
+ activesupport (= 6.1.4)
51
+ globalid (>= 0.3.6)
52
+ activemodel (6.1.4)
53
+ activesupport (= 6.1.4)
54
+ activerecord (6.1.4)
55
+ activemodel (= 6.1.4)
56
+ activesupport (= 6.1.4)
57
+ activestorage (6.1.4)
58
+ actionpack (= 6.1.4)
59
+ activejob (= 6.1.4)
60
+ activerecord (= 6.1.4)
61
+ activesupport (= 6.1.4)
62
+ marcel (~> 1.0.0)
63
+ mini_mime (>= 1.1.0)
64
+ activesupport (6.1.4)
65
+ concurrent-ruby (~> 1.0, >= 1.0.2)
66
+ i18n (>= 1.6, < 2)
67
+ minitest (>= 5.1)
68
+ tzinfo (~> 2.0)
69
+ zeitwerk (~> 2.3)
10
70
  ast (2.4.2)
71
+ builder (3.2.4)
11
72
  byebug (11.1.3)
73
+ concurrent-ruby (1.1.9)
74
+ crass (1.0.6)
12
75
  diff-lcs (1.4.4)
13
76
  drb (2.0.4)
77
+ dry-configurable (0.12.1)
78
+ concurrent-ruby (~> 1.0)
79
+ dry-core (~> 0.5, >= 0.5.0)
80
+ dry-core (0.7.1)
81
+ concurrent-ruby (~> 1.0)
82
+ erubi (1.10.0)
83
+ globalid (0.4.2)
84
+ activesupport (>= 4.2.0)
85
+ i18n (1.8.10)
86
+ concurrent-ruby (~> 1.0)
87
+ loofah (2.10.0)
88
+ crass (~> 1.0.2)
89
+ nokogiri (>= 1.5.9)
90
+ mail (2.7.1)
91
+ mini_mime (>= 0.1.1)
92
+ marcel (1.0.1)
93
+ method_source (1.0.0)
94
+ mini_mime (1.1.0)
95
+ minitest (5.14.4)
96
+ nio4r (2.5.7)
97
+ nokogiri (1.11.7-x86_64-linux)
98
+ racc (~> 1.4)
14
99
  parallel (1.20.1)
15
100
  parser (3.0.2.0)
16
101
  ast (~> 2.4.1)
102
+ racc (1.5.2)
103
+ rack (2.2.3)
104
+ rack-test (1.1.0)
105
+ rack (>= 1.0, < 3)
106
+ rails (6.1.4)
107
+ actioncable (= 6.1.4)
108
+ actionmailbox (= 6.1.4)
109
+ actionmailer (= 6.1.4)
110
+ actionpack (= 6.1.4)
111
+ actiontext (= 6.1.4)
112
+ actionview (= 6.1.4)
113
+ activejob (= 6.1.4)
114
+ activemodel (= 6.1.4)
115
+ activerecord (= 6.1.4)
116
+ activestorage (= 6.1.4)
117
+ activesupport (= 6.1.4)
118
+ bundler (>= 1.15.0)
119
+ railties (= 6.1.4)
120
+ sprockets-rails (>= 2.0.0)
121
+ rails-dom-testing (2.0.3)
122
+ activesupport (>= 4.2.0)
123
+ nokogiri (>= 1.6)
124
+ rails-html-sanitizer (1.3.0)
125
+ loofah (~> 2.3)
126
+ railties (6.1.4)
127
+ actionpack (= 6.1.4)
128
+ activesupport (= 6.1.4)
129
+ method_source
130
+ rake (>= 0.13)
131
+ thor (~> 1.0)
17
132
  rainbow (3.0.0)
18
133
  rake (13.0.6)
19
134
  regexp_parser (2.1.1)
@@ -43,7 +158,22 @@ GEM
43
158
  rubocop-ast (1.7.0)
44
159
  parser (>= 3.0.1.1)
45
160
  ruby-progressbar (1.11.0)
161
+ sprockets (4.0.2)
162
+ concurrent-ruby (~> 1.0)
163
+ rack (> 1, < 3)
164
+ sprockets-rails (3.2.2)
165
+ actionpack (>= 4.0)
166
+ activesupport (>= 4.0)
167
+ sprockets (>= 3.0.0)
168
+ sqlite3 (1.4.2)
169
+ thor (1.1.0)
170
+ tzinfo (2.0.4)
171
+ concurrent-ruby (~> 1.0)
46
172
  unicode-display_width (2.0.0)
173
+ websocket-driver (0.7.5)
174
+ websocket-extensions (>= 0.1.0)
175
+ websocket-extensions (0.1.5)
176
+ zeitwerk (2.4.2)
47
177
 
48
178
  PLATFORMS
49
179
  x86_64-linux
@@ -51,9 +181,11 @@ PLATFORMS
51
181
  DEPENDENCIES
52
182
  byebug
53
183
  hard_worker!
184
+ rails (>= 6.1.3)
54
185
  rake (~> 13.0)
55
186
  rspec (~> 3.0)
56
187
  rubocop (~> 1.7)
188
+ sqlite3
57
189
 
58
190
  BUNDLED WITH
59
191
  2.2.17
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Hardworker
2
2
 
3
+ [![CodeFactor](https://www.codefactor.io/repository/github/sampokuokkanen/hard_worker/badge)](https://www.codefactor.io/repository/github/sampokuokkanen/hard_worker) [![Gem Version](https://badge.fury.io/rb/hard_worker.svg)](https://badge.fury.io/rb/hard_worker)
4
+
3
5
  This is HardWorker, a new Ruby backend job library! It supports running procs and classes in the background.
4
6
  ~~Also, you lose all jobs if you restart the process.~~ It now uses YAML to load the queue into a file, which it then calls at startup to find the previous jobs.
5
7
 
@@ -8,7 +10,9 @@ It uses dRuby to do the communication! Which is absolute great. No need for Redi
8
10
  TODO LIST:
9
11
  - ~~Marshal the job queue into a file so you don't lose all progress~~
10
12
  (Ended up using YAML)
11
- - Support Rails and ActiveJob
13
+ - ~~Support Rails~~ (Supported!)
14
+ - ~~Parse options from command line, eg. `--workers 10`~~(Done!)
15
+ - Maybe support ActiveJob?
12
16
  - Have a web UI
13
17
  - Do some performance testing
14
18
  - Add a section telling people to use Sidekiq if they can
@@ -62,7 +66,50 @@ dummy.queue.push(proc { 2 / 1 })
62
66
  dummy.queue.push(DumDum.new)
63
67
  ```
64
68
 
69
+ Hardworker runs on localhost, port 8788. Should probably make that a value you can change...
70
+
71
+ ## Rails
72
+
73
+ Usage with Rails:
74
+ First, start up HardWorker.
75
+ Then,
76
+ ```ruby
77
+ $client = HardWorker::Client.new
78
+ ```
79
+
80
+ and you can use the client!
81
+ Call
82
+
83
+ ```ruby
84
+ $client.perform_belated(job)
85
+ ```
86
+ If you want to pass a job to HardWorker.
87
+
88
+ # Settings
89
+ Configuring HardWorker:
90
+
91
+ ```ruby
92
+ HardWorker.configure do |config|
93
+ config.rails = false # default is true
94
+ config.rails_path = # './dummy' default is '.'
95
+ config.connect = false # Connect to dRuby, default is true, useful for testing only
96
+ config.workers = 2 # default is 1
97
+ end
98
+ ```
99
+
100
+ From command line:
101
+
102
+ $ bundle exec hard_worker --rails=true
103
+
104
+ Use Rails or not.
105
+
106
+ $ bundle exec hard_worker --rails_path=/my_rails_project
107
+
108
+ Path to Rails project.
109
+
110
+ $ bundle exec hard_worker --workers=10
65
111
 
112
+ Number of workers.
66
113
  ## Development
67
114
 
68
115
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
data/bin/bundle ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
3
+ load Gem.bin_path('bundler', 'bundle')
data/bin/hard_worker CHANGED
@@ -1,7 +1,38 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
+ $TESTING = false
4
5
  $LOAD_PATH.unshift File.expand_path("#{File.dirname(__FILE__)}/../lib")
5
6
  require 'hard_worker'
7
+ require 'optparse'
8
+ require 'byebug'
6
9
 
7
- HardWorker.new(connect: true)
10
+ OptionParser.new do |opts|
11
+ opts.banner = 'Usage: hard_worker [options]'
12
+
13
+ opts.separator ''
14
+ opts.separator 'Options:'
15
+
16
+ opts.on('-r=RAILS', '--rails=RAILS', 'Load Rails or not, default true') do |rails|
17
+ HardWorker.config.rails = rails == 'true'
18
+ end
19
+
20
+ opts.on('-r_path=PATH', '--rails_path=PATH', 'Path to Rails') do |path|
21
+ HardWorker.config.rails_path = path
22
+ end
23
+
24
+ opts.on('-w=WORKERS', '--workers=WORKERS', 'Number of workers, default 1') do |workers|
25
+ HardWorker.config.workers = workers.to_i
26
+ end
27
+
28
+ opts.on('-e=ENV', '--env=ENV', 'Environment, default development') do |env|
29
+ HardWorker.config.env = env
30
+ end
31
+
32
+ opts.on('-c=CONNECT', '--connect=CONNECT', 'Start dRuby connection, default true') do |connect|
33
+ HardWorker.config.connect = connect == 'true'
34
+ end
35
+ end.parse!
36
+
37
+ instance = HardWorker.instance
38
+ instance.start
data/dummy/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
4
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
5
+
6
+ require_relative 'config/application'
7
+
8
+ Rails.application.load_tasks
@@ -0,0 +1,3 @@
1
+ //= link_tree ../images
2
+ //= link_directory ../stylesheets .css
3
+ //= link active_translate_self_manifest.js
File without changes
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
+ * files in this directory. Styles in this file should be added after the last require_* statement.
11
+ * It is generally better to create a new file per style scope.
12
+ *
13
+ *= require_tree .
14
+ *= require_self
15
+ */
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ApplicationCable
4
+ class Channel < ActionCable::Channel::Base
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ApplicationCable
4
+ class Connection < ActionCable::Connection::Base
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ApplicationController < ActionController::Base
4
+ def index; end
5
+ end
File without changes
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ApplicationHelper
4
+ end
@@ -0,0 +1,15 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file. JavaScript code in this file should be added after the last require_* statement.
9
+ //
10
+ // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require rails-ujs
14
+ //= require activestorage
15
+ //= require_tree .