file_upload 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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