attached 0.5.2 → 0.5.3

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 (224) hide show
  1. data/LICENSE +1 -1
  2. data/README.rdoc +1 -1
  3. data/lib/attached.rb +82 -82
  4. data/lib/attached/attachment.rb +114 -114
  5. data/lib/attached/job.rb +6 -6
  6. data/lib/attached/processor.rb +9 -9
  7. data/lib/attached/processor/audio.rb +29 -29
  8. data/lib/attached/processor/base.rb +14 -14
  9. data/lib/attached/processor/image.rb +34 -34
  10. data/lib/attached/railtie.rb +2 -2
  11. data/lib/attached/storage.rb +8 -8
  12. data/lib/attached/storage/aws.rb +69 -69
  13. data/lib/attached/storage/base.rb +26 -26
  14. data/lib/attached/storage/google.rb +71 -71
  15. data/lib/attached/storage/local.rb +44 -44
  16. data/lib/attached/storage/rackspace.rb +68 -68
  17. data/lib/attached/version.rb +1 -1
  18. data/test/dummy/app/assets/javascripts/application.js +2 -1
  19. data/test/dummy/app/assets/javascripts/{audios.js → main.js.coffee} +0 -0
  20. data/test/dummy/app/assets/stylesheets/application.css +3 -10
  21. data/test/dummy/app/assets/stylesheets/main.css.scss +6 -0
  22. data/test/dummy/app/views/audios/_form.html.haml +17 -0
  23. data/test/dummy/app/views/audios/edit.html.haml +5 -0
  24. data/test/dummy/app/views/audios/index.html.haml +20 -0
  25. data/test/dummy/app/views/audios/new.html.haml +5 -0
  26. data/test/dummy/app/views/audios/show.html.haml +13 -0
  27. data/test/dummy/app/views/images/_form.html.haml +17 -0
  28. data/test/dummy/app/views/images/edit.html.haml +5 -0
  29. data/test/dummy/app/views/images/index.html.haml +20 -0
  30. data/test/dummy/app/views/images/new.html.haml +5 -0
  31. data/test/dummy/app/views/images/show.html.haml +13 -0
  32. data/test/dummy/app/views/layouts/application.html.haml +17 -0
  33. data/test/dummy/app/views/main/index.html.haml +8 -0
  34. data/test/dummy/app/views/shared/_error.html.haml +4 -0
  35. data/test/dummy/db/development.sqlite3 +0 -0
  36. data/test/dummy/db/test.sqlite3 +0 -0
  37. data/test/dummy/log/development.log +37 -0
  38. data/test/dummy/log/test.log +390 -1166
  39. data/test/dummy/public/system/audios/files/full/{07a3f586-805d-4c68-be01-7ba4d787aa9e.aac → 151d9dff-7259-41a3-9fc3-988a3099fe22.aac} +0 -0
  40. data/test/dummy/public/system/audios/files/full/{1a5d65b6-3d7f-45e3-8fc8-9221f3bca127.aac → 2b5e47b9-b441-4c49-a98f-5bf89f19848e.aac} +0 -0
  41. data/test/dummy/public/system/audios/files/full/{3729319f-299b-47e2-bd7e-d73d38b5cf8f.aac → 33203ced-129f-454c-870a-dc87a2809859.aac} +0 -0
  42. data/test/dummy/public/system/audios/files/full/{41e88b81-2804-4316-86e8-252adad0eaa3.aac → c03bdf7c-ce26-4a31-9c23-d947b2986fa7.aac} +0 -0
  43. data/test/dummy/public/system/audios/files/large/{07a3f586-805d-4c68-be01-7ba4d787aa9e.aac → 151d9dff-7259-41a3-9fc3-988a3099fe22.aac} +0 -0
  44. data/test/dummy/public/system/audios/files/large/{1a5d65b6-3d7f-45e3-8fc8-9221f3bca127.aac → 2b5e47b9-b441-4c49-a98f-5bf89f19848e.aac} +0 -0
  45. data/test/dummy/public/system/audios/files/large/{3729319f-299b-47e2-bd7e-d73d38b5cf8f.aac → 33203ced-129f-454c-870a-dc87a2809859.aac} +0 -0
  46. data/test/dummy/public/system/audios/files/large/{41e88b81-2804-4316-86e8-252adad0eaa3.aac → c03bdf7c-ce26-4a31-9c23-d947b2986fa7.aac} +0 -0
  47. data/test/dummy/public/system/audios/files/original/{07a3f586-805d-4c68-be01-7ba4d787aa9e.wav → 151d9dff-7259-41a3-9fc3-988a3099fe22.wav} +0 -0
  48. data/test/dummy/public/system/audios/files/original/{1a5d65b6-3d7f-45e3-8fc8-9221f3bca127.wav → 2b5e47b9-b441-4c49-a98f-5bf89f19848e.wav} +0 -0
  49. data/test/dummy/public/system/audios/files/original/{3729319f-299b-47e2-bd7e-d73d38b5cf8f.wav → 33203ced-129f-454c-870a-dc87a2809859.wav} +0 -0
  50. data/test/dummy/public/system/audios/files/original/{41e88b81-2804-4316-86e8-252adad0eaa3.wav → c03bdf7c-ce26-4a31-9c23-d947b2986fa7.wav} +0 -0
  51. data/test/dummy/public/system/audios/files/small/{07a3f586-805d-4c68-be01-7ba4d787aa9e.aac → 151d9dff-7259-41a3-9fc3-988a3099fe22.aac} +0 -0
  52. data/test/dummy/public/system/audios/files/small/{1a5d65b6-3d7f-45e3-8fc8-9221f3bca127.aac → 2b5e47b9-b441-4c49-a98f-5bf89f19848e.aac} +0 -0
  53. data/test/dummy/public/system/audios/files/small/{3729319f-299b-47e2-bd7e-d73d38b5cf8f.aac → 33203ced-129f-454c-870a-dc87a2809859.aac} +0 -0
  54. data/test/dummy/public/system/audios/files/small/{41e88b81-2804-4316-86e8-252adad0eaa3.aac → c03bdf7c-ce26-4a31-9c23-d947b2986fa7.aac} +0 -0
  55. data/test/dummy/public/system/images/files/full/15f09efb-0d03-44b3-a372-5ae156e8898e.jpg +0 -0
  56. data/test/dummy/public/system/images/files/full/7a1dbda7-f7f7-4b13-a7ae-be38c43f76a3.jpg +0 -0
  57. data/test/dummy/public/system/images/files/full/84b585ce-9430-4761-8fb1-d94302eb33bd.jpg +0 -0
  58. data/test/dummy/public/system/images/files/full/b8e19d15-db0f-42e7-9372-5f563486928a.jpg +0 -0
  59. data/test/dummy/public/system/images/files/full/baa48120-b3b9-4d2a-830a-e6ebc4db7802.jpg +0 -0
  60. data/test/dummy/public/system/images/files/full/caac47c3-f3c8-4ca9-a682-d79e8c1b5b29.jpg +0 -0
  61. data/test/dummy/public/system/images/files/large/15f09efb-0d03-44b3-a372-5ae156e8898e.jpg +0 -0
  62. data/test/dummy/public/system/images/files/large/7a1dbda7-f7f7-4b13-a7ae-be38c43f76a3.jpg +0 -0
  63. data/test/dummy/public/system/images/files/large/84b585ce-9430-4761-8fb1-d94302eb33bd.jpg +0 -0
  64. data/test/dummy/public/system/images/files/large/b8e19d15-db0f-42e7-9372-5f563486928a.jpg +0 -0
  65. data/test/dummy/public/system/images/files/large/baa48120-b3b9-4d2a-830a-e6ebc4db7802.jpg +0 -0
  66. data/test/dummy/public/system/images/files/large/caac47c3-f3c8-4ca9-a682-d79e8c1b5b29.jpg +0 -0
  67. data/test/dummy/public/system/images/files/original/{0850c86c-78a8-4319-8852-bed744b792e6.png → 15f09efb-0d03-44b3-a372-5ae156e8898e.png} +0 -0
  68. data/test/dummy/public/system/images/files/original/{12ace664-b553-45a6-b02b-37e15ac2981b.png → 7a1dbda7-f7f7-4b13-a7ae-be38c43f76a3.png} +0 -0
  69. data/test/dummy/public/system/images/files/original/{2ac8ebdb-bc96-49c4-befd-5c96b47646e5.png → 84b585ce-9430-4761-8fb1-d94302eb33bd.png} +0 -0
  70. data/test/dummy/public/system/images/files/original/{3e9c5921-4820-441d-9f90-90b518cd582e.png → b8e19d15-db0f-42e7-9372-5f563486928a.png} +0 -0
  71. data/test/dummy/public/system/images/files/original/{444d0123-908a-4616-83e3-88942a66a075.png → baa48120-b3b9-4d2a-830a-e6ebc4db7802.png} +0 -0
  72. data/test/dummy/public/system/images/files/original/{5af89da1-b1fa-421a-a52e-01607d89fb5d.png → caac47c3-f3c8-4ca9-a682-d79e8c1b5b29.png} +0 -0
  73. data/test/dummy/public/system/images/files/small/15f09efb-0d03-44b3-a372-5ae156e8898e.jpg +0 -0
  74. data/test/dummy/public/system/images/files/small/7a1dbda7-f7f7-4b13-a7ae-be38c43f76a3.jpg +0 -0
  75. data/test/dummy/public/system/images/files/small/84b585ce-9430-4761-8fb1-d94302eb33bd.jpg +0 -0
  76. data/test/dummy/public/system/images/files/small/b8e19d15-db0f-42e7-9372-5f563486928a.jpg +0 -0
  77. data/test/dummy/public/system/images/files/small/baa48120-b3b9-4d2a-830a-e6ebc4db7802.jpg +0 -0
  78. data/test/dummy/public/system/images/files/small/caac47c3-f3c8-4ca9-a682-d79e8c1b5b29.jpg +0 -0
  79. data/test/dummy/public/system/images/files/thumb/15f09efb-0d03-44b3-a372-5ae156e8898e.jpg +0 -0
  80. data/test/dummy/public/system/images/files/thumb/7a1dbda7-f7f7-4b13-a7ae-be38c43f76a3.jpg +0 -0
  81. data/test/dummy/public/system/images/files/thumb/84b585ce-9430-4761-8fb1-d94302eb33bd.jpg +0 -0
  82. data/test/dummy/public/system/images/files/thumb/b8e19d15-db0f-42e7-9372-5f563486928a.jpg +0 -0
  83. data/test/dummy/public/system/images/files/thumb/baa48120-b3b9-4d2a-830a-e6ebc4db7802.jpg +0 -0
  84. data/test/dummy/public/system/images/files/thumb/caac47c3-f3c8-4ca9-a682-d79e8c1b5b29.jpg +0 -0
  85. metadata +168 -337
  86. data/test/dummy/app/assets/javascripts/images.js +0 -0
  87. data/test/dummy/app/assets/javascripts/main.js +0 -0
  88. data/test/dummy/app/assets/stylesheets/audios.css +0 -0
  89. data/test/dummy/app/assets/stylesheets/images.css +0 -0
  90. data/test/dummy/app/assets/stylesheets/main.css +0 -0
  91. data/test/dummy/app/views/audios/_form.html.erb +0 -27
  92. data/test/dummy/app/views/audios/edit.html.erb +0 -3
  93. data/test/dummy/app/views/audios/index.html.erb +0 -17
  94. data/test/dummy/app/views/audios/new.html.erb +0 -3
  95. data/test/dummy/app/views/audios/show.html.erb +0 -17
  96. data/test/dummy/app/views/images/_form.html.erb +0 -27
  97. data/test/dummy/app/views/images/edit.html.erb +0 -3
  98. data/test/dummy/app/views/images/index.html.erb +0 -17
  99. data/test/dummy/app/views/images/new.html.erb +0 -3
  100. data/test/dummy/app/views/images/show.html.erb +0 -18
  101. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  102. data/test/dummy/app/views/main/index.html.erb +0 -6
  103. data/test/dummy/public/system/audios/files/full/5d262d6b-4789-42f9-b985-1c39c9eca0c0.aac +0 -0
  104. data/test/dummy/public/system/audios/files/full/67645888-cf0b-47db-8202-2df3a1ce594d.aac +0 -0
  105. data/test/dummy/public/system/audios/files/full/6cecb6b5-46cd-47a5-bf8a-10849e30f1f6.aac +0 -0
  106. data/test/dummy/public/system/audios/files/full/8d116bcb-2605-429e-9edc-b1a91fa66d0a.aac +0 -0
  107. data/test/dummy/public/system/audios/files/full/9b084b16-eb46-4730-ad80-c5d7d8ef92d2.aac +0 -0
  108. data/test/dummy/public/system/audios/files/full/9dddf071-ac43-4232-9a9d-fb5d26862bd1.aac +0 -0
  109. data/test/dummy/public/system/audios/files/full/a6880c5f-d130-469f-9c30-d8aa1b9f7b71.aac +0 -0
  110. data/test/dummy/public/system/audios/files/full/a79a531d-5de4-4aa3-9c04-275cf6307d13.aac +0 -0
  111. data/test/dummy/public/system/audios/files/full/c6768282-9787-45dc-a39f-37d23b83f8f2.aac +0 -0
  112. data/test/dummy/public/system/audios/files/full/e8389286-fda2-4614-906f-bd646383333a.aac +0 -0
  113. data/test/dummy/public/system/audios/files/full/ee0041b9-6482-4d4f-96cc-1a6e28c93570.aac +0 -0
  114. data/test/dummy/public/system/audios/files/full/ffb3df30-8dbf-4938-abde-21cdfced70d1.aac +0 -0
  115. data/test/dummy/public/system/audios/files/large/5d262d6b-4789-42f9-b985-1c39c9eca0c0.aac +0 -0
  116. data/test/dummy/public/system/audios/files/large/67645888-cf0b-47db-8202-2df3a1ce594d.aac +0 -0
  117. data/test/dummy/public/system/audios/files/large/6cecb6b5-46cd-47a5-bf8a-10849e30f1f6.aac +0 -0
  118. data/test/dummy/public/system/audios/files/large/8d116bcb-2605-429e-9edc-b1a91fa66d0a.aac +0 -0
  119. data/test/dummy/public/system/audios/files/large/9b084b16-eb46-4730-ad80-c5d7d8ef92d2.aac +0 -0
  120. data/test/dummy/public/system/audios/files/large/9dddf071-ac43-4232-9a9d-fb5d26862bd1.aac +0 -0
  121. data/test/dummy/public/system/audios/files/large/a6880c5f-d130-469f-9c30-d8aa1b9f7b71.aac +0 -0
  122. data/test/dummy/public/system/audios/files/large/a79a531d-5de4-4aa3-9c04-275cf6307d13.aac +0 -0
  123. data/test/dummy/public/system/audios/files/large/c6768282-9787-45dc-a39f-37d23b83f8f2.aac +0 -0
  124. data/test/dummy/public/system/audios/files/large/e8389286-fda2-4614-906f-bd646383333a.aac +0 -0
  125. data/test/dummy/public/system/audios/files/large/ee0041b9-6482-4d4f-96cc-1a6e28c93570.aac +0 -0
  126. data/test/dummy/public/system/audios/files/large/ffb3df30-8dbf-4938-abde-21cdfced70d1.aac +0 -0
  127. data/test/dummy/public/system/audios/files/original/5d262d6b-4789-42f9-b985-1c39c9eca0c0.wav +0 -0
  128. data/test/dummy/public/system/audios/files/original/67645888-cf0b-47db-8202-2df3a1ce594d.wav +0 -0
  129. data/test/dummy/public/system/audios/files/original/6cecb6b5-46cd-47a5-bf8a-10849e30f1f6.wav +0 -0
  130. data/test/dummy/public/system/audios/files/original/8d116bcb-2605-429e-9edc-b1a91fa66d0a.wav +0 -0
  131. data/test/dummy/public/system/audios/files/original/9b084b16-eb46-4730-ad80-c5d7d8ef92d2.wav +0 -0
  132. data/test/dummy/public/system/audios/files/original/9dddf071-ac43-4232-9a9d-fb5d26862bd1.wav +0 -0
  133. data/test/dummy/public/system/audios/files/original/a6880c5f-d130-469f-9c30-d8aa1b9f7b71.wav +0 -0
  134. data/test/dummy/public/system/audios/files/original/a79a531d-5de4-4aa3-9c04-275cf6307d13.wav +0 -0
  135. data/test/dummy/public/system/audios/files/original/c6768282-9787-45dc-a39f-37d23b83f8f2.wav +0 -0
  136. data/test/dummy/public/system/audios/files/original/e8389286-fda2-4614-906f-bd646383333a.wav +0 -0
  137. data/test/dummy/public/system/audios/files/original/ee0041b9-6482-4d4f-96cc-1a6e28c93570.wav +0 -0
  138. data/test/dummy/public/system/audios/files/original/ffb3df30-8dbf-4938-abde-21cdfced70d1.wav +0 -0
  139. data/test/dummy/public/system/audios/files/small/5d262d6b-4789-42f9-b985-1c39c9eca0c0.aac +0 -0
  140. data/test/dummy/public/system/audios/files/small/67645888-cf0b-47db-8202-2df3a1ce594d.aac +0 -0
  141. data/test/dummy/public/system/audios/files/small/6cecb6b5-46cd-47a5-bf8a-10849e30f1f6.aac +0 -0
  142. data/test/dummy/public/system/audios/files/small/8d116bcb-2605-429e-9edc-b1a91fa66d0a.aac +0 -0
  143. data/test/dummy/public/system/audios/files/small/9b084b16-eb46-4730-ad80-c5d7d8ef92d2.aac +0 -0
  144. data/test/dummy/public/system/audios/files/small/9dddf071-ac43-4232-9a9d-fb5d26862bd1.aac +0 -0
  145. data/test/dummy/public/system/audios/files/small/a6880c5f-d130-469f-9c30-d8aa1b9f7b71.aac +0 -0
  146. data/test/dummy/public/system/audios/files/small/a79a531d-5de4-4aa3-9c04-275cf6307d13.aac +0 -0
  147. data/test/dummy/public/system/audios/files/small/c6768282-9787-45dc-a39f-37d23b83f8f2.aac +0 -0
  148. data/test/dummy/public/system/audios/files/small/e8389286-fda2-4614-906f-bd646383333a.aac +0 -0
  149. data/test/dummy/public/system/audios/files/small/ee0041b9-6482-4d4f-96cc-1a6e28c93570.aac +0 -0
  150. data/test/dummy/public/system/audios/files/small/ffb3df30-8dbf-4938-abde-21cdfced70d1.aac +0 -0
  151. data/test/dummy/public/system/images/files/full/0850c86c-78a8-4319-8852-bed744b792e6.jpg +0 -0
  152. data/test/dummy/public/system/images/files/full/12ace664-b553-45a6-b02b-37e15ac2981b.jpg +0 -0
  153. data/test/dummy/public/system/images/files/full/2ac8ebdb-bc96-49c4-befd-5c96b47646e5.jpg +0 -0
  154. data/test/dummy/public/system/images/files/full/3e9c5921-4820-441d-9f90-90b518cd582e.jpg +0 -0
  155. data/test/dummy/public/system/images/files/full/444d0123-908a-4616-83e3-88942a66a075.jpg +0 -0
  156. data/test/dummy/public/system/images/files/full/5af89da1-b1fa-421a-a52e-01607d89fb5d.jpg +0 -0
  157. data/test/dummy/public/system/images/files/full/8628fbe3-bd09-4713-babe-e38c1492788e.jpg +0 -0
  158. data/test/dummy/public/system/images/files/full/a0158251-8d9c-42fb-a854-e56b915713df.jpg +0 -0
  159. data/test/dummy/public/system/images/files/full/b7318aed-63ee-43a2-9365-755bcc2815df.jpg +0 -0
  160. data/test/dummy/public/system/images/files/full/c292008f-764f-4f8a-8df1-82c63d87a653.jpg +0 -0
  161. data/test/dummy/public/system/images/files/full/cd5745af-c9c5-4ea4-9fca-711fb58c4604.jpg +0 -0
  162. data/test/dummy/public/system/images/files/full/d39266e6-2426-4888-9f12-031ade4f872e.jpg +0 -0
  163. data/test/dummy/public/system/images/files/full/e9e4c240-1426-4951-a600-c5a07c30d80d.jpg +0 -0
  164. data/test/dummy/public/system/images/files/full/ee1f8491-6e52-410f-9d62-bd544715d066.jpg +0 -0
  165. data/test/dummy/public/system/images/files/full/f7ccd0c4-6d8d-4d26-afe7-ab62a448baf9.jpg +0 -0
  166. data/test/dummy/public/system/images/files/full/ffc3f5fd-ff40-4a77-8e08-0517e519f857.jpg +0 -0
  167. data/test/dummy/public/system/images/files/large/0850c86c-78a8-4319-8852-bed744b792e6.jpg +0 -0
  168. data/test/dummy/public/system/images/files/large/12ace664-b553-45a6-b02b-37e15ac2981b.jpg +0 -0
  169. data/test/dummy/public/system/images/files/large/2ac8ebdb-bc96-49c4-befd-5c96b47646e5.jpg +0 -0
  170. data/test/dummy/public/system/images/files/large/3e9c5921-4820-441d-9f90-90b518cd582e.jpg +0 -0
  171. data/test/dummy/public/system/images/files/large/444d0123-908a-4616-83e3-88942a66a075.jpg +0 -0
  172. data/test/dummy/public/system/images/files/large/5af89da1-b1fa-421a-a52e-01607d89fb5d.jpg +0 -0
  173. data/test/dummy/public/system/images/files/large/8628fbe3-bd09-4713-babe-e38c1492788e.jpg +0 -0
  174. data/test/dummy/public/system/images/files/large/a0158251-8d9c-42fb-a854-e56b915713df.jpg +0 -0
  175. data/test/dummy/public/system/images/files/large/b7318aed-63ee-43a2-9365-755bcc2815df.jpg +0 -0
  176. data/test/dummy/public/system/images/files/large/c292008f-764f-4f8a-8df1-82c63d87a653.jpg +0 -0
  177. data/test/dummy/public/system/images/files/large/cd5745af-c9c5-4ea4-9fca-711fb58c4604.jpg +0 -0
  178. data/test/dummy/public/system/images/files/large/d39266e6-2426-4888-9f12-031ade4f872e.jpg +0 -0
  179. data/test/dummy/public/system/images/files/large/e9e4c240-1426-4951-a600-c5a07c30d80d.jpg +0 -0
  180. data/test/dummy/public/system/images/files/large/ee1f8491-6e52-410f-9d62-bd544715d066.jpg +0 -0
  181. data/test/dummy/public/system/images/files/large/f7ccd0c4-6d8d-4d26-afe7-ab62a448baf9.jpg +0 -0
  182. data/test/dummy/public/system/images/files/large/ffc3f5fd-ff40-4a77-8e08-0517e519f857.jpg +0 -0
  183. data/test/dummy/public/system/images/files/original/8628fbe3-bd09-4713-babe-e38c1492788e.png +0 -0
  184. data/test/dummy/public/system/images/files/original/a0158251-8d9c-42fb-a854-e56b915713df.png +0 -0
  185. data/test/dummy/public/system/images/files/original/b7318aed-63ee-43a2-9365-755bcc2815df.png +0 -0
  186. data/test/dummy/public/system/images/files/original/c292008f-764f-4f8a-8df1-82c63d87a653.png +0 -0
  187. data/test/dummy/public/system/images/files/original/cd5745af-c9c5-4ea4-9fca-711fb58c4604.png +0 -0
  188. data/test/dummy/public/system/images/files/original/d39266e6-2426-4888-9f12-031ade4f872e.png +0 -0
  189. data/test/dummy/public/system/images/files/original/e9e4c240-1426-4951-a600-c5a07c30d80d.png +0 -0
  190. data/test/dummy/public/system/images/files/original/ee1f8491-6e52-410f-9d62-bd544715d066.png +0 -0
  191. data/test/dummy/public/system/images/files/original/f7ccd0c4-6d8d-4d26-afe7-ab62a448baf9.png +0 -0
  192. data/test/dummy/public/system/images/files/original/ffc3f5fd-ff40-4a77-8e08-0517e519f857.png +0 -0
  193. data/test/dummy/public/system/images/files/small/0850c86c-78a8-4319-8852-bed744b792e6.jpg +0 -0
  194. data/test/dummy/public/system/images/files/small/12ace664-b553-45a6-b02b-37e15ac2981b.jpg +0 -0
  195. data/test/dummy/public/system/images/files/small/2ac8ebdb-bc96-49c4-befd-5c96b47646e5.jpg +0 -0
  196. data/test/dummy/public/system/images/files/small/3e9c5921-4820-441d-9f90-90b518cd582e.jpg +0 -0
  197. data/test/dummy/public/system/images/files/small/444d0123-908a-4616-83e3-88942a66a075.jpg +0 -0
  198. data/test/dummy/public/system/images/files/small/5af89da1-b1fa-421a-a52e-01607d89fb5d.jpg +0 -0
  199. data/test/dummy/public/system/images/files/small/8628fbe3-bd09-4713-babe-e38c1492788e.jpg +0 -0
  200. data/test/dummy/public/system/images/files/small/a0158251-8d9c-42fb-a854-e56b915713df.jpg +0 -0
  201. data/test/dummy/public/system/images/files/small/b7318aed-63ee-43a2-9365-755bcc2815df.jpg +0 -0
  202. data/test/dummy/public/system/images/files/small/c292008f-764f-4f8a-8df1-82c63d87a653.jpg +0 -0
  203. data/test/dummy/public/system/images/files/small/cd5745af-c9c5-4ea4-9fca-711fb58c4604.jpg +0 -0
  204. data/test/dummy/public/system/images/files/small/d39266e6-2426-4888-9f12-031ade4f872e.jpg +0 -0
  205. data/test/dummy/public/system/images/files/small/e9e4c240-1426-4951-a600-c5a07c30d80d.jpg +0 -0
  206. data/test/dummy/public/system/images/files/small/ee1f8491-6e52-410f-9d62-bd544715d066.jpg +0 -0
  207. data/test/dummy/public/system/images/files/small/f7ccd0c4-6d8d-4d26-afe7-ab62a448baf9.jpg +0 -0
  208. data/test/dummy/public/system/images/files/small/ffc3f5fd-ff40-4a77-8e08-0517e519f857.jpg +0 -0
  209. data/test/dummy/public/system/images/files/thumb/0850c86c-78a8-4319-8852-bed744b792e6.jpg +0 -0
  210. data/test/dummy/public/system/images/files/thumb/12ace664-b553-45a6-b02b-37e15ac2981b.jpg +0 -0
  211. data/test/dummy/public/system/images/files/thumb/2ac8ebdb-bc96-49c4-befd-5c96b47646e5.jpg +0 -0
  212. data/test/dummy/public/system/images/files/thumb/3e9c5921-4820-441d-9f90-90b518cd582e.jpg +0 -0
  213. data/test/dummy/public/system/images/files/thumb/444d0123-908a-4616-83e3-88942a66a075.jpg +0 -0
  214. data/test/dummy/public/system/images/files/thumb/5af89da1-b1fa-421a-a52e-01607d89fb5d.jpg +0 -0
  215. data/test/dummy/public/system/images/files/thumb/8628fbe3-bd09-4713-babe-e38c1492788e.jpg +0 -0
  216. data/test/dummy/public/system/images/files/thumb/a0158251-8d9c-42fb-a854-e56b915713df.jpg +0 -0
  217. data/test/dummy/public/system/images/files/thumb/b7318aed-63ee-43a2-9365-755bcc2815df.jpg +0 -0
  218. data/test/dummy/public/system/images/files/thumb/c292008f-764f-4f8a-8df1-82c63d87a653.jpg +0 -0
  219. data/test/dummy/public/system/images/files/thumb/cd5745af-c9c5-4ea4-9fca-711fb58c4604.jpg +0 -0
  220. data/test/dummy/public/system/images/files/thumb/d39266e6-2426-4888-9f12-031ade4f872e.jpg +0 -0
  221. data/test/dummy/public/system/images/files/thumb/e9e4c240-1426-4951-a600-c5a07c30d80d.jpg +0 -0
  222. data/test/dummy/public/system/images/files/thumb/ee1f8491-6e52-410f-9d62-bd544715d066.jpg +0 -0
  223. data/test/dummy/public/system/images/files/thumb/f7ccd0c4-6d8d-4d26-afe7-ab62a448baf9.jpg +0 -0
  224. data/test/dummy/public/system/images/files/thumb/ffc3f5fd-ff40-4a77-8e08-0517e519f857.jpg +0 -0
@@ -1,16 +1,16 @@
1
1
  module Attached
2
2
  module Storage
3
3
  class Base
4
-
5
-
4
+
5
+
6
6
  # Helper for parsing credentials from a hash, file, or string.
7
7
  #
8
8
  # Usage:
9
9
  #
10
- # parse({...})
10
+ # parse({...})
11
11
  # parse(File.open(...))
12
12
  # Parse("...")
13
-
13
+
14
14
  def parse(credentials)
15
15
  case credentials
16
16
  when Hash then credentials
@@ -19,21 +19,21 @@ module Attached
19
19
  else raise ArgumentError.new("credentials must be a hash, file, or string")
20
20
  end
21
21
  end
22
-
23
-
22
+
23
+
24
24
  # Helper for determining options from a file
25
25
  #
26
26
  # Usage:
27
27
  #
28
- # options("/images/1.jpg")
28
+ # options("/images/1.jpg")
29
29
  # options("/images/1.png")
30
30
  # options("/videos/1.mpg")
31
31
  # options("/videos/1.mov")
32
-
32
+
33
33
  def options(path)
34
34
  options = {}
35
35
  type = File.extname(path)
36
-
36
+
37
37
  case type
38
38
  when /tiff/ then options[:content_type] = "image/tiff"
39
39
  when /tif/ then options[:content_type] = "image/tiff"
@@ -59,66 +59,66 @@ module Attached
59
59
  when /txt/ then options[:content_type] = "text/plain"
60
60
  when /csv/ then options[:content_type] = "text/csv"
61
61
  end
62
-
62
+
63
63
  return options
64
64
  end
65
-
66
-
65
+
66
+
67
67
  # Create a new file system storage interface supporting save and destroy operations.
68
68
  #
69
69
  # Usage:
70
70
  #
71
71
  # Base.new()
72
-
72
+
73
73
  def initialize(credentials = nil)
74
74
  raise NotImplementedError.new
75
75
  end
76
-
77
-
76
+
77
+
78
78
  # Access the host for a storage service or return null if local.
79
79
  #
80
80
  # Usage:
81
81
  #
82
82
  # storage.host
83
-
83
+
84
84
  def host()
85
85
  raise NotImplementedError.new
86
86
  end
87
-
88
-
87
+
88
+
89
89
  # Save a file to a given path (abstract).
90
90
  #
91
91
  # Parameters:
92
92
  #
93
93
  # * file - The file to save.
94
94
  # * path - The path to save.
95
-
95
+
96
96
  def save(file, path)
97
97
  raise NotImplementedError.new
98
98
  end
99
-
100
-
99
+
100
+
101
101
  # Retrieve a file from a given path.
102
102
  #
103
103
  # Parameters:
104
104
  #
105
105
  # * path - The path to retrieve.
106
-
106
+
107
107
  def retrieve(path)
108
108
  raise NotImplementedError.new
109
109
  end
110
-
111
-
110
+
111
+
112
112
  # Destroy a file at a given path (abstract).
113
113
  #
114
114
  # Parameters:
115
115
  #
116
116
  # * path - The path to destroy.
117
-
117
+
118
118
  def destroy(path)
119
119
  raise NotImplementedError.new
120
120
  end
121
-
121
+
122
122
  end
123
123
  end
124
124
  end
@@ -8,120 +8,120 @@ end
8
8
 
9
9
 
10
10
  module Attached
11
- module Storage
12
- class Google < Base
13
-
14
-
15
- attr_reader :permissions
16
-
17
- attr_reader :bucket
18
- attr_reader :access_key_id
19
- attr_reader :secret_access_key
20
-
21
-
22
- # Create a new interface supporting save and destroy operations.
23
- #
24
- # Usage:
25
- #
26
- # Attached::Storage::Google.new()
27
- # Attached::Storage::Google.new("google.yml")
28
-
29
- def initialize(credentials)
30
- credentials = parse(credentials)
31
-
32
- @permissions = { :public => true }
33
-
34
- @bucket = credentials[:bucket] || credentials['bucket']
35
- @access_key_id = credentials[:access_key_id] || credentials['access_key_id']
36
- @secret_access_key = credentials[:secret_access_key] || credentials['secret_access_key']
37
-
38
- raise "'bucket' must be specified if using 'google' for storage" unless @bucket
39
- end
40
-
41
-
42
- # Access the host (e.g. https://attached.commondatastorage.googleapis.com/) for a storage service.
43
- #
44
- # Usage:
45
- #
46
- # storage.host
47
-
48
- def host()
49
- "https://#{self.bucket}.commondatastorage.googleapis.com/"
50
- end
51
-
52
-
11
+ module Storage
12
+ class Google < Base
13
+
14
+
15
+ attr_reader :permissions
16
+
17
+ attr_reader :bucket
18
+ attr_reader :access_key_id
19
+ attr_reader :secret_access_key
20
+
21
+
22
+ # Create a new interface supporting save and destroy operations.
23
+ #
24
+ # Usage:
25
+ #
26
+ # Attached::Storage::Google.new()
27
+ # Attached::Storage::Google.new("google.yml")
28
+
29
+ def initialize(credentials)
30
+ credentials = parse(credentials)
31
+
32
+ @permissions = { :public => true }
33
+
34
+ @bucket = credentials[:bucket] || credentials['bucket']
35
+ @access_key_id = credentials[:access_key_id] || credentials['access_key_id']
36
+ @secret_access_key = credentials[:secret_access_key] || credentials['secret_access_key']
37
+
38
+ raise "'bucket' must be specified if using 'google' for storage" unless @bucket
39
+ end
40
+
41
+
42
+ # Access the host (e.g. https://attached.commondatastorage.googleapis.com/) for a storage service.
43
+ #
44
+ # Usage:
45
+ #
46
+ # storage.host
47
+
48
+ def host()
49
+ "https://#{self.bucket}.commondatastorage.googleapis.com/"
50
+ end
51
+
52
+
53
53
  # Save a file to a given path.
54
54
  #
55
55
  # Parameters:
56
56
  #
57
57
  # * file - The file to save.
58
58
  # * path - The path to save.
59
-
59
+
60
60
  def save(file, path)
61
61
  file = File.open(file.path)
62
-
62
+
63
63
  directory = connection.directories.get(self.bucket)
64
64
  directory ||= connection.directories.create(self.permissions.merge(:key => self.bucket))
65
-
65
+
66
66
  directory.files.create(self.options(path).merge(self.permissions.merge(:key => path, :body => file)))
67
-
67
+
68
68
  file.close
69
69
  end
70
-
71
-
70
+
71
+
72
72
  # Retrieve a file from a given path.
73
73
  #
74
74
  # Parameters:
75
75
  #
76
76
  # * path - The path to retrieve.
77
-
77
+
78
78
  def retrieve(path)
79
79
  directory = connection.directories.get(self.bucket)
80
80
  directory ||= connection.directories.create(self.permissions.merge(:key => self.bucket))
81
-
81
+
82
82
  file = directory.files.get(path)
83
-
83
+
84
84
  body = file.body
85
-
85
+
86
86
  extname = File.extname(path)
87
87
  basename = File.basename(path, extname)
88
-
88
+
89
89
  file = Tempfile.new([basename, extname])
90
90
  file.binmode
91
91
  file.write(body)
92
92
  file.rewind
93
-
93
+
94
94
  file
95
95
  end
96
-
97
-
96
+
97
+
98
98
  # Destroy a file at a given path.
99
99
  #
100
100
  # Parameters:
101
101
  #
102
102
  # * path - The path to destroy.
103
-
103
+
104
104
  def destroy(path)
105
105
  directory = connection.directories.get(self.bucket)
106
106
  directory ||= connection.directories.create(self.permissions.merge(:key => self.bucket))
107
-
107
+
108
108
  file = directory.files.get(path)
109
109
  file.destroy if file
110
110
  end
111
-
112
-
113
- private
114
-
115
-
116
- def connection
117
- @connection ||= Fog::Storage.new(
118
- :google_storage_secret_access_key => self.secret_access_key,
111
+
112
+
113
+ private
114
+
115
+
116
+ def connection
117
+ @connection ||= Fog::Storage.new(
118
+ :google_storage_secret_access_key => self.secret_access_key,
119
119
  :google_storage_access_key_id => self.access_key_id,
120
120
  :provider => 'Google'
121
121
  )
122
- end
123
-
124
-
125
- end
126
- end
122
+ end
123
+
124
+
125
+ end
126
+ end
127
127
  end
@@ -1,48 +1,48 @@
1
1
  require 'attached/storage/base'
2
2
 
3
3
  module Attached
4
- module Storage
5
- class Local < Base
6
-
7
-
8
- attr_reader :mode
9
-
10
-
11
- # Create a new interface supporting save and destroy operations.
12
- #
13
- # Usage:
14
- #
15
- # Attached::Storage::Local.new()
16
-
17
- def initialize()
18
- @mode = 0644
19
- end
20
-
21
-
22
- # Access the host (e.g. /system/) for a storage service.
23
- #
24
- # Usage:
25
- #
26
- # storage.host
27
-
28
- def host()
29
- "/system/"
30
- end
31
-
32
-
4
+ module Storage
5
+ class Local < Base
6
+
7
+
8
+ attr_reader :mode
9
+
10
+
11
+ # Create a new interface supporting save and destroy operations.
12
+ #
13
+ # Usage:
14
+ #
15
+ # Attached::Storage::Local.new()
16
+
17
+ def initialize()
18
+ @mode = 0644
19
+ end
20
+
21
+
22
+ # Access the host (e.g. /system/) for a storage service.
23
+ #
24
+ # Usage:
25
+ #
26
+ # storage.host
27
+
28
+ def host()
29
+ "/system/"
30
+ end
31
+
32
+
33
33
  # Save a file to a given path.
34
34
  #
35
35
  # Parameters:
36
36
  #
37
37
  # * file - The file to save.
38
38
  # * path - The path to save.
39
-
39
+
40
40
  def save(file, path)
41
41
  path = "#{Rails.root}/public/system/#{path}"
42
42
  dirname, basename = File.split(path)
43
-
43
+
44
44
  return if file.path == path
45
-
45
+
46
46
  begin
47
47
  FileUtils.mkdir_p(dirname)
48
48
  FileUtils.cp(file.path, path)
@@ -50,38 +50,38 @@ module Attached
50
50
  rescue Errno::ENOENT
51
51
  end
52
52
  end
53
-
54
-
53
+
54
+
55
55
  # Retrieve a file from a given path.
56
56
  #
57
57
  # Parameters:
58
58
  #
59
59
  # * path - The path to retrieve.
60
-
60
+
61
61
  def retrieve(path)
62
62
  path = "#{Rails.root}/public/system/#{path}"
63
-
63
+
64
64
  File.open(path)
65
65
  end
66
-
67
-
66
+
67
+
68
68
  # Destroy a file at a given path.
69
69
  #
70
70
  # Parameters:
71
71
  #
72
72
  # * path - The path to destroy.
73
-
73
+
74
74
  def destroy(path)
75
75
  path = "#{Rails.root}/public/system/#{path}"
76
76
  dirname, basename = File.split(path)
77
-
77
+
78
78
  begin
79
79
  FileUtils.rm(path)
80
80
  rescue Errno::ENOENT
81
81
  end
82
82
  end
83
-
84
-
85
- end
86
- end
83
+
84
+
85
+ end
86
+ end
87
87
  end