file_upload 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 (145) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +34 -0
  4. data/app/assets/javascripts/file_upload/application.js +13 -0
  5. data/app/assets/javascripts/file_upload.js.erb +148 -0
  6. data/app/assets/stylesheets/file_upload/application.css +13 -0
  7. data/app/assets/stylesheets/file_upload.css +3 -0
  8. data/app/controllers/file_upload/application_controller.rb +4 -0
  9. data/app/controllers/file_upload/redis_files_controller.rb +54 -0
  10. data/app/helpers/file_upload/application_helper.rb +4 -0
  11. data/app/helpers/file_upload/tag_helper.rb +25 -0
  12. data/app/models/file_upload/builder_mixin.rb +13 -0
  13. data/app/models/file_upload/redis_file.rb +159 -0
  14. data/app/models/file_upload/redis_file_readable.rb +21 -0
  15. data/app/models/file_upload/temp_file.rb +17 -0
  16. data/app/views/file_upload/redis_files/index.html.erb +1 -0
  17. data/app/views/file_upload/redis_files/new.html.erb +9 -0
  18. data/app/views/file_upload/redis_files/show.html.erb +15 -0
  19. data/app/views/file_upload/tags/_multiple.html.erb +44 -0
  20. data/app/views/file_upload/tags/_single.html.erb +46 -0
  21. data/app/views/layouts/file_upload/application.html.erb +14 -0
  22. data/config/routes.rb +6 -0
  23. data/lib/file_upload/engine.rb +40 -0
  24. data/lib/file_upload/version.rb +3 -0
  25. data/lib/file_upload.rb +7 -0
  26. data/lib/tasks/file_upload_tasks.rake +4 -0
  27. data/test/dummy/README.rdoc +28 -0
  28. data/test/dummy/Rakefile +6 -0
  29. data/test/dummy/app/assets/javascripts/application.js +15 -0
  30. data/test/dummy/app/assets/javascripts/jquery-1.10.2.min.js +6 -0
  31. data/test/dummy/app/assets/javascripts/jquery-ui.js +15003 -0
  32. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  33. data/test/dummy/app/controllers/application_controller.rb +5 -0
  34. data/test/dummy/app/controllers/db_files_controller.rb +8 -0
  35. data/test/dummy/app/controllers/emails_controller.rb +43 -0
  36. data/test/dummy/app/controllers/users_controller.rb +42 -0
  37. data/test/dummy/app/helpers/application_helper.rb +2 -0
  38. data/test/dummy/app/models/db_file.rb +13 -0
  39. data/test/dummy/app/models/email.rb +10 -0
  40. data/test/dummy/app/models/user.rb +9 -0
  41. data/test/dummy/app/views/db_files/_db_file.html.erb +1 -0
  42. data/test/dummy/app/views/emails/_email.html.erb +3 -0
  43. data/test/dummy/app/views/emails/_form.html.erb +24 -0
  44. data/test/dummy/app/views/emails/edit.html.erb +3 -0
  45. data/test/dummy/app/views/emails/index.html.erb +5 -0
  46. data/test/dummy/app/views/emails/new.html.erb +3 -0
  47. data/test/dummy/app/views/emails/show.html.erb +14 -0
  48. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  49. data/test/dummy/app/views/users/_form.html.erb +20 -0
  50. data/test/dummy/app/views/users/_user.html.erb +1 -0
  51. data/test/dummy/app/views/users/edit.html.erb +3 -0
  52. data/test/dummy/app/views/users/index.html.erb +5 -0
  53. data/test/dummy/app/views/users/new.html.erb +3 -0
  54. data/test/dummy/app/views/users/show.html.erb +8 -0
  55. data/test/dummy/bin/bundle +3 -0
  56. data/test/dummy/bin/rails +4 -0
  57. data/test/dummy/bin/rake +4 -0
  58. data/test/dummy/config/application.rb +28 -0
  59. data/test/dummy/config/boot.rb +5 -0
  60. data/test/dummy/config/database.yml +31 -0
  61. data/test/dummy/config/environment.rb +5 -0
  62. data/test/dummy/config/environments/development.rb +29 -0
  63. data/test/dummy/config/environments/production.rb +80 -0
  64. data/test/dummy/config/environments/test.rb +36 -0
  65. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  66. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  67. data/test/dummy/config/initializers/inflections.rb +16 -0
  68. data/test/dummy/config/initializers/mime_types.rb +5 -0
  69. data/test/dummy/config/initializers/secret_token.rb +12 -0
  70. data/test/dummy/config/initializers/session_store.rb +3 -0
  71. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  72. data/test/dummy/config/locales/en.yml +23 -0
  73. data/test/dummy/config/routes.rb +7 -0
  74. data/test/dummy/config.ru +4 -0
  75. data/test/dummy/db/development.sqlite3 +0 -0
  76. data/test/dummy/db/migrate/20130820025256_add_users.rb +21 -0
  77. data/test/dummy/db/schema.rb +34 -0
  78. data/test/dummy/log/development.log +15541 -0
  79. data/test/dummy/log/test.log +26004 -0
  80. data/test/dummy/public/404.html +58 -0
  81. data/test/dummy/public/422.html +58 -0
  82. data/test/dummy/public/500.html +57 -0
  83. data/test/dummy/public/favicon.ico +0 -0
  84. data/test/dummy/tmp/cache/assets/development/sprockets/1027254ad9f9317017cee3f9f844a862 +0 -0
  85. data/test/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  86. data/test/dummy/tmp/cache/assets/development/sprockets/21e0ff88cf13ca60a86a9b629cdca847 +0 -0
  87. data/test/dummy/tmp/cache/assets/development/sprockets/24cf35cebd10e0755a5585f9e486aa35 +0 -0
  88. data/test/dummy/tmp/cache/assets/development/sprockets/27413a86db5db5977d5dd1d87c724907 +0 -0
  89. data/test/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  90. data/test/dummy/tmp/cache/assets/development/sprockets/2f5c6d9c2c3107f94ad59710d3b31f75 +0 -0
  91. data/test/dummy/tmp/cache/assets/development/sprockets/3131541e8089635bc8595e2da83d1d81 +0 -0
  92. data/test/dummy/tmp/cache/assets/development/sprockets/32f1d616324cf52e9876bb83b9b0841a +0 -0
  93. data/test/dummy/tmp/cache/assets/development/sprockets/33474263b3841cd98ef63cde45dc85b2 +0 -0
  94. data/test/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  95. data/test/dummy/tmp/cache/assets/development/sprockets/3fa0d13a4820d4aa56f86ed4af4b88fc +0 -0
  96. data/test/dummy/tmp/cache/assets/development/sprockets/4e07f6f4475a0dca9066eec990db088a +0 -0
  97. data/test/dummy/tmp/cache/assets/development/sprockets/5512d0b5788ce193fd26bfadccd21304 +0 -0
  98. data/test/dummy/tmp/cache/assets/development/sprockets/5d5ab91fa7d1eee7502e703747d4e933 +0 -0
  99. data/test/dummy/tmp/cache/assets/development/sprockets/6b7e97595c37161f619adfd2b7724ea2 +0 -0
  100. data/test/dummy/tmp/cache/assets/development/sprockets/87fa3cc4e2e49762d146f3d1709b3fb0 +0 -0
  101. data/test/dummy/tmp/cache/assets/development/sprockets/8806d06f37e08b22f9546e50ab98d671 +0 -0
  102. data/test/dummy/tmp/cache/assets/development/sprockets/8cdad172c92eaf76e1b71c84f58a192e +0 -0
  103. data/test/dummy/tmp/cache/assets/development/sprockets/91e53bdf30a2b8e78bf99ca794addf70 +0 -0
  104. data/test/dummy/tmp/cache/assets/development/sprockets/96e2b2964d1d31d997a1af35ad0afed2 +0 -0
  105. data/test/dummy/tmp/cache/assets/development/sprockets/ab5c07d7e81fb5d5cf7460715f22bef6 +0 -0
  106. data/test/dummy/tmp/cache/assets/development/sprockets/b94837629e2fb2ef40ea66348764a9a2 +0 -0
  107. data/test/dummy/tmp/cache/assets/development/sprockets/c360bf7b66d29ebdf71b5814574b5fed +0 -0
  108. data/test/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  109. data/test/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  110. data/test/dummy/tmp/cache/assets/development/sprockets/e046b0166566aeeb2da51f2bde543364 +0 -0
  111. data/test/dummy/tmp/cache/assets/development/sprockets/ec2d15616d5d09eb1693b761c72948ce +0 -0
  112. data/test/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  113. data/test/dummy/tmp/cache/assets/development/sprockets/fc0327db3eb7c687c31f2acf94871f86 +0 -0
  114. data/test/dummy/tmp/cache/assets/test/sprockets/1027254ad9f9317017cee3f9f844a862 +0 -0
  115. data/test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  116. data/test/dummy/tmp/cache/assets/test/sprockets/21e0ff88cf13ca60a86a9b629cdca847 +0 -0
  117. data/test/dummy/tmp/cache/assets/test/sprockets/24cf35cebd10e0755a5585f9e486aa35 +0 -0
  118. data/test/dummy/tmp/cache/assets/test/sprockets/27413a86db5db5977d5dd1d87c724907 +0 -0
  119. data/test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  120. data/test/dummy/tmp/cache/assets/test/sprockets/32f1d616324cf52e9876bb83b9b0841a +0 -0
  121. data/test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  122. data/test/dummy/tmp/cache/assets/test/sprockets/3fa0d13a4820d4aa56f86ed4af4b88fc +0 -0
  123. data/test/dummy/tmp/cache/assets/test/sprockets/5d5ab91fa7d1eee7502e703747d4e933 +0 -0
  124. data/test/dummy/tmp/cache/assets/test/sprockets/6b7e97595c37161f619adfd2b7724ea2 +0 -0
  125. data/test/dummy/tmp/cache/assets/test/sprockets/87fa3cc4e2e49762d146f3d1709b3fb0 +0 -0
  126. data/test/dummy/tmp/cache/assets/test/sprockets/8806d06f37e08b22f9546e50ab98d671 +0 -0
  127. data/test/dummy/tmp/cache/assets/test/sprockets/ab5c07d7e81fb5d5cf7460715f22bef6 +0 -0
  128. data/test/dummy/tmp/cache/assets/test/sprockets/b94837629e2fb2ef40ea66348764a9a2 +0 -0
  129. data/test/dummy/tmp/cache/assets/test/sprockets/c360bf7b66d29ebdf71b5814574b5fed +0 -0
  130. data/test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  131. data/test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  132. data/test/dummy/tmp/cache/assets/test/sprockets/e046b0166566aeeb2da51f2bde543364 +0 -0
  133. data/test/dummy/tmp/cache/assets/test/sprockets/ec2d15616d5d09eb1693b761c72948ce +0 -0
  134. data/test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  135. data/test/dummy/tmp/cache/assets/test/sprockets/fc0327db3eb7c687c31f2acf94871f86 +0 -0
  136. data/test/fixtures/avatar.jpeg +0 -0
  137. data/test/fixtures/test_upload.txt +1 -0
  138. data/test/integration/multiple_upload_test.rb +131 -0
  139. data/test/integration/single_upload_test.rb +157 -0
  140. data/test/test_helper.rb +60 -0
  141. data/test/unit/redis_file_readable_test.rb +30 -0
  142. data/test/unit/redis_file_test.rb +30 -0
  143. data/vendor/assets/javascripts/jquery.fileupload.js +1113 -0
  144. data/vendor/assets/javascripts/load-image.js +232 -0
  145. metadata +401 -0
@@ -0,0 +1,232 @@
1
+ /*
2
+ * JavaScript Load Image 1.2.3
3
+ * https://github.com/blueimp/JavaScript-Load-Image
4
+ *
5
+ * Copyright 2011, Sebastian Tschan
6
+ * https://blueimp.net
7
+ *
8
+ * iOS image scaling fixes based on
9
+ * https://github.com/stomita/ios-imagefile-megapixel
10
+ *
11
+ * Licensed under the MIT license:
12
+ * http://www.opensource.org/licenses/MIT
13
+ */
14
+
15
+ /*jslint nomen: true, bitwise: true */
16
+ /*global window, document, URL, webkitURL, Blob, File, FileReader, define */
17
+
18
+ (function ($) {
19
+ 'use strict';
20
+
21
+ // Loads an image for a given File object.
22
+ // Invokes the callback with an img or optional canvas
23
+ // element (if supported by the browser) as parameter:
24
+ var loadImage = function (file, callback, options) {
25
+ var img = document.createElement('img'),
26
+ url,
27
+ oUrl;
28
+ img.onerror = callback;
29
+ img.onload = function () {
30
+ if (oUrl && !(options && options.noRevoke)) {
31
+ loadImage.revokeObjectURL(oUrl);
32
+ }
33
+ callback(loadImage.scale(img, options));
34
+ };
35
+ if ((window.Blob && file instanceof Blob) ||
36
+ // Files are also Blob instances, but some browsers
37
+ // (Firefox 3.6) support the File API but not Blobs:
38
+ (window.File && file instanceof File)) {
39
+ url = oUrl = loadImage.createObjectURL(file);
40
+ // Store the file type for resize processing:
41
+ img._type = file.type;
42
+ } else {
43
+ url = file;
44
+ }
45
+ if (url) {
46
+ img.src = url;
47
+ return img;
48
+ }
49
+ return loadImage.readFile(file, function (e) {
50
+ var target = e.target;
51
+ if (target && target.result) {
52
+ img.src = target.result;
53
+ } else {
54
+ callback(e);
55
+ }
56
+ });
57
+ },
58
+ // The check for URL.revokeObjectURL fixes an issue with Opera 12,
59
+ // which provides URL.createObjectURL but doesn't properly implement it:
60
+ urlAPI = (window.createObjectURL && window) ||
61
+ (window.URL && URL.revokeObjectURL && URL) ||
62
+ (window.webkitURL && webkitURL);
63
+
64
+ // Detects subsampling in JPEG images:
65
+ loadImage.detectSubsampling = function (img) {
66
+ var iw = img.width,
67
+ ih = img.height,
68
+ canvas,
69
+ ctx;
70
+ if (iw * ih > 1024 * 1024) { // only consider mexapixel images
71
+ canvas = document.createElement('canvas');
72
+ canvas.width = canvas.height = 1;
73
+ ctx = canvas.getContext('2d');
74
+ ctx.drawImage(img, -iw + 1, 0);
75
+ // subsampled image becomes half smaller in rendering size.
76
+ // check alpha channel value to confirm image is covering edge pixel or not.
77
+ // if alpha value is 0 image is not covering, hence subsampled.
78
+ return ctx.getImageData(0, 0, 1, 1).data[3] === 0;
79
+ }
80
+ return false;
81
+ };
82
+
83
+ // Detects vertical squash in JPEG images:
84
+ loadImage.detectVerticalSquash = function (img, ih) {
85
+ var canvas = document.createElement('canvas'),
86
+ ctx = canvas.getContext('2d'),
87
+ data,
88
+ sy,
89
+ ey,
90
+ py,
91
+ alpha;
92
+ canvas.width = 1;
93
+ canvas.height = ih;
94
+ ctx.drawImage(img, 0, 0);
95
+ data = ctx.getImageData(0, 0, 1, ih).data;
96
+ // search image edge pixel position in case it is squashed vertically:
97
+ sy = 0;
98
+ ey = ih;
99
+ py = ih;
100
+ while (py > sy) {
101
+ alpha = data[(py - 1) * 4 + 3];
102
+ if (alpha === 0) {
103
+ ey = py;
104
+ } else {
105
+ sy = py;
106
+ }
107
+ py = (ey + sy) >> 1;
108
+ }
109
+ return py / ih;
110
+ };
111
+
112
+ // Renders image to canvas while working around iOS image scaling bugs:
113
+ // https://github.com/blueimp/JavaScript-Load-Image/issues/13
114
+ loadImage.renderImageToCanvas = function (img, canvas, width, height) {
115
+ var iw = img.width,
116
+ ih = img.height,
117
+ ctx = canvas.getContext('2d'),
118
+ vertSquashRatio,
119
+ d = 1024, // size of tiling canvas
120
+ tmpCanvas = document.createElement('canvas'),
121
+ tmpCtx,
122
+ sy,
123
+ sh,
124
+ sx,
125
+ sw;
126
+ ctx.save();
127
+ if (loadImage.detectSubsampling(img)) {
128
+ iw /= 2;
129
+ ih /= 2;
130
+ }
131
+ vertSquashRatio = loadImage.detectVerticalSquash(img, ih);
132
+ tmpCanvas.width = tmpCanvas.height = d;
133
+ tmpCtx = tmpCanvas.getContext('2d');
134
+ sy = 0;
135
+ while (sy < ih) {
136
+ sh = sy + d > ih ? ih - sy : d;
137
+ sx = 0;
138
+ while (sx < iw) {
139
+ sw = sx + d > iw ? iw - sx : d;
140
+ tmpCtx.clearRect(0, 0, d, d);
141
+ tmpCtx.drawImage(img, -sx, -sy);
142
+ ctx.drawImage(
143
+ tmpCanvas,
144
+ 0,
145
+ 0,
146
+ sw,
147
+ sh,
148
+ Math.floor(sx * width / iw),
149
+ Math.floor(sy * height / ih / vertSquashRatio),
150
+ Math.ceil(sw * width / iw),
151
+ Math.ceil(sh * height / ih / vertSquashRatio)
152
+ );
153
+ sx += d;
154
+ }
155
+ sy += d;
156
+ }
157
+ ctx.restore();
158
+ tmpCanvas = tmpCtx = null;
159
+ };
160
+
161
+ // Scales the given image (img or canvas HTML element)
162
+ // using the given options.
163
+ // Returns a canvas object if the browser supports canvas
164
+ // and the canvas option is true or a canvas object is passed
165
+ // as image, else the scaled image:
166
+ loadImage.scale = function (img, options) {
167
+ options = options || {};
168
+ var canvas = document.createElement('canvas'),
169
+ width = img.width,
170
+ height = img.height,
171
+ scale = Math.max(
172
+ (options.minWidth || width) / width,
173
+ (options.minHeight || height) / height
174
+ );
175
+ if (scale > 1) {
176
+ width = parseInt(width * scale, 10);
177
+ height = parseInt(height * scale, 10);
178
+ }
179
+ scale = Math.min(
180
+ (options.maxWidth || width) / width,
181
+ (options.maxHeight || height) / height
182
+ );
183
+ if (scale < 1) {
184
+ width = parseInt(width * scale, 10);
185
+ height = parseInt(height * scale, 10);
186
+ }
187
+ if (img.getContext || (options.canvas && canvas.getContext)) {
188
+ canvas.width = width;
189
+ canvas.height = height;
190
+ if (img._type === 'image/jpeg') {
191
+ loadImage
192
+ .renderImageToCanvas(img, canvas, width, height);
193
+ } else {
194
+ canvas.getContext('2d')
195
+ .drawImage(img, 0, 0, width, height);
196
+ }
197
+ return canvas;
198
+ }
199
+ img.width = width;
200
+ img.height = height;
201
+ return img;
202
+ };
203
+
204
+ loadImage.createObjectURL = function (file) {
205
+ return urlAPI ? urlAPI.createObjectURL(file) : false;
206
+ };
207
+
208
+ loadImage.revokeObjectURL = function (url) {
209
+ return urlAPI ? urlAPI.revokeObjectURL(url) : false;
210
+ };
211
+
212
+ // Loads a given File object via FileReader interface,
213
+ // invokes the callback with the event object (load or error).
214
+ // The result can be read via event.target.result:
215
+ loadImage.readFile = function (file, callback) {
216
+ if (window.FileReader && FileReader.prototype.readAsDataURL) {
217
+ var fileReader = new FileReader();
218
+ fileReader.onload = fileReader.onerror = callback;
219
+ fileReader.readAsDataURL(file);
220
+ return fileReader;
221
+ }
222
+ return false;
223
+ };
224
+
225
+ if (typeof define === 'function' && define.amd) {
226
+ define(function () {
227
+ return loadImage;
228
+ });
229
+ } else {
230
+ $.loadImage = loadImage;
231
+ }
232
+ }(this));
metadata ADDED
@@ -0,0 +1,401 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: file_upload
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jeff Ching
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ruby-filemagic
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 3.2.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 3.2.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: redis
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: mysql2
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: jquery-rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: capybara-webkit
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: connection_pool
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Handles uploading files and saving to S3
112
+ email:
113
+ - ching.jeff@gmail.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - app/assets/javascripts/file_upload/application.js
119
+ - app/assets/javascripts/file_upload.js.erb
120
+ - app/assets/stylesheets/file_upload/application.css
121
+ - app/assets/stylesheets/file_upload.css
122
+ - app/controllers/file_upload/application_controller.rb
123
+ - app/controllers/file_upload/redis_files_controller.rb
124
+ - app/helpers/file_upload/application_helper.rb
125
+ - app/helpers/file_upload/tag_helper.rb
126
+ - app/models/file_upload/builder_mixin.rb
127
+ - app/models/file_upload/redis_file.rb
128
+ - app/models/file_upload/redis_file_readable.rb
129
+ - app/models/file_upload/temp_file.rb
130
+ - app/views/file_upload/redis_files/index.html.erb
131
+ - app/views/file_upload/redis_files/new.html.erb
132
+ - app/views/file_upload/redis_files/show.html.erb
133
+ - app/views/file_upload/tags/_multiple.html.erb
134
+ - app/views/file_upload/tags/_single.html.erb
135
+ - app/views/layouts/file_upload/application.html.erb
136
+ - config/routes.rb
137
+ - lib/file_upload/engine.rb
138
+ - lib/file_upload/version.rb
139
+ - lib/file_upload.rb
140
+ - lib/tasks/file_upload_tasks.rake
141
+ - vendor/assets/javascripts/jquery.fileupload.js
142
+ - vendor/assets/javascripts/load-image.js
143
+ - MIT-LICENSE
144
+ - Rakefile
145
+ - test/dummy/app/assets/javascripts/application.js
146
+ - test/dummy/app/assets/javascripts/jquery-1.10.2.min.js
147
+ - test/dummy/app/assets/javascripts/jquery-ui.js
148
+ - test/dummy/app/assets/stylesheets/application.css
149
+ - test/dummy/app/controllers/application_controller.rb
150
+ - test/dummy/app/controllers/db_files_controller.rb
151
+ - test/dummy/app/controllers/emails_controller.rb
152
+ - test/dummy/app/controllers/users_controller.rb
153
+ - test/dummy/app/helpers/application_helper.rb
154
+ - test/dummy/app/models/db_file.rb
155
+ - test/dummy/app/models/email.rb
156
+ - test/dummy/app/models/user.rb
157
+ - test/dummy/app/views/db_files/_db_file.html.erb
158
+ - test/dummy/app/views/emails/_email.html.erb
159
+ - test/dummy/app/views/emails/_form.html.erb
160
+ - test/dummy/app/views/emails/edit.html.erb
161
+ - test/dummy/app/views/emails/index.html.erb
162
+ - test/dummy/app/views/emails/new.html.erb
163
+ - test/dummy/app/views/emails/show.html.erb
164
+ - test/dummy/app/views/layouts/application.html.erb
165
+ - test/dummy/app/views/users/_form.html.erb
166
+ - test/dummy/app/views/users/_user.html.erb
167
+ - test/dummy/app/views/users/edit.html.erb
168
+ - test/dummy/app/views/users/index.html.erb
169
+ - test/dummy/app/views/users/new.html.erb
170
+ - test/dummy/app/views/users/show.html.erb
171
+ - test/dummy/bin/bundle
172
+ - test/dummy/bin/rails
173
+ - test/dummy/bin/rake
174
+ - test/dummy/config/application.rb
175
+ - test/dummy/config/boot.rb
176
+ - test/dummy/config/database.yml
177
+ - test/dummy/config/environment.rb
178
+ - test/dummy/config/environments/development.rb
179
+ - test/dummy/config/environments/production.rb
180
+ - test/dummy/config/environments/test.rb
181
+ - test/dummy/config/initializers/backtrace_silencers.rb
182
+ - test/dummy/config/initializers/filter_parameter_logging.rb
183
+ - test/dummy/config/initializers/inflections.rb
184
+ - test/dummy/config/initializers/mime_types.rb
185
+ - test/dummy/config/initializers/secret_token.rb
186
+ - test/dummy/config/initializers/session_store.rb
187
+ - test/dummy/config/initializers/wrap_parameters.rb
188
+ - test/dummy/config/locales/en.yml
189
+ - test/dummy/config/routes.rb
190
+ - test/dummy/config.ru
191
+ - test/dummy/db/development.sqlite3
192
+ - test/dummy/db/migrate/20130820025256_add_users.rb
193
+ - test/dummy/db/schema.rb
194
+ - test/dummy/log/development.log
195
+ - test/dummy/log/test.log
196
+ - test/dummy/public/404.html
197
+ - test/dummy/public/422.html
198
+ - test/dummy/public/500.html
199
+ - test/dummy/public/favicon.ico
200
+ - test/dummy/Rakefile
201
+ - test/dummy/README.rdoc
202
+ - test/dummy/tmp/cache/assets/development/sprockets/1027254ad9f9317017cee3f9f844a862
203
+ - test/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705
204
+ - test/dummy/tmp/cache/assets/development/sprockets/21e0ff88cf13ca60a86a9b629cdca847
205
+ - test/dummy/tmp/cache/assets/development/sprockets/24cf35cebd10e0755a5585f9e486aa35
206
+ - test/dummy/tmp/cache/assets/development/sprockets/27413a86db5db5977d5dd1d87c724907
207
+ - test/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af
208
+ - test/dummy/tmp/cache/assets/development/sprockets/2f5c6d9c2c3107f94ad59710d3b31f75
209
+ - test/dummy/tmp/cache/assets/development/sprockets/3131541e8089635bc8595e2da83d1d81
210
+ - test/dummy/tmp/cache/assets/development/sprockets/32f1d616324cf52e9876bb83b9b0841a
211
+ - test/dummy/tmp/cache/assets/development/sprockets/33474263b3841cd98ef63cde45dc85b2
212
+ - test/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953
213
+ - test/dummy/tmp/cache/assets/development/sprockets/3fa0d13a4820d4aa56f86ed4af4b88fc
214
+ - test/dummy/tmp/cache/assets/development/sprockets/4e07f6f4475a0dca9066eec990db088a
215
+ - test/dummy/tmp/cache/assets/development/sprockets/5512d0b5788ce193fd26bfadccd21304
216
+ - test/dummy/tmp/cache/assets/development/sprockets/5d5ab91fa7d1eee7502e703747d4e933
217
+ - test/dummy/tmp/cache/assets/development/sprockets/6b7e97595c37161f619adfd2b7724ea2
218
+ - test/dummy/tmp/cache/assets/development/sprockets/87fa3cc4e2e49762d146f3d1709b3fb0
219
+ - test/dummy/tmp/cache/assets/development/sprockets/8806d06f37e08b22f9546e50ab98d671
220
+ - test/dummy/tmp/cache/assets/development/sprockets/8cdad172c92eaf76e1b71c84f58a192e
221
+ - test/dummy/tmp/cache/assets/development/sprockets/91e53bdf30a2b8e78bf99ca794addf70
222
+ - test/dummy/tmp/cache/assets/development/sprockets/96e2b2964d1d31d997a1af35ad0afed2
223
+ - test/dummy/tmp/cache/assets/development/sprockets/ab5c07d7e81fb5d5cf7460715f22bef6
224
+ - test/dummy/tmp/cache/assets/development/sprockets/b94837629e2fb2ef40ea66348764a9a2
225
+ - test/dummy/tmp/cache/assets/development/sprockets/c360bf7b66d29ebdf71b5814574b5fed
226
+ - test/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994
227
+ - test/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6
228
+ - test/dummy/tmp/cache/assets/development/sprockets/e046b0166566aeeb2da51f2bde543364
229
+ - test/dummy/tmp/cache/assets/development/sprockets/ec2d15616d5d09eb1693b761c72948ce
230
+ - test/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655
231
+ - test/dummy/tmp/cache/assets/development/sprockets/fc0327db3eb7c687c31f2acf94871f86
232
+ - test/dummy/tmp/cache/assets/test/sprockets/1027254ad9f9317017cee3f9f844a862
233
+ - test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705
234
+ - test/dummy/tmp/cache/assets/test/sprockets/21e0ff88cf13ca60a86a9b629cdca847
235
+ - test/dummy/tmp/cache/assets/test/sprockets/24cf35cebd10e0755a5585f9e486aa35
236
+ - test/dummy/tmp/cache/assets/test/sprockets/27413a86db5db5977d5dd1d87c724907
237
+ - test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af
238
+ - test/dummy/tmp/cache/assets/test/sprockets/32f1d616324cf52e9876bb83b9b0841a
239
+ - test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953
240
+ - test/dummy/tmp/cache/assets/test/sprockets/3fa0d13a4820d4aa56f86ed4af4b88fc
241
+ - test/dummy/tmp/cache/assets/test/sprockets/5d5ab91fa7d1eee7502e703747d4e933
242
+ - test/dummy/tmp/cache/assets/test/sprockets/6b7e97595c37161f619adfd2b7724ea2
243
+ - test/dummy/tmp/cache/assets/test/sprockets/87fa3cc4e2e49762d146f3d1709b3fb0
244
+ - test/dummy/tmp/cache/assets/test/sprockets/8806d06f37e08b22f9546e50ab98d671
245
+ - test/dummy/tmp/cache/assets/test/sprockets/ab5c07d7e81fb5d5cf7460715f22bef6
246
+ - test/dummy/tmp/cache/assets/test/sprockets/b94837629e2fb2ef40ea66348764a9a2
247
+ - test/dummy/tmp/cache/assets/test/sprockets/c360bf7b66d29ebdf71b5814574b5fed
248
+ - test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994
249
+ - test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6
250
+ - test/dummy/tmp/cache/assets/test/sprockets/e046b0166566aeeb2da51f2bde543364
251
+ - test/dummy/tmp/cache/assets/test/sprockets/ec2d15616d5d09eb1693b761c72948ce
252
+ - test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
253
+ - test/dummy/tmp/cache/assets/test/sprockets/fc0327db3eb7c687c31f2acf94871f86
254
+ - test/fixtures/avatar.jpeg
255
+ - test/fixtures/test_upload.txt
256
+ - test/integration/multiple_upload_test.rb
257
+ - test/integration/single_upload_test.rb
258
+ - test/test_helper.rb
259
+ - test/unit/redis_file_readable_test.rb
260
+ - test/unit/redis_file_test.rb
261
+ homepage: http://chingr.com
262
+ licenses:
263
+ - MIT
264
+ metadata: {}
265
+ post_install_message:
266
+ rdoc_options: []
267
+ require_paths:
268
+ - lib
269
+ required_ruby_version: !ruby/object:Gem::Requirement
270
+ requirements:
271
+ - - '>='
272
+ - !ruby/object:Gem::Version
273
+ version: '0'
274
+ required_rubygems_version: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - '>='
277
+ - !ruby/object:Gem::Version
278
+ version: '0'
279
+ requirements: []
280
+ rubyforge_project:
281
+ rubygems_version: 2.0.3
282
+ signing_key:
283
+ specification_version: 4
284
+ summary: Handles uploading files and saving to S3
285
+ test_files:
286
+ - test/dummy/app/assets/javascripts/application.js
287
+ - test/dummy/app/assets/javascripts/jquery-1.10.2.min.js
288
+ - test/dummy/app/assets/javascripts/jquery-ui.js
289
+ - test/dummy/app/assets/stylesheets/application.css
290
+ - test/dummy/app/controllers/application_controller.rb
291
+ - test/dummy/app/controllers/db_files_controller.rb
292
+ - test/dummy/app/controllers/emails_controller.rb
293
+ - test/dummy/app/controllers/users_controller.rb
294
+ - test/dummy/app/helpers/application_helper.rb
295
+ - test/dummy/app/models/db_file.rb
296
+ - test/dummy/app/models/email.rb
297
+ - test/dummy/app/models/user.rb
298
+ - test/dummy/app/views/db_files/_db_file.html.erb
299
+ - test/dummy/app/views/emails/_email.html.erb
300
+ - test/dummy/app/views/emails/_form.html.erb
301
+ - test/dummy/app/views/emails/edit.html.erb
302
+ - test/dummy/app/views/emails/index.html.erb
303
+ - test/dummy/app/views/emails/new.html.erb
304
+ - test/dummy/app/views/emails/show.html.erb
305
+ - test/dummy/app/views/layouts/application.html.erb
306
+ - test/dummy/app/views/users/_form.html.erb
307
+ - test/dummy/app/views/users/_user.html.erb
308
+ - test/dummy/app/views/users/edit.html.erb
309
+ - test/dummy/app/views/users/index.html.erb
310
+ - test/dummy/app/views/users/new.html.erb
311
+ - test/dummy/app/views/users/show.html.erb
312
+ - test/dummy/bin/bundle
313
+ - test/dummy/bin/rails
314
+ - test/dummy/bin/rake
315
+ - test/dummy/config/application.rb
316
+ - test/dummy/config/boot.rb
317
+ - test/dummy/config/database.yml
318
+ - test/dummy/config/environment.rb
319
+ - test/dummy/config/environments/development.rb
320
+ - test/dummy/config/environments/production.rb
321
+ - test/dummy/config/environments/test.rb
322
+ - test/dummy/config/initializers/backtrace_silencers.rb
323
+ - test/dummy/config/initializers/filter_parameter_logging.rb
324
+ - test/dummy/config/initializers/inflections.rb
325
+ - test/dummy/config/initializers/mime_types.rb
326
+ - test/dummy/config/initializers/secret_token.rb
327
+ - test/dummy/config/initializers/session_store.rb
328
+ - test/dummy/config/initializers/wrap_parameters.rb
329
+ - test/dummy/config/locales/en.yml
330
+ - test/dummy/config/routes.rb
331
+ - test/dummy/config.ru
332
+ - test/dummy/db/development.sqlite3
333
+ - test/dummy/db/migrate/20130820025256_add_users.rb
334
+ - test/dummy/db/schema.rb
335
+ - test/dummy/log/development.log
336
+ - test/dummy/log/test.log
337
+ - test/dummy/public/404.html
338
+ - test/dummy/public/422.html
339
+ - test/dummy/public/500.html
340
+ - test/dummy/public/favicon.ico
341
+ - test/dummy/Rakefile
342
+ - test/dummy/README.rdoc
343
+ - test/dummy/tmp/cache/assets/development/sprockets/1027254ad9f9317017cee3f9f844a862
344
+ - test/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705
345
+ - test/dummy/tmp/cache/assets/development/sprockets/21e0ff88cf13ca60a86a9b629cdca847
346
+ - test/dummy/tmp/cache/assets/development/sprockets/24cf35cebd10e0755a5585f9e486aa35
347
+ - test/dummy/tmp/cache/assets/development/sprockets/27413a86db5db5977d5dd1d87c724907
348
+ - test/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af
349
+ - test/dummy/tmp/cache/assets/development/sprockets/2f5c6d9c2c3107f94ad59710d3b31f75
350
+ - test/dummy/tmp/cache/assets/development/sprockets/3131541e8089635bc8595e2da83d1d81
351
+ - test/dummy/tmp/cache/assets/development/sprockets/32f1d616324cf52e9876bb83b9b0841a
352
+ - test/dummy/tmp/cache/assets/development/sprockets/33474263b3841cd98ef63cde45dc85b2
353
+ - test/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953
354
+ - test/dummy/tmp/cache/assets/development/sprockets/3fa0d13a4820d4aa56f86ed4af4b88fc
355
+ - test/dummy/tmp/cache/assets/development/sprockets/4e07f6f4475a0dca9066eec990db088a
356
+ - test/dummy/tmp/cache/assets/development/sprockets/5512d0b5788ce193fd26bfadccd21304
357
+ - test/dummy/tmp/cache/assets/development/sprockets/5d5ab91fa7d1eee7502e703747d4e933
358
+ - test/dummy/tmp/cache/assets/development/sprockets/6b7e97595c37161f619adfd2b7724ea2
359
+ - test/dummy/tmp/cache/assets/development/sprockets/87fa3cc4e2e49762d146f3d1709b3fb0
360
+ - test/dummy/tmp/cache/assets/development/sprockets/8806d06f37e08b22f9546e50ab98d671
361
+ - test/dummy/tmp/cache/assets/development/sprockets/8cdad172c92eaf76e1b71c84f58a192e
362
+ - test/dummy/tmp/cache/assets/development/sprockets/91e53bdf30a2b8e78bf99ca794addf70
363
+ - test/dummy/tmp/cache/assets/development/sprockets/96e2b2964d1d31d997a1af35ad0afed2
364
+ - test/dummy/tmp/cache/assets/development/sprockets/ab5c07d7e81fb5d5cf7460715f22bef6
365
+ - test/dummy/tmp/cache/assets/development/sprockets/b94837629e2fb2ef40ea66348764a9a2
366
+ - test/dummy/tmp/cache/assets/development/sprockets/c360bf7b66d29ebdf71b5814574b5fed
367
+ - test/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994
368
+ - test/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6
369
+ - test/dummy/tmp/cache/assets/development/sprockets/e046b0166566aeeb2da51f2bde543364
370
+ - test/dummy/tmp/cache/assets/development/sprockets/ec2d15616d5d09eb1693b761c72948ce
371
+ - test/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655
372
+ - test/dummy/tmp/cache/assets/development/sprockets/fc0327db3eb7c687c31f2acf94871f86
373
+ - test/dummy/tmp/cache/assets/test/sprockets/1027254ad9f9317017cee3f9f844a862
374
+ - test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705
375
+ - test/dummy/tmp/cache/assets/test/sprockets/21e0ff88cf13ca60a86a9b629cdca847
376
+ - test/dummy/tmp/cache/assets/test/sprockets/24cf35cebd10e0755a5585f9e486aa35
377
+ - test/dummy/tmp/cache/assets/test/sprockets/27413a86db5db5977d5dd1d87c724907
378
+ - test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af
379
+ - test/dummy/tmp/cache/assets/test/sprockets/32f1d616324cf52e9876bb83b9b0841a
380
+ - test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953
381
+ - test/dummy/tmp/cache/assets/test/sprockets/3fa0d13a4820d4aa56f86ed4af4b88fc
382
+ - test/dummy/tmp/cache/assets/test/sprockets/5d5ab91fa7d1eee7502e703747d4e933
383
+ - test/dummy/tmp/cache/assets/test/sprockets/6b7e97595c37161f619adfd2b7724ea2
384
+ - test/dummy/tmp/cache/assets/test/sprockets/87fa3cc4e2e49762d146f3d1709b3fb0
385
+ - test/dummy/tmp/cache/assets/test/sprockets/8806d06f37e08b22f9546e50ab98d671
386
+ - test/dummy/tmp/cache/assets/test/sprockets/ab5c07d7e81fb5d5cf7460715f22bef6
387
+ - test/dummy/tmp/cache/assets/test/sprockets/b94837629e2fb2ef40ea66348764a9a2
388
+ - test/dummy/tmp/cache/assets/test/sprockets/c360bf7b66d29ebdf71b5814574b5fed
389
+ - test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994
390
+ - test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6
391
+ - test/dummy/tmp/cache/assets/test/sprockets/e046b0166566aeeb2da51f2bde543364
392
+ - test/dummy/tmp/cache/assets/test/sprockets/ec2d15616d5d09eb1693b761c72948ce
393
+ - test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
394
+ - test/dummy/tmp/cache/assets/test/sprockets/fc0327db3eb7c687c31f2acf94871f86
395
+ - test/fixtures/avatar.jpeg
396
+ - test/fixtures/test_upload.txt
397
+ - test/integration/multiple_upload_test.rb
398
+ - test/integration/single_upload_test.rb
399
+ - test/test_helper.rb
400
+ - test/unit/redis_file_readable_test.rb
401
+ - test/unit/redis_file_test.rb