workerholic 0.0.21 → 0.0.22

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 (92) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +226 -2
  3. data/app_test/job_test.rb +1 -1
  4. data/app_test/run.rb +1 -1
  5. data/bin/workerholic +1 -1
  6. data/demo_app/.gitignore +19 -0
  7. data/demo_app/Gemfile +40 -0
  8. data/demo_app/README.md +24 -0
  9. data/demo_app/Rakefile +6 -0
  10. data/demo_app/app/assets/config/manifest.js +3 -0
  11. data/demo_app/app/assets/images/.keep +0 -0
  12. data/demo_app/app/assets/javascripts/application.js +14 -0
  13. data/demo_app/app/assets/javascripts/cable.js +13 -0
  14. data/demo_app/app/assets/javascripts/channels/.keep +0 -0
  15. data/demo_app/app/assets/stylesheets/application.css +15 -0
  16. data/demo_app/app/assets/stylesheets/main.scss +140 -0
  17. data/demo_app/app/channels/application_cable/channel.rb +4 -0
  18. data/demo_app/app/channels/application_cable/connection.rb +4 -0
  19. data/demo_app/app/controllers/application_controller.rb +3 -0
  20. data/demo_app/app/controllers/concerns/.keep +0 -0
  21. data/demo_app/app/controllers/jobs_controller.rb +38 -0
  22. data/demo_app/app/helpers/application_helper.rb +2 -0
  23. data/demo_app/app/jobs/application_job.rb +2 -0
  24. data/demo_app/app/jobs/cpu_bound_job.rb +14 -0
  25. data/demo_app/app/jobs/io_bound_job.rb +8 -0
  26. data/demo_app/app/jobs/non_blocking_job.rb +8 -0
  27. data/demo_app/app/mailers/application_mailer.rb +4 -0
  28. data/demo_app/app/models/application_record.rb +3 -0
  29. data/demo_app/app/models/concerns/.keep +0 -0
  30. data/demo_app/app/views/jobs/_actions_form.html.slim +15 -0
  31. data/demo_app/app/views/jobs/_footer.html.slim +5 -0
  32. data/demo_app/app/views/jobs/_header.html.slim +3 -0
  33. data/demo_app/app/views/jobs/index.html.slim +8 -0
  34. data/demo_app/app/views/layouts/application.html.slim +15 -0
  35. data/demo_app/app/views/layouts/mailer.html.erb +13 -0
  36. data/demo_app/app/views/layouts/mailer.text.erb +1 -0
  37. data/demo_app/bin/bundle +3 -0
  38. data/demo_app/bin/rails +9 -0
  39. data/demo_app/bin/rake +9 -0
  40. data/demo_app/bin/setup +38 -0
  41. data/demo_app/bin/spring +17 -0
  42. data/demo_app/bin/update +29 -0
  43. data/demo_app/bin/yarn +11 -0
  44. data/demo_app/config.ru +5 -0
  45. data/demo_app/config/application.rb +19 -0
  46. data/demo_app/config/boot.rb +3 -0
  47. data/demo_app/config/cable.yml +10 -0
  48. data/demo_app/config/database.yml +85 -0
  49. data/demo_app/config/environment.rb +5 -0
  50. data/demo_app/config/environments/development.rb +54 -0
  51. data/demo_app/config/environments/production.rb +91 -0
  52. data/demo_app/config/environments/test.rb +42 -0
  53. data/demo_app/config/initializers/application_controller_renderer.rb +6 -0
  54. data/demo_app/config/initializers/assets.rb +14 -0
  55. data/demo_app/config/initializers/backtrace_silencers.rb +7 -0
  56. data/demo_app/config/initializers/cookies_serializer.rb +5 -0
  57. data/demo_app/config/initializers/filter_parameter_logging.rb +4 -0
  58. data/demo_app/config/initializers/inflections.rb +16 -0
  59. data/demo_app/config/initializers/mime_types.rb +4 -0
  60. data/demo_app/config/initializers/wrap_parameters.rb +14 -0
  61. data/demo_app/config/locales/en.yml +33 -0
  62. data/demo_app/config/puma.rb +56 -0
  63. data/demo_app/config/routes.rb +6 -0
  64. data/demo_app/config/secrets.yml +32 -0
  65. data/demo_app/config/spring.rb +6 -0
  66. data/demo_app/db/schema.rb +18 -0
  67. data/demo_app/db/seeds.rb +7 -0
  68. data/demo_app/lib/assets/.keep +0 -0
  69. data/demo_app/lib/tasks/.keep +0 -0
  70. data/demo_app/log/.keep +0 -0
  71. data/demo_app/package.json +5 -0
  72. data/demo_app/public/404.html +67 -0
  73. data/demo_app/public/422.html +67 -0
  74. data/demo_app/public/500.html +66 -0
  75. data/demo_app/public/apple-touch-icon-precomposed.png +0 -0
  76. data/demo_app/public/apple-touch-icon.png +0 -0
  77. data/demo_app/public/favicon.ico +0 -0
  78. data/demo_app/public/robots.txt +1 -0
  79. data/demo_app/tmp/.keep +0 -0
  80. data/demo_app/vendor/.keep +0 -0
  81. data/lib/workerholic.rb +1 -1
  82. data/lib/workerholic/cli.rb +1 -1
  83. data/lib/workerholic/job_processor.rb +2 -2
  84. data/lib/workerholic/job_serializer.rb +9 -9
  85. data/lib/workerholic/queue.rb +1 -1
  86. data/lib/workerholic/version.rb +1 -1
  87. data/lib/workerholic/web/application.rb +1 -1
  88. data/logos.png +0 -0
  89. data/spec/job_serializer_spec.rb +15 -5
  90. data/spec/spec_helper.rb +1 -1
  91. data/spec/statistics_storage_spec.rb +0 -2
  92. metadata +78 -2
@@ -0,0 +1,7 @@
1
+ # This file should contain all the record creation needed to seed the database with its default values.
2
+ # The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup).
3
+ #
4
+ # Examples:
5
+ #
6
+ # movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
7
+ # Character.create(name: 'Luke', movie: movies.first)
File without changes
File without changes
File without changes
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "demo_app",
3
+ "private": true,
4
+ "dependencies": {}
5
+ }
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ .rails-default-error-page {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ .rails-default-error-page div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ .rails-default-error-page div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ .rails-default-error-page h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ .rails-default-error-page div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body class="rails-default-error-page">
58
+ <!-- This file lives in public/404.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The page you were looking for doesn't exist.</h1>
62
+ <p>You may have mistyped the address or the page may have moved.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ .rails-default-error-page {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ .rails-default-error-page div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ .rails-default-error-page div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ .rails-default-error-page h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ .rails-default-error-page div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body class="rails-default-error-page">
58
+ <!-- This file lives in public/422.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The change you wanted was rejected.</h1>
62
+ <p>Maybe you tried to change something you didn't have access to.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ .rails-default-error-page {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ .rails-default-error-page div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ .rails-default-error-page div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ .rails-default-error-page h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ .rails-default-error-page div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body class="rails-default-error-page">
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
File without changes
File without changes
@@ -0,0 +1 @@
1
+ # See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
File without changes
File without changes
data/lib/workerholic.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'yaml'
1
+ require 'json'
2
2
  require 'redis'
3
3
  require 'connection_pool'
4
4
  require 'logger'
@@ -1,4 +1,4 @@
1
- $LOAD_PATH << __dir__ + '/..'
1
+ # $LOAD_PATH << __dir__ + '/..'
2
2
 
3
3
  require 'workerholic'
4
4
  require 'optparse'
@@ -18,7 +18,7 @@ module Workerholic
18
18
  StatsStorage.save_job('completed_jobs', job)
19
19
  StatsStorage.update_historical_stats('completed_jobs', job.klass.to_s)
20
20
 
21
- @logger.info("Completed: your job from class #{job.klass} was completed on #{job.statistics.completed_at}.")
21
+ # @logger.info("Completed: your job from class #{job.klass} was completed on #{job.statistics.completed_at}.")
22
22
  rescue Exception => e
23
23
  job.statistics.errors.push([e.class, e.message])
24
24
  retry_job(job, e)
@@ -31,7 +31,7 @@ module Workerholic
31
31
 
32
32
  def retry_job(job, error)
33
33
  if JobRetry.new(job: job).retry
34
- @logger.error("Failed: your job from class #{job.class} was unsuccessful because of the folloing error: #{error} => #{error.message}. Retrying in 10 secs...")
34
+ @logger.error("Failed: your job from class #{job.klass} was unsuccessful because of the folloing error: #{error} => #{error.message}. Retrying in 10 secs...")
35
35
  else
36
36
  job.statistics.failed_on = Time.now.to_f
37
37
  StatsStorage.save_job('failed_jobs', job)
@@ -1,20 +1,20 @@
1
1
  module Workerholic
2
2
  class JobSerializer
3
3
  def self.serialize(job)
4
- YAML.dump(job.to_hash)
4
+ JSON.dump(job.to_hash)
5
5
  end
6
6
 
7
- def self.deserialize(yaml_job)
8
- job_info = YAML.load(yaml_job)
9
- JobWrapper.new(job_info)
10
- end
7
+ def self.deserialize(json_job)
8
+ job_info = JSON.parse(json_job, symbolize_names: true)
11
9
 
12
- def self.serialize_stats(stat)
13
- YAML.dump(stat)
10
+ job_info[:klass] = job_info[:klass] ? Object.const_get(job_info[:klass]) : nil
11
+ job_info[:wrapper] = job_info[:wrapper] ? Object.const_get(job_info[:wrapper]) : nil
12
+
13
+ JobWrapper.new(job_info)
14
14
  end
15
15
 
16
- def self.deserialize_stats(yaml_stat)
17
- YAML.load(yaml_stat)
16
+ def self.deserialize_stats(json_stat)
17
+ JSON.parse(json_stat, symbolize_names: true)
18
18
  end
19
19
  end
20
20
  end
@@ -11,7 +11,7 @@ module Workerholic
11
11
 
12
12
  def enqueue(serialized_job)
13
13
  storage.push(name, serialized_job)
14
- logger.info("Your job was placed in the #{name} queue on #{Time.now}.")
14
+ # logger.info("Your job was placed in the #{name} queue on #{Time.now}.")
15
15
  end
16
16
 
17
17
  def dequeue
@@ -1,3 +1,3 @@
1
1
  module Workerholic
2
- VERSION = '0.0.21'
2
+ VERSION = '0.0.22'
3
3
  end
@@ -1,4 +1,4 @@
1
- $LOAD_PATH << __dir__ + '/../..'
1
+ # $LOAD_PATH << __dir__ + '/../..'
2
2
  require 'sinatra/base'
3
3
 
4
4
  # require 'sinatra/reloader'
data/logos.png ADDED
Binary file
@@ -5,24 +5,34 @@ class JobTest; end
5
5
  describe Workerholic::JobSerializer do
6
6
  it 'serializes a job' do
7
7
  job = Workerholic::JobWrapper.new(
8
- class: JobTest,
8
+ klass: JobTest,
9
+ wrapper: JobTest,
9
10
  arguments: ['some_args', [1, 2, 3], true, { a: 'y' }, 1, :symptom]
10
11
  )
11
12
 
12
13
  serialized_job = Workerholic::JobSerializer.serialize(job)
13
14
 
14
- expect(serialized_job).to eq(YAML.dump(job.to_hash))
15
+ expect(serialized_job).to eq(JSON.dump(job.to_hash))
15
16
  end
16
17
 
17
18
  it 'deserializes a job' do
18
19
  job = Workerholic::JobWrapper.new(
19
- class: JobTest,
20
+ klass: JobTest,
21
+ wrapper: JobTest,
20
22
  arguments: ['some_args', [1, 2, 3], true, { a: 'y' }, 1, :symptom]
21
23
  )
22
24
 
23
- serialized_job = YAML.dump(job.to_hash)
25
+ serialized_job = JSON.dump(job.to_hash)
24
26
  deserialized_job = Workerholic::JobSerializer.deserialize(serialized_job)
25
27
 
26
- expect(deserialized_job).to eq(job)
28
+ expect(deserialized_job) == job
29
+ end
30
+
31
+ it 'deserializes statistics' do
32
+ serialized_stats = JSON.dump({ klass: SimpleJobTest, wrapper: SimpleJobTest })
33
+
34
+ deserialized_stats = Workerholic::JobSerializer.deserialize_stats(serialized_stats)
35
+
36
+ expect(deserialized_stats).to eq({ klass: 'SimpleJobTest', wrapper: 'SimpleJobTest' })
27
37
  end
28
38
  end
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,4 @@
1
- $LOAD_PATH << __dir__ + '/../lib/'
1
+ # $LOAD_PATH << __dir__ + '/../lib/'
2
2
 
3
3
  $TESTING = true
4
4
 
@@ -17,10 +17,8 @@ describe Workerholic::StatsStorage do
17
17
  Workerholic::StatsStorage.save_job('completed_jobs', job)
18
18
 
19
19
  serialized_stats = storage.sorted_set_all_members(namespace).first
20
- deserialized_stats = Workerholic::JobSerializer.deserialize_stats(serialized_stats)
21
20
 
22
21
  expect(storage.sorted_set_size(namespace)).to eq 1
23
- expect(deserialized_stats).to eq job_hash
24
22
  end
25
23
 
26
24
  it 'saves process memory usage' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: workerholic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.21
4
+ version: 0.0.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Antoine Leclercq
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-08-06 00:00:00.000000000 Z
13
+ date: 2017-08-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: redis
@@ -122,6 +122,81 @@ files:
122
122
  - app_test/run.rb
123
123
  - bin/workerholic
124
124
  - bin/workerholic-web
125
+ - demo_app/.gitignore
126
+ - demo_app/Gemfile
127
+ - demo_app/README.md
128
+ - demo_app/Rakefile
129
+ - demo_app/app/assets/config/manifest.js
130
+ - demo_app/app/assets/images/.keep
131
+ - demo_app/app/assets/javascripts/application.js
132
+ - demo_app/app/assets/javascripts/cable.js
133
+ - demo_app/app/assets/javascripts/channels/.keep
134
+ - demo_app/app/assets/stylesheets/application.css
135
+ - demo_app/app/assets/stylesheets/main.scss
136
+ - demo_app/app/channels/application_cable/channel.rb
137
+ - demo_app/app/channels/application_cable/connection.rb
138
+ - demo_app/app/controllers/application_controller.rb
139
+ - demo_app/app/controllers/concerns/.keep
140
+ - demo_app/app/controllers/jobs_controller.rb
141
+ - demo_app/app/helpers/application_helper.rb
142
+ - demo_app/app/jobs/application_job.rb
143
+ - demo_app/app/jobs/cpu_bound_job.rb
144
+ - demo_app/app/jobs/io_bound_job.rb
145
+ - demo_app/app/jobs/non_blocking_job.rb
146
+ - demo_app/app/mailers/application_mailer.rb
147
+ - demo_app/app/models/application_record.rb
148
+ - demo_app/app/models/concerns/.keep
149
+ - demo_app/app/views/jobs/_actions_form.html.slim
150
+ - demo_app/app/views/jobs/_footer.html.slim
151
+ - demo_app/app/views/jobs/_header.html.slim
152
+ - demo_app/app/views/jobs/index.html.slim
153
+ - demo_app/app/views/layouts/application.html.slim
154
+ - demo_app/app/views/layouts/mailer.html.erb
155
+ - demo_app/app/views/layouts/mailer.text.erb
156
+ - demo_app/bin/bundle
157
+ - demo_app/bin/rails
158
+ - demo_app/bin/rake
159
+ - demo_app/bin/setup
160
+ - demo_app/bin/spring
161
+ - demo_app/bin/update
162
+ - demo_app/bin/yarn
163
+ - demo_app/config.ru
164
+ - demo_app/config/application.rb
165
+ - demo_app/config/boot.rb
166
+ - demo_app/config/cable.yml
167
+ - demo_app/config/database.yml
168
+ - demo_app/config/environment.rb
169
+ - demo_app/config/environments/development.rb
170
+ - demo_app/config/environments/production.rb
171
+ - demo_app/config/environments/test.rb
172
+ - demo_app/config/initializers/application_controller_renderer.rb
173
+ - demo_app/config/initializers/assets.rb
174
+ - demo_app/config/initializers/backtrace_silencers.rb
175
+ - demo_app/config/initializers/cookies_serializer.rb
176
+ - demo_app/config/initializers/filter_parameter_logging.rb
177
+ - demo_app/config/initializers/inflections.rb
178
+ - demo_app/config/initializers/mime_types.rb
179
+ - demo_app/config/initializers/wrap_parameters.rb
180
+ - demo_app/config/locales/en.yml
181
+ - demo_app/config/puma.rb
182
+ - demo_app/config/routes.rb
183
+ - demo_app/config/secrets.yml
184
+ - demo_app/config/spring.rb
185
+ - demo_app/db/schema.rb
186
+ - demo_app/db/seeds.rb
187
+ - demo_app/lib/assets/.keep
188
+ - demo_app/lib/tasks/.keep
189
+ - demo_app/log/.keep
190
+ - demo_app/package.json
191
+ - demo_app/public/404.html
192
+ - demo_app/public/422.html
193
+ - demo_app/public/500.html
194
+ - demo_app/public/apple-touch-icon-precomposed.png
195
+ - demo_app/public/apple-touch-icon.png
196
+ - demo_app/public/favicon.ico
197
+ - demo_app/public/robots.txt
198
+ - demo_app/tmp/.keep
199
+ - demo_app/vendor/.keep
125
200
  - lib/workerholic.rb
126
201
  - lib/workerholic/adapters/active_job_adapter.rb
127
202
  - lib/workerholic/cli.rb
@@ -155,6 +230,7 @@ files:
155
230
  - lib/workerholic/web/views/workers.erb
156
231
  - lib/workerholic/worker.rb
157
232
  - lib/workerholic/worker_balancer.rb
233
+ - logos.png
158
234
  - pkg/workerholic-0.0.14.gem
159
235
  - spec/helpers/helper_methods.rb
160
236
  - spec/helpers/job_tests.rb