threads_pad 0.1.7

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 (63) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +35 -0
  4. data/lib/generators/threads_pad/USAGE +8 -0
  5. data/lib/generators/threads_pad/templates/threads_pad_job_log_migration.rb +17 -0
  6. data/lib/generators/threads_pad/templates/threads_pad_job_migration.rb +17 -0
  7. data/lib/generators/threads_pad/threads_pad_generator.rb +9 -0
  8. data/lib/tasks/threads_pad_tasks.rake +4 -0
  9. data/lib/threads_pad/helper.rb +58 -0
  10. data/lib/threads_pad/job_reflection.rb +58 -0
  11. data/lib/threads_pad/job_reflection_log.rb +6 -0
  12. data/lib/threads_pad/save_adapter.rb +17 -0
  13. data/lib/threads_pad/version.rb +3 -0
  14. data/lib/threads_pad.rb +231 -0
  15. data/test/dummy/README.rdoc +28 -0
  16. data/test/dummy/Rakefile +6 -0
  17. data/test/dummy/app/assets/javascripts/application.js +13 -0
  18. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  19. data/test/dummy/app/controllers/application_controller.rb +5 -0
  20. data/test/dummy/app/helpers/application_helper.rb +2 -0
  21. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  22. data/test/dummy/bin/bundle +3 -0
  23. data/test/dummy/bin/rails +4 -0
  24. data/test/dummy/bin/rake +4 -0
  25. data/test/dummy/bin/setup +29 -0
  26. data/test/dummy/config/application.rb +26 -0
  27. data/test/dummy/config/boot.rb +5 -0
  28. data/test/dummy/config/database.yml +29 -0
  29. data/test/dummy/config/environment.rb +5 -0
  30. data/test/dummy/config/environments/development.rb +41 -0
  31. data/test/dummy/config/environments/production.rb +79 -0
  32. data/test/dummy/config/environments/test.rb +42 -0
  33. data/test/dummy/config/initializers/assets.rb +11 -0
  34. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  35. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  36. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  37. data/test/dummy/config/initializers/inflections.rb +16 -0
  38. data/test/dummy/config/initializers/mime_types.rb +4 -0
  39. data/test/dummy/config/initializers/session_store.rb +3 -0
  40. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  41. data/test/dummy/config/locales/en.yml +23 -0
  42. data/test/dummy/config/routes.rb +56 -0
  43. data/test/dummy/config/secrets.yml +22 -0
  44. data/test/dummy/config.ru +4 -0
  45. data/test/dummy/db/migrate/20160229125823_create_threads_pad_jobs.rb +17 -0
  46. data/test/dummy/db/migrate/20160229125824_create_threads_pad_job_logs.rb +17 -0
  47. data/test/dummy/db/schema.rb +45 -0
  48. data/test/dummy/lib/generators/threads_pad/USAGE +8 -0
  49. data/test/dummy/lib/generators/threads_pad/templates/threads_pad_job_log_migration.rb +16 -0
  50. data/test/dummy/lib/generators/threads_pad/templates/threads_pad_job_migration.rb +16 -0
  51. data/test/dummy/lib/generators/threads_pad/threads_pad_generator.rb +9 -0
  52. data/test/dummy/log/RAILS_ENV=test.log +0 -0
  53. data/test/dummy/log/development.log +1265 -0
  54. data/test/dummy/log/test.log +311010 -0
  55. data/test/dummy/public/404.html +67 -0
  56. data/test/dummy/public/422.html +67 -0
  57. data/test/dummy/public/500.html +66 -0
  58. data/test/dummy/public/favicon.ico +0 -0
  59. data/test/dummy/test/lib/generators/threads_pad_generator_test.rb +14 -0
  60. data/test/test_helper.rb +19 -0
  61. data/test/threads_pad_helper_test.rb +66 -0
  62. data/test/threads_pad_test.rb +191 -0
  63. metadata +167 -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,14 @@
1
+ require 'test_helper'
2
+ require 'generators/threads_pad/threads_pad_generator'
3
+
4
+ class ThreadsPadGeneratorTest < Rails::Generators::TestCase
5
+ tests ThreadsPadGenerator
6
+ destination Rails.root.join('tmp/generators')
7
+ setup :prepare_destination
8
+
9
+ # test "generator runs without errors" do
10
+ # assert_nothing_raised do
11
+ # run_generator ["arguments"]
12
+ # end
13
+ # end
14
+ end
@@ -0,0 +1,19 @@
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
+
8
+ # Filter out Minitest backtrace while allowing backtrace from other libraries
9
+ # to be shown.
10
+ Minitest.backtrace_filter = Minitest::BacktraceFilter.new
11
+
12
+ # Load support files
13
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
14
+
15
+ # Load fixtures from the engine
16
+ if ActiveSupport::TestCase.respond_to?(:fixture_path=)
17
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
18
+ ActiveSupport::TestCase.fixtures :all
19
+ end
@@ -0,0 +1,66 @@
1
+ require 'test_helper'
2
+
3
+ class ThreadsPadHelperTest < ActiveSupport::TestCase
4
+ attr_accessor :session
5
+ include ThreadsPad::Helper
6
+
7
+ def setup
8
+ ThreadsPad::JobReflectionLog.create({id: 1, group_id: 1, job_reflection_id: 1, level: 100, msg: "1-1" })
9
+ ThreadsPad::JobReflectionLog.create({id: 2, group_id: 1, job_reflection_id: 1, level: 100, msg: "1-2" })
10
+ ThreadsPad::JobReflectionLog.create({id: 3, group_id: 1, job_reflection_id: 1, level: 100, msg: "1-3" })
11
+ ThreadsPad::JobReflectionLog.create({id: 4, group_id: 1, job_reflection_id: 1, level: 100, msg: "1-4" })
12
+ ThreadsPad::JobReflectionLog.create({id: 5, group_id: 1, job_reflection_id: 1, level: 100, msg: "1-5" })
13
+ @session = {}
14
+
15
+ end
16
+
17
+ def teardown
18
+ end
19
+
20
+ test "truth" do
21
+ filter_job_logs nil
22
+ assert ThreadsPad::JobReflectionLog.count > 0
23
+ end
24
+
25
+ test 'filter_job_logs' do
26
+ list = ThreadsPad::JobReflectionLog.all[0], ThreadsPad::JobReflectionLog.all[1]
27
+
28
+ assert_equal 2, filter_job_logs(list).length
29
+ assert_equal 3, filter_job_logs(ThreadsPad::JobReflectionLog.all).count
30
+ assert_equal 0, filter_job_logs(ThreadsPad::JobReflectionLog.all).count
31
+
32
+
33
+ end
34
+ test 'filter_job_logs_diff_job_refl' do
35
+ l21 = ThreadsPad::JobReflectionLog.create({id: 6, group_id: 2, job_reflection_id: 2, level: 100, msg: "2-1" })
36
+ l22 = ThreadsPad::JobReflectionLog.create({id: 7, group_id: 2, job_reflection_id: 2, level: 100, msg: "2-2" })
37
+
38
+ l23 = ThreadsPad::JobReflectionLog.create({id: 8, group_id: 2, job_reflection_id: 2, level: 100, msg: "2-3" })
39
+
40
+ list2 = [l21, l22]
41
+ list = ThreadsPad::JobReflectionLog.all[0], ThreadsPad::JobReflectionLog.all[1]
42
+
43
+ assert_equal 2, filter_job_logs(list2).length
44
+ assert_equal 2, filter_job_logs(list).length
45
+ list2 << l23
46
+ assert_equal 1, filter_job_logs(list2).count
47
+ assert_equal 3, filter_job_logs(ThreadsPad::JobReflectionLog.all).count
48
+ assert_equal 0, filter_job_logs(ThreadsPad::JobReflectionLog.all).count
49
+
50
+
51
+ end
52
+ test 'symbolization' do
53
+ assert_equal 1, filter_job_logs(["job_reflection_id": 3, 'id': 1, group_id: 1]).length
54
+ assert_equal 1, filter_job_logs([{job_reflection_id: 3, 'id': 1, group_id: 1}, {"job_reflection_id": 3, 'id': 2, group_id: 1}]).length
55
+ assert_equal 0, filter_job_logs([{'job_reflection_id': 3, 'id': 1, group_id: 1}, {job_reflection_id: 3, 'id': 2, group_id: 1}]).length
56
+ puts session.inspect
57
+
58
+ end
59
+ test 'general log' do
60
+ assert_equal 5, filter_job_logs(ThreadsPad::JobReflectionLog.all).count
61
+ ThreadsPad::JobReflectionLog.create({id: 6, group_id: 1, job_reflection_id: nil, level: 100, msg: "1-0" })
62
+ assert_equal 1, filter_job_logs(ThreadsPad::JobReflectionLog.all).count
63
+ ThreadsPad::Pad.destroy_all
64
+ assert_equal 0, (ThreadsPad::JobReflectionLog.all).count
65
+ end
66
+ end
@@ -0,0 +1,191 @@
1
+ require 'test_helper'
2
+
3
+ class TestWork < ThreadsPad::Job
4
+ def initialize start, count, use_logs=false
5
+ @start = start
6
+ @count = count
7
+ @use_logs = use_logs
8
+ end
9
+
10
+ def work
11
+ #puts "started worker"
12
+ sum= @start
13
+ self.max = @count
14
+ @count.times do
15
+ sum += 1
16
+ self.current+=1
17
+ debug "current #{self.current}" if @use_logs
18
+ if terminated?
19
+ puts "terminated"
20
+ break
21
+ end
22
+ end
23
+ return sum
24
+ end
25
+ end
26
+
27
+ class ThreadsPadTest < ActiveSupport::TestCase
28
+ self.use_transactional_fixtures = false
29
+ def setup
30
+
31
+ ThreadsPad::JobReflection.destroy_all
32
+ ThreadsPad::JobReflectionLog.destroy_all
33
+ #puts "JR count =#{ThreadsPad::JobReflection.count}"
34
+ end
35
+ def teardown
36
+
37
+ #puts "start teardown"
38
+ ThreadsPad::Pad.terminate
39
+ ThreadsPad::Pad.destroy_all
40
+ ThreadsPad::Pad.wait_all
41
+ #ThreadsPad::JobReflectionLog.destroy_all
42
+ #puts "finish teardown"
43
+ end
44
+
45
+ test "truth" do
46
+ assert_kind_of Module, ThreadsPad
47
+ end
48
+ test "workflow" do
49
+ # skip
50
+ ThreadsPad::Pad<< TestWork.new(0, 5)
51
+ assert_equal 1, ThreadsPad::JobReflection.all.count
52
+ ThreadsPad::Pad.wait
53
+
54
+ assert_equal 5, ThreadsPad::JobReflection.all[0].result.to_i
55
+ end
56
+ test "parallelism" do
57
+ # skip
58
+ pad = ThreadsPad::Pad.new
59
+ pad << TestWork.new(0, 5)
60
+ pad << TestWork.new(5, 5)
61
+ pad << TestWork.new(10, 5)
62
+ id = pad.start
63
+
64
+ assert id != nil
65
+ end
66
+ test "parallelism2" do
67
+ # skip
68
+ count = 5000
69
+ pad = ThreadsPad::Pad.new
70
+ pad << TestWork.new(0, count)
71
+ pad << TestWork.new(5, count)
72
+ pad << TestWork.new(10, count)
73
+ id = pad.start
74
+ sleep 0.1
75
+ new_pad = ThreadsPad::Pad.new id
76
+ assert new_pad.current > 0.0
77
+ new_pad.wait
78
+ assert_equal 100, new_pad.current, ThreadsPad::JobReflection.all.inspect
79
+ assert_equal true, new_pad.done?
80
+ end
81
+ test "destroy_all" do
82
+ # skip
83
+ pad = ThreadsPad::Pad.new
84
+ pad << TestWork.new(0, 100)
85
+ pad.wait
86
+ assert_equal 1, ThreadsPad::JobReflection.all.count
87
+ pad.destroy_all
88
+ assert_equal 0, ThreadsPad::JobReflection.all.count
89
+ ThreadsPad::Pad << TestWork.new(0, 5000)
90
+ assert_equal 1, ThreadsPad::JobReflection.all.count
91
+ sleep 0.5
92
+ ThreadsPad::Pad.wait
93
+ ThreadsPad::Pad.destroy_all
94
+ assert_equal 0, ThreadsPad::JobReflection.all.count, ThreadsPad::JobReflection.all.inspect
95
+ end
96
+ test "delete on finish" do
97
+ # skip
98
+ pad = ThreadsPad::Pad.new destroy_on_finish: true
99
+ pad << TestWork.new(0, 100)
100
+ pad.start
101
+ pad.wait
102
+ sleep 1
103
+ assert_equal 0, ThreadsPad::JobReflection.all.reload.count
104
+ end
105
+ test "no job for id" do
106
+ # skip
107
+ pad = ThreadsPad::Pad.new 123
108
+ assert_equal true, pad.empty?
109
+ end
110
+ test "terminated" do
111
+ # skip
112
+ pad = ThreadsPad::Pad.new destroy_on_finish: true
113
+ pad << TestWork.new(0, 9999999)
114
+ pad.start
115
+ sleep 0.5
116
+ pad.terminate
117
+ pad.wait
118
+ assert_equal 0, ThreadsPad::JobReflection.all.reload.count
119
+ end
120
+ test "logs" do
121
+ # skip
122
+ assert ThreadsPad::JobReflection.all.reload.count == 0
123
+ assert ThreadsPad::JobReflectionLog.all.reload.count == 0
124
+ ThreadsPad::Pad << TestWork.new(0, 100, true)
125
+ ThreadsPad::Pad.wait
126
+ assert ThreadsPad::JobReflection.all.reload.count > 0
127
+ assert ThreadsPad::JobReflectionLog.all.reload.count > 0
128
+ ThreadsPad::Pad.destroy_all
129
+ assert ThreadsPad::JobReflection.all.reload.count == 0, ThreadsPad::JobReflection.all.reload.inspect
130
+ assert ThreadsPad::JobReflectionLog.all.reload.count == 0
131
+ end
132
+ test "logs2" do
133
+ # skip
134
+ pad = ThreadsPad::Pad.new
135
+ pad << TestWork.new(0, 100, true)
136
+ pad.start
137
+ pad.wait
138
+ assert pad.logs.count > 0, ThreadsPad::JobReflectionLog.all
139
+ assert pad.logs.first.created_at != nil
140
+ end
141
+ test "sequence" do
142
+ # skip
143
+ pad = ThreadsPad::Pad.new
144
+ pad << TestWork.new(0, 100000)
145
+ grp_id =pad.start
146
+ pad2 = ThreadsPad::Pad.new
147
+ pad2 << TestWork.new(0, 100)
148
+ assert_not_equal grp_id, pad2.start
149
+ end
150
+ test 'destroy if thread is not alive' do
151
+ # skip
152
+ assert_equal 0, ThreadsPad::JobReflection.all.reload.count
153
+ j = ThreadsPad::JobReflection.new nil
154
+ j.started = true
155
+ j.save
156
+ ThreadsPad::Pad.destroy_all
157
+ assert_equal 0, ThreadsPad::JobReflection.all.reload.count
158
+ end
159
+ test 'done' do
160
+ assert_equal 0, ThreadsPad::JobReflection.all.reload.count
161
+ assert ThreadsPad::Pad.done?
162
+ end
163
+ test 'empty' do
164
+ assert_equal 0, ThreadsPad::JobReflection.all.reload.count
165
+ assert ThreadsPad::Pad.empty?
166
+ end
167
+ test 'logs3' do
168
+ pad = ThreadsPad::Pad.new
169
+ pad.start
170
+ pad.log 'test'
171
+ assert_equal 1, pad.logs.count
172
+ end
173
+ test 'log4' do
174
+ ThreadsPad::JobReflectionLog.create({id: 1, group_id: 1, job_reflection_id: 1, level: 100, msg: "1-1" })
175
+ pad = ThreadsPad::Pad.new 1
176
+ assert_equal 1, pad.logs.count
177
+ end
178
+ test 'start with old jr' do
179
+ jr = ThreadsPad::JobReflection.new nil
180
+ jr.id = 1
181
+ jr.done = true
182
+ jr.started = true
183
+ jr.group_id = 1
184
+ jr.save!
185
+ pad = ThreadsPad::Pad.new 1
186
+ assert !pad.empty?
187
+ pad << TestWork.new(0, 1)
188
+ pad.start
189
+ assert_equal 1, ThreadsPad::JobReflection.all.reload.count
190
+ end
191
+ end
metadata ADDED
@@ -0,0 +1,167 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: threads_pad
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.7
5
+ platform: ruby
6
+ authors:
7
+ - Max Nedelchev
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-03-11 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.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 4.2.1
27
+ description: A helpful tool for paralleling and asynchronous processing for Rails
28
+ email:
29
+ - max@snakelab.cc
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - MIT-LICENSE
35
+ - Rakefile
36
+ - lib/generators/threads_pad/USAGE
37
+ - lib/generators/threads_pad/templates/threads_pad_job_log_migration.rb
38
+ - lib/generators/threads_pad/templates/threads_pad_job_migration.rb
39
+ - lib/generators/threads_pad/threads_pad_generator.rb
40
+ - lib/tasks/threads_pad_tasks.rake
41
+ - lib/threads_pad.rb
42
+ - lib/threads_pad/helper.rb
43
+ - lib/threads_pad/job_reflection.rb
44
+ - lib/threads_pad/job_reflection_log.rb
45
+ - lib/threads_pad/save_adapter.rb
46
+ - lib/threads_pad/version.rb
47
+ - test/dummy/README.rdoc
48
+ - test/dummy/Rakefile
49
+ - test/dummy/app/assets/javascripts/application.js
50
+ - test/dummy/app/assets/stylesheets/application.css
51
+ - test/dummy/app/controllers/application_controller.rb
52
+ - test/dummy/app/helpers/application_helper.rb
53
+ - test/dummy/app/views/layouts/application.html.erb
54
+ - test/dummy/bin/bundle
55
+ - test/dummy/bin/rails
56
+ - test/dummy/bin/rake
57
+ - test/dummy/bin/setup
58
+ - test/dummy/config.ru
59
+ - test/dummy/config/application.rb
60
+ - test/dummy/config/boot.rb
61
+ - test/dummy/config/database.yml
62
+ - test/dummy/config/environment.rb
63
+ - test/dummy/config/environments/development.rb
64
+ - test/dummy/config/environments/production.rb
65
+ - test/dummy/config/environments/test.rb
66
+ - test/dummy/config/initializers/assets.rb
67
+ - test/dummy/config/initializers/backtrace_silencers.rb
68
+ - test/dummy/config/initializers/cookies_serializer.rb
69
+ - test/dummy/config/initializers/filter_parameter_logging.rb
70
+ - test/dummy/config/initializers/inflections.rb
71
+ - test/dummy/config/initializers/mime_types.rb
72
+ - test/dummy/config/initializers/session_store.rb
73
+ - test/dummy/config/initializers/wrap_parameters.rb
74
+ - test/dummy/config/locales/en.yml
75
+ - test/dummy/config/routes.rb
76
+ - test/dummy/config/secrets.yml
77
+ - test/dummy/db/migrate/20160229125823_create_threads_pad_jobs.rb
78
+ - test/dummy/db/migrate/20160229125824_create_threads_pad_job_logs.rb
79
+ - test/dummy/db/schema.rb
80
+ - test/dummy/lib/generators/threads_pad/USAGE
81
+ - test/dummy/lib/generators/threads_pad/templates/threads_pad_job_log_migration.rb
82
+ - test/dummy/lib/generators/threads_pad/templates/threads_pad_job_migration.rb
83
+ - test/dummy/lib/generators/threads_pad/threads_pad_generator.rb
84
+ - test/dummy/log/RAILS_ENV=test.log
85
+ - test/dummy/log/development.log
86
+ - test/dummy/log/test.log
87
+ - test/dummy/public/404.html
88
+ - test/dummy/public/422.html
89
+ - test/dummy/public/500.html
90
+ - test/dummy/public/favicon.ico
91
+ - test/dummy/test/lib/generators/threads_pad_generator_test.rb
92
+ - test/test_helper.rb
93
+ - test/threads_pad_helper_test.rb
94
+ - test/threads_pad_test.rb
95
+ homepage: https://github.com/ssnake/threads_pad
96
+ licenses:
97
+ - MIT
98
+ metadata: {}
99
+ post_install_message:
100
+ rdoc_options: []
101
+ require_paths:
102
+ - lib
103
+ required_ruby_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ required_rubygems_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ requirements: []
114
+ rubyforge_project:
115
+ rubygems_version: 2.4.5
116
+ signing_key:
117
+ specification_version: 4
118
+ summary: A helpful tool for paralleling and asynchronous processing for Rails
119
+ test_files:
120
+ - test/dummy/app/assets/javascripts/application.js
121
+ - test/dummy/app/assets/stylesheets/application.css
122
+ - test/dummy/app/controllers/application_controller.rb
123
+ - test/dummy/app/helpers/application_helper.rb
124
+ - test/dummy/app/views/layouts/application.html.erb
125
+ - test/dummy/bin/bundle
126
+ - test/dummy/bin/rails
127
+ - test/dummy/bin/rake
128
+ - test/dummy/bin/setup
129
+ - test/dummy/config/application.rb
130
+ - test/dummy/config/boot.rb
131
+ - test/dummy/config/database.yml
132
+ - test/dummy/config/environment.rb
133
+ - test/dummy/config/environments/development.rb
134
+ - test/dummy/config/environments/production.rb
135
+ - test/dummy/config/environments/test.rb
136
+ - test/dummy/config/initializers/assets.rb
137
+ - test/dummy/config/initializers/backtrace_silencers.rb
138
+ - test/dummy/config/initializers/cookies_serializer.rb
139
+ - test/dummy/config/initializers/filter_parameter_logging.rb
140
+ - test/dummy/config/initializers/inflections.rb
141
+ - test/dummy/config/initializers/mime_types.rb
142
+ - test/dummy/config/initializers/session_store.rb
143
+ - test/dummy/config/initializers/wrap_parameters.rb
144
+ - test/dummy/config/locales/en.yml
145
+ - test/dummy/config/routes.rb
146
+ - test/dummy/config/secrets.yml
147
+ - test/dummy/config.ru
148
+ - test/dummy/db/migrate/20160229125823_create_threads_pad_jobs.rb
149
+ - test/dummy/db/migrate/20160229125824_create_threads_pad_job_logs.rb
150
+ - test/dummy/db/schema.rb
151
+ - test/dummy/lib/generators/threads_pad/templates/threads_pad_job_log_migration.rb
152
+ - test/dummy/lib/generators/threads_pad/templates/threads_pad_job_migration.rb
153
+ - test/dummy/lib/generators/threads_pad/threads_pad_generator.rb
154
+ - test/dummy/lib/generators/threads_pad/USAGE
155
+ - test/dummy/log/development.log
156
+ - test/dummy/log/RAILS_ENV=test.log
157
+ - test/dummy/log/test.log
158
+ - test/dummy/public/404.html
159
+ - test/dummy/public/422.html
160
+ - test/dummy/public/500.html
161
+ - test/dummy/public/favicon.ico
162
+ - test/dummy/Rakefile
163
+ - test/dummy/README.rdoc
164
+ - test/dummy/test/lib/generators/threads_pad_generator_test.rb
165
+ - test/test_helper.rb
166
+ - test/threads_pad_helper_test.rb
167
+ - test/threads_pad_test.rb