sidejobs 0.0.1

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 (70) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +80 -0
  4. data/Rakefile +18 -0
  5. data/lib/generators/sidejobs/install_generator.rb +24 -0
  6. data/lib/generators/sidejobs/templates/configuration.rb +7 -0
  7. data/lib/generators/sidejobs/templates/migration.rb +25 -0
  8. data/lib/sidejobs.rb +34 -0
  9. data/lib/sidejobs/configuration.rb +7 -0
  10. data/lib/sidejobs/daemon.rb +104 -0
  11. data/lib/sidejobs/extensions/active_job/queue_adapter.rb +47 -0
  12. data/lib/sidejobs/job.rb +21 -0
  13. data/lib/sidejobs/processor.rb +23 -0
  14. data/lib/sidejobs/queue.rb +24 -0
  15. data/lib/sidejobs/railtie.rb +15 -0
  16. data/lib/sidejobs/version.rb +3 -0
  17. data/lib/tasks/sidejobs.rake +11 -0
  18. data/test/daemon_test.rb +71 -0
  19. data/test/dummy/Rakefile +5 -0
  20. data/test/dummy/app/assets/javascripts/application.js +13 -0
  21. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  22. data/test/dummy/app/controllers/application_controller.rb +5 -0
  23. data/test/dummy/app/helpers/application_helper.rb +2 -0
  24. data/test/dummy/app/jobs/charge_subscriptions_job.rb +8 -0
  25. data/test/dummy/app/jobs/clear_guest_users_job.rb +8 -0
  26. data/test/dummy/app/jobs/send_newsletters_job.rb +8 -0
  27. data/test/dummy/app/jobs/share_products_job.rb +8 -0
  28. data/test/dummy/app/jobs/update_exchanges_job.rb +8 -0
  29. data/test/dummy/app/mailers/user_mailer.rb +7 -0
  30. data/test/dummy/app/views/layouts/application.html.erb +12 -0
  31. data/test/dummy/app/views/user_mailer/invite.text.erb +1 -0
  32. data/test/dummy/bin/bundle +3 -0
  33. data/test/dummy/bin/rails +4 -0
  34. data/test/dummy/bin/rake +4 -0
  35. data/test/dummy/bin/setup +29 -0
  36. data/test/dummy/config.ru +4 -0
  37. data/test/dummy/config/application.rb +25 -0
  38. data/test/dummy/config/boot.rb +5 -0
  39. data/test/dummy/config/database.yml +7 -0
  40. data/test/dummy/config/database.yml.travis +12 -0
  41. data/test/dummy/config/environment.rb +5 -0
  42. data/test/dummy/config/environments/development.rb +49 -0
  43. data/test/dummy/config/environments/production.rb +79 -0
  44. data/test/dummy/config/environments/test.rb +45 -0
  45. data/test/dummy/config/initializers/assets.rb +11 -0
  46. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  47. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  48. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  49. data/test/dummy/config/initializers/inflections.rb +16 -0
  50. data/test/dummy/config/initializers/mime_types.rb +4 -0
  51. data/test/dummy/config/initializers/session_store.rb +3 -0
  52. data/test/dummy/config/initializers/sidejobs.rb +7 -0
  53. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  54. data/test/dummy/config/locales/en.yml +23 -0
  55. data/test/dummy/config/routes.rb +56 -0
  56. data/test/dummy/config/secrets.yml +22 -0
  57. data/test/dummy/db/migrate/20161022211612_create_sidejobs.rb +25 -0
  58. data/test/dummy/db/schema.rb +37 -0
  59. data/test/dummy/log/development.log +228 -0
  60. data/test/dummy/log/sidejobs.log +1782 -0
  61. data/test/dummy/log/test.log +14856 -0
  62. data/test/dummy/public/404.html +67 -0
  63. data/test/dummy/public/422.html +67 -0
  64. data/test/dummy/public/500.html +66 -0
  65. data/test/dummy/public/favicon.ico +0 -0
  66. data/test/generator_test.rb +20 -0
  67. data/test/processor_test.rb +49 -0
  68. data/test/queue_test.rb +69 -0
  69. data/test/test_helper.rb +14 -0
  70. metadata +212 -0
@@ -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
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ 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
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ 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>
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
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ 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
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ 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>
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
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ 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
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ 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>
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
@@ -0,0 +1,20 @@
1
+ require 'test_helper'
2
+ require 'rails/generators'
3
+ require 'generators/sidejobs/install_generator'
4
+
5
+ class GeneratorsTest < Rails::Generators::TestCase
6
+
7
+ tests Sidejobs::Generators::InstallGenerator
8
+ destination Rails.root.join('tmp')
9
+
10
+ teardown do
11
+ FileUtils.rm_rf destination_root
12
+ end
13
+
14
+ test 'file generation' do
15
+ run_generator
16
+ assert_file 'config/initializers/sidejobs.rb'
17
+ assert_migration 'db/migrate/create_sidejobs.rb'
18
+ end
19
+
20
+ end
@@ -0,0 +1,49 @@
1
+ require 'test_helper'
2
+
3
+ class ProcessorTest < ActiveSupport::TestCase
4
+
5
+ setup do
6
+ @processor = Sidejobs::Processor.new
7
+ @batch_size = Sidejobs.configuration.batch_size
8
+ @max_attempts = Sidejobs.configuration.max_attempts
9
+ end
10
+
11
+ test 'process' do
12
+ UserMailer.invite('test@mail.com').deliver_later
13
+ @processor.process
14
+ job = Sidejobs::Job.last
15
+ assert job.complete?
16
+ assert_nil job.error
17
+ assert_equal 1, job.attempts
18
+ assert_operator job.completed_at, :>, job.processed_at
19
+ end
20
+
21
+ test 'batch' do
22
+ (@batch_size + 4).times do
23
+ UserMailer.invite('test@mail.com').deliver_later
24
+ end
25
+ @processor.process
26
+ assert_equal @batch_size, Sidejobs::Job.complete.count
27
+ assert_equal 0, Sidejobs::Job.processing.count
28
+ assert_equal 4, Sidejobs::Job.pending.count
29
+
30
+ Sidejobs::Job.last.update status: 'processing', processed_at: Time.now
31
+ @processor.process
32
+ assert_equal (@batch_size + 3), Sidejobs::Job.complete.count
33
+ assert_equal 1, Sidejobs::Job.processing.count
34
+ assert_equal 0, Sidejobs::Job.pending.count
35
+ end
36
+
37
+ test 'retries' do
38
+ ShareProductsJob.perform_later
39
+ (@max_attempts + 1).times do
40
+ @processor.process
41
+ end
42
+ job = Sidejobs::Job.last
43
+ assert job.failing?
44
+ assert_equal 'Social network unavailable', job.error
45
+ assert_equal @max_attempts, job.attempts
46
+ assert_operator job.failed_at, :>, job.processed_at
47
+ end
48
+
49
+ end
@@ -0,0 +1,69 @@
1
+ require 'test_helper'
2
+
3
+ class QueueTest < ActiveSupport::TestCase
4
+
5
+ test 'enqueue' do
6
+ UserMailer.invite('test@mail.com').deliver_later
7
+ job = Sidejobs::Job.last
8
+ assert_equal 'mailers', job.queue
9
+ assert_equal 80, job.priority
10
+ assert_nil job.scheduled_at
11
+
12
+ ChargeSubscriptionsJob.perform_later
13
+ job = Sidejobs::Job.last
14
+ assert_equal 'high_priority', job.queue
15
+ assert_equal 60, job.priority
16
+ assert_nil job.scheduled_at
17
+
18
+ SendNewslettersJob.perform_later
19
+ job = Sidejobs::Job.last
20
+ assert_equal 'default', job.queue
21
+ assert_equal 40, job.priority
22
+ assert_nil job.scheduled_at
23
+
24
+ UpdateExchangesJob.perform_later
25
+ job = Sidejobs::Job.last
26
+ assert_equal 'low_priority', job.queue
27
+ assert_equal 20, job.priority
28
+ assert_nil job.scheduled_at
29
+
30
+ ClearGuestUsersJob.perform_later
31
+ job = Sidejobs::Job.last
32
+ assert_equal 'other', job.queue
33
+ assert_equal 0, job.priority
34
+ assert_nil job.scheduled_at
35
+
36
+ time = 10.hours.from_now
37
+
38
+ UserMailer.invite('test@mail.com').deliver_later wait_until: time
39
+ job = Sidejobs::Job.last
40
+ assert_equal 'mailers', job.queue
41
+ assert_equal 80, job.priority
42
+ assert_equal time.to_i, job.scheduled_at.to_i
43
+
44
+ ChargeSubscriptionsJob.set(wait_until: time).perform_later
45
+ job = Sidejobs::Job.last
46
+ assert_equal 'high_priority', job.queue
47
+ assert_equal 60, job.priority
48
+ assert_equal time.to_i, job.scheduled_at.to_i
49
+
50
+ SendNewslettersJob.set(wait_until: time).perform_later
51
+ job = Sidejobs::Job.last
52
+ assert_equal 'default', job.queue
53
+ assert_equal 40, job.priority
54
+ assert_equal time.to_i, job.scheduled_at.to_i
55
+
56
+ UpdateExchangesJob.set(wait_until: time).perform_later
57
+ job = Sidejobs::Job.last
58
+ assert_equal 'low_priority', job.queue
59
+ assert_equal 20, job.priority
60
+ assert_equal time.to_i, job.scheduled_at.to_i
61
+
62
+ ClearGuestUsersJob.set(wait_until: time).perform_later
63
+ job = Sidejobs::Job.last
64
+ assert_equal 'other', job.queue
65
+ assert_equal 0, job.priority
66
+ assert_equal time.to_i, job.scheduled_at.to_i
67
+ end
68
+
69
+ end
@@ -0,0 +1,14 @@
1
+ # Configure Rails Environment
2
+ ENV['RAILS_ENV'] = 'test'
3
+
4
+ require File.expand_path('../../test/dummy/config/environment.rb', __FILE__)
5
+ ActiveRecord::Migrator.migrations_paths = [File.expand_path('../../test/dummy/db/migrate', __FILE__)]
6
+ require 'rails/test_help'
7
+ require 'mocha/mini_test'
8
+
9
+ # Filter out Minitest backtrace while allowing backtrace from other libraries
10
+ # to be shown.
11
+ Minitest.backtrace_filter = Minitest::BacktraceFilter.new
12
+
13
+ # Load support files
14
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
metadata ADDED
@@ -0,0 +1,212 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sidejobs
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - mmontossi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-10-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 4.2.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: 4.3.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 4.2.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: 4.3.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: pg
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.18'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.18'
47
+ - !ruby/object:Gem::Dependency
48
+ name: mocha
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.1'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.1'
61
+ description: Versatile async database based jobs for rails.
62
+ email:
63
+ - mmontossi@buyin.io
64
+ executables: []
65
+ extensions: []
66
+ extra_rdoc_files: []
67
+ files:
68
+ - MIT-LICENSE
69
+ - README.md
70
+ - Rakefile
71
+ - lib/generators/sidejobs/install_generator.rb
72
+ - lib/generators/sidejobs/templates/configuration.rb
73
+ - lib/generators/sidejobs/templates/migration.rb
74
+ - lib/sidejobs.rb
75
+ - lib/sidejobs/configuration.rb
76
+ - lib/sidejobs/daemon.rb
77
+ - lib/sidejobs/extensions/active_job/queue_adapter.rb
78
+ - lib/sidejobs/job.rb
79
+ - lib/sidejobs/processor.rb
80
+ - lib/sidejobs/queue.rb
81
+ - lib/sidejobs/railtie.rb
82
+ - lib/sidejobs/version.rb
83
+ - lib/tasks/sidejobs.rake
84
+ - test/daemon_test.rb
85
+ - test/dummy/Rakefile
86
+ - test/dummy/app/assets/javascripts/application.js
87
+ - test/dummy/app/assets/stylesheets/application.css
88
+ - test/dummy/app/controllers/application_controller.rb
89
+ - test/dummy/app/helpers/application_helper.rb
90
+ - test/dummy/app/jobs/charge_subscriptions_job.rb
91
+ - test/dummy/app/jobs/clear_guest_users_job.rb
92
+ - test/dummy/app/jobs/send_newsletters_job.rb
93
+ - test/dummy/app/jobs/share_products_job.rb
94
+ - test/dummy/app/jobs/update_exchanges_job.rb
95
+ - test/dummy/app/mailers/user_mailer.rb
96
+ - test/dummy/app/views/layouts/application.html.erb
97
+ - test/dummy/app/views/user_mailer/invite.text.erb
98
+ - test/dummy/bin/bundle
99
+ - test/dummy/bin/rails
100
+ - test/dummy/bin/rake
101
+ - test/dummy/bin/setup
102
+ - test/dummy/config.ru
103
+ - test/dummy/config/application.rb
104
+ - test/dummy/config/boot.rb
105
+ - test/dummy/config/database.yml
106
+ - test/dummy/config/database.yml.travis
107
+ - test/dummy/config/environment.rb
108
+ - test/dummy/config/environments/development.rb
109
+ - test/dummy/config/environments/production.rb
110
+ - test/dummy/config/environments/test.rb
111
+ - test/dummy/config/initializers/assets.rb
112
+ - test/dummy/config/initializers/backtrace_silencers.rb
113
+ - test/dummy/config/initializers/cookies_serializer.rb
114
+ - test/dummy/config/initializers/filter_parameter_logging.rb
115
+ - test/dummy/config/initializers/inflections.rb
116
+ - test/dummy/config/initializers/mime_types.rb
117
+ - test/dummy/config/initializers/session_store.rb
118
+ - test/dummy/config/initializers/sidejobs.rb
119
+ - test/dummy/config/initializers/wrap_parameters.rb
120
+ - test/dummy/config/locales/en.yml
121
+ - test/dummy/config/routes.rb
122
+ - test/dummy/config/secrets.yml
123
+ - test/dummy/db/migrate/20161022211612_create_sidejobs.rb
124
+ - test/dummy/db/schema.rb
125
+ - test/dummy/log/development.log
126
+ - test/dummy/log/sidejobs.log
127
+ - test/dummy/log/test.log
128
+ - test/dummy/public/404.html
129
+ - test/dummy/public/422.html
130
+ - test/dummy/public/500.html
131
+ - test/dummy/public/favicon.ico
132
+ - test/generator_test.rb
133
+ - test/processor_test.rb
134
+ - test/queue_test.rb
135
+ - test/test_helper.rb
136
+ homepage: https://github.com/mmontossi/sidejobs
137
+ licenses:
138
+ - MIT
139
+ metadata: {}
140
+ post_install_message:
141
+ rdoc_options: []
142
+ require_paths:
143
+ - lib
144
+ required_ruby_version: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ version: 2.0.0
149
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ requirements: []
155
+ rubyforge_project:
156
+ rubygems_version: 2.5.1
157
+ signing_key:
158
+ specification_version: 4
159
+ summary: Async jobs for rails
160
+ test_files:
161
+ - test/daemon_test.rb
162
+ - test/dummy/app/assets/javascripts/application.js
163
+ - test/dummy/app/assets/stylesheets/application.css
164
+ - test/dummy/app/controllers/application_controller.rb
165
+ - test/dummy/app/helpers/application_helper.rb
166
+ - test/dummy/app/jobs/charge_subscriptions_job.rb
167
+ - test/dummy/app/jobs/clear_guest_users_job.rb
168
+ - test/dummy/app/jobs/send_newsletters_job.rb
169
+ - test/dummy/app/jobs/share_products_job.rb
170
+ - test/dummy/app/jobs/update_exchanges_job.rb
171
+ - test/dummy/app/mailers/user_mailer.rb
172
+ - test/dummy/app/views/layouts/application.html.erb
173
+ - test/dummy/app/views/user_mailer/invite.text.erb
174
+ - test/dummy/bin/bundle
175
+ - test/dummy/bin/rails
176
+ - test/dummy/bin/rake
177
+ - test/dummy/bin/setup
178
+ - test/dummy/config/application.rb
179
+ - test/dummy/config/boot.rb
180
+ - test/dummy/config/database.yml
181
+ - test/dummy/config/database.yml.travis
182
+ - test/dummy/config/environment.rb
183
+ - test/dummy/config/environments/development.rb
184
+ - test/dummy/config/environments/production.rb
185
+ - test/dummy/config/environments/test.rb
186
+ - test/dummy/config/initializers/assets.rb
187
+ - test/dummy/config/initializers/backtrace_silencers.rb
188
+ - test/dummy/config/initializers/cookies_serializer.rb
189
+ - test/dummy/config/initializers/filter_parameter_logging.rb
190
+ - test/dummy/config/initializers/inflections.rb
191
+ - test/dummy/config/initializers/mime_types.rb
192
+ - test/dummy/config/initializers/session_store.rb
193
+ - test/dummy/config/initializers/sidejobs.rb
194
+ - test/dummy/config/initializers/wrap_parameters.rb
195
+ - test/dummy/config/locales/en.yml
196
+ - test/dummy/config/routes.rb
197
+ - test/dummy/config/secrets.yml
198
+ - test/dummy/config.ru
199
+ - test/dummy/db/migrate/20161022211612_create_sidejobs.rb
200
+ - test/dummy/db/schema.rb
201
+ - test/dummy/log/development.log
202
+ - test/dummy/log/sidejobs.log
203
+ - test/dummy/log/test.log
204
+ - test/dummy/public/404.html
205
+ - test/dummy/public/422.html
206
+ - test/dummy/public/500.html
207
+ - test/dummy/public/favicon.ico
208
+ - test/dummy/Rakefile
209
+ - test/generator_test.rb
210
+ - test/processor_test.rb
211
+ - test/queue_test.rb
212
+ - test/test_helper.rb