attached 1.0.4 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.rdoc +6 -5
- data/Rakefile +0 -3
- data/lib/attached.rb +23 -151
- data/lib/attached/attachment.rb +8 -60
- data/lib/attached/attatcher.rb +165 -0
- data/lib/attached/definition.rb +16 -0
- data/lib/attached/job.rb +0 -1
- data/lib/attached/processor.rb +2 -6
- data/lib/attached/processor/audio.rb +0 -19
- data/lib/attached/processor/base.rb +0 -5
- data/lib/attached/processor/error.rb +1 -1
- data/lib/attached/processor/image.rb +0 -31
- data/lib/attached/railtie.rb +4 -1
- data/lib/attached/storage.rb +5 -9
- data/lib/attached/storage/aws.rb +6 -17
- data/lib/attached/storage/base.rb +1 -10
- data/lib/attached/storage/error.rb +1 -1
- data/lib/attached/storage/fog.rb +2 -26
- data/lib/attached/storage/google.rb +5 -18
- data/lib/attached/storage/local.rb +1 -13
- data/lib/attached/storage/rackspace.rb +7 -18
- data/lib/attached/version.rb +1 -1
- data/test/dummy/app/controllers/application_controller.rb +1 -1
- data/test/dummy/app/models/audio.rb +7 -7
- data/test/dummy/app/models/image.rb +8 -8
- data/test/dummy/app/views/audios/_form.html.haml +5 -5
- data/test/dummy/app/views/audios/edit.html.haml +1 -1
- data/test/dummy/app/views/audios/index.html.haml +8 -8
- data/test/dummy/app/views/audios/new.html.haml +1 -1
- data/test/dummy/app/views/audios/show.html.haml +2 -2
- data/test/dummy/app/views/images/_form.html.haml +5 -5
- data/test/dummy/app/views/images/edit.html.haml +1 -1
- data/test/dummy/app/views/images/index.html.haml +8 -8
- data/test/dummy/app/views/images/new.html.haml +1 -1
- data/test/dummy/app/views/images/show.html.haml +3 -3
- data/test/dummy/app/views/layouts/application.html.haml +2 -2
- data/test/dummy/app/views/main/index.html.haml +2 -2
- data/test/dummy/app/views/shared/_error.html.haml +1 -1
- data/test/dummy/config/aws.yml +0 -2
- data/test/dummy/config/initializers/other.rb +2 -2
- data/test/dummy/config/routes.rb +1 -1
- data/test/dummy/db/schema.rb +7 -7
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/test.log +5487 -0
- data/test/dummy/public/system/audios/files/full/053225f9-c6d3-4472-8228-2cc701fc1a41.aac +0 -0
- data/test/dummy/public/system/audios/files/full/0b55eae0-52a0-4af0-a24e-2de3fcabfbf4.aac +0 -0
- data/test/dummy/public/system/audios/files/full/16a35230-6ae5-47e4-9e09-2ecdbd31cd58.aac +0 -0
- data/test/dummy/public/system/audios/files/full/344825e7-6315-47b6-986b-c731a6d08cd5.aac +0 -0
- data/test/dummy/public/system/audios/files/full/398e2cc8-f19d-4250-a528-a1fe146a35b3.aac +0 -0
- data/test/dummy/public/system/audios/files/full/4036c6ad-3ec2-4714-b453-357b0e708f3c.aac +0 -0
- data/test/dummy/public/system/audios/files/full/41c23f05-15fe-46fe-b6e4-0f3d95c4f3ab.aac +0 -0
- data/test/dummy/public/system/audios/files/full/41d57894-31d9-4b68-81a5-008e804b66a0.aac +0 -0
- data/test/dummy/public/system/audios/files/full/4c81067f-15e4-4152-a2c4-92b0f29e05f3.aac +0 -0
- data/test/dummy/public/system/audios/files/full/560a41f2-83cd-4734-a741-5da103917a9b.aac +0 -0
- data/test/dummy/public/system/audios/files/full/6569067f-276a-4a15-8376-57709201b209.aac +0 -0
- data/test/dummy/public/system/audios/files/full/68a0b6a2-d41a-4b09-970d-397860563669.aac +0 -0
- data/test/dummy/public/system/audios/files/full/6f91f04a-4894-4b16-87b6-ccfc686ba659.aac +0 -0
- data/test/dummy/public/system/audios/files/full/7aad29c4-7736-4492-9455-1a6ff333d807.aac +0 -0
- data/test/dummy/public/system/audios/files/full/7f4b261e-c56a-41cb-a0e0-ad7888116642.aac +0 -0
- data/test/dummy/public/system/audios/files/full/828531f1-a38d-4406-b147-1a01cff06a67.aac +0 -0
- data/test/dummy/public/system/audios/files/full/86bf96b6-e784-40e0-9edd-a47eb09059a0.aac +0 -0
- data/test/dummy/public/system/audios/files/full/90a9e337-b07b-441d-9c49-0090a7e6b9c0.aac +0 -0
- data/test/dummy/public/system/audios/files/full/90fc1944-196e-4a47-945e-4344ef62eb8c.aac +0 -0
- data/test/dummy/public/system/audios/files/full/975ce729-487c-4e6d-bce5-9523dbfa952c.aac +0 -0
- data/test/dummy/public/system/audios/files/full/9a096e89-4ce2-4ad9-9ff6-503f7200a8c8.aac +0 -0
- data/test/dummy/public/system/audios/files/full/9a186341-4c3b-4b30-b605-f234eb371d4c.aac +0 -0
- data/test/dummy/public/system/audios/files/full/a9034b45-c9c6-4387-b611-ef0c64c641e6.aac +0 -0
- data/test/dummy/public/system/audios/files/full/a96d0f64-2c94-4378-980e-d12e3492d412.aac +0 -0
- data/test/dummy/public/system/audios/files/full/b24e5454-f642-43f0-8107-4c92dfe3f770.aac +0 -0
- data/test/dummy/public/system/audios/files/full/c0c22ae4-a660-4ebd-8640-d1c82246911f.aac +0 -0
- data/test/dummy/public/system/audios/files/full/cd9bcb87-f6f1-4a63-8989-433f71e44803.aac +0 -0
- data/test/dummy/public/system/audios/files/full/cfda40b9-14ce-4cd1-b843-604a2e5fd37a.aac +0 -0
- data/test/dummy/public/system/audios/files/full/d6421e75-ec3b-4c68-8f50-0365b131505a.aac +0 -0
- data/test/dummy/public/system/audios/files/full/d7a777c2-ce13-4dc3-a401-ac81b469734f.aac +0 -0
- data/test/dummy/public/system/audios/files/full/d97113db-5a93-4cdb-a022-74292de1e40b.aac +0 -0
- data/test/dummy/public/system/audios/files/full/de5a8bbe-292b-49b8-8fdd-b84dc78be9dc.aac +0 -0
- data/test/dummy/public/system/audios/files/full/e0847f0e-90f9-4950-9b87-e2809768dd5a.aac +0 -0
- data/test/dummy/public/system/audios/files/full/e318d820-8e5c-49fd-af55-1b1617c94e51.aac +0 -0
- data/test/dummy/public/system/audios/files/full/e6eb96eb-8688-49ab-8188-3b0c3586e5db.aac +0 -0
- data/test/dummy/public/system/audios/files/full/e8b653fe-9f0a-458e-a4f1-f2a3c43b57b0.aac +0 -0
- data/test/dummy/public/system/audios/files/full/e90ebfbd-b590-4fe9-9cd5-b13b9ba7bb04.aac +0 -0
- data/test/dummy/public/system/audios/files/full/f2663b76-efdf-4522-8a15-31bb94b92c5f.aac +0 -0
- data/test/dummy/public/system/audios/files/full/fb02d110-db44-4c45-951d-69d471af9990.aac +0 -0
- data/test/dummy/public/system/audios/files/large/053225f9-c6d3-4472-8228-2cc701fc1a41.aac +0 -0
- data/test/dummy/public/system/audios/files/large/0b55eae0-52a0-4af0-a24e-2de3fcabfbf4.aac +0 -0
- data/test/dummy/public/system/audios/files/large/16a35230-6ae5-47e4-9e09-2ecdbd31cd58.aac +0 -0
- data/test/dummy/public/system/audios/files/large/344825e7-6315-47b6-986b-c731a6d08cd5.aac +0 -0
- data/test/dummy/public/system/audios/files/large/398e2cc8-f19d-4250-a528-a1fe146a35b3.aac +0 -0
- data/test/dummy/public/system/audios/files/large/4036c6ad-3ec2-4714-b453-357b0e708f3c.aac +0 -0
- data/test/dummy/public/system/audios/files/large/41c23f05-15fe-46fe-b6e4-0f3d95c4f3ab.aac +0 -0
- data/test/dummy/public/system/audios/files/large/41d57894-31d9-4b68-81a5-008e804b66a0.aac +0 -0
- data/test/dummy/public/system/audios/files/large/4c81067f-15e4-4152-a2c4-92b0f29e05f3.aac +0 -0
- data/test/dummy/public/system/audios/files/large/560a41f2-83cd-4734-a741-5da103917a9b.aac +0 -0
- data/test/dummy/public/system/audios/files/large/6569067f-276a-4a15-8376-57709201b209.aac +0 -0
- data/test/dummy/public/system/audios/files/large/68a0b6a2-d41a-4b09-970d-397860563669.aac +0 -0
- data/test/dummy/public/system/audios/files/large/6f91f04a-4894-4b16-87b6-ccfc686ba659.aac +0 -0
- data/test/dummy/public/system/audios/files/large/7aad29c4-7736-4492-9455-1a6ff333d807.aac +0 -0
- data/test/dummy/public/system/audios/files/large/7f4b261e-c56a-41cb-a0e0-ad7888116642.aac +0 -0
- data/test/dummy/public/system/audios/files/large/828531f1-a38d-4406-b147-1a01cff06a67.aac +0 -0
- data/test/dummy/public/system/audios/files/large/86bf96b6-e784-40e0-9edd-a47eb09059a0.aac +0 -0
- data/test/dummy/public/system/audios/files/large/90a9e337-b07b-441d-9c49-0090a7e6b9c0.aac +0 -0
- data/test/dummy/public/system/audios/files/large/90fc1944-196e-4a47-945e-4344ef62eb8c.aac +0 -0
- data/test/dummy/public/system/audios/files/large/975ce729-487c-4e6d-bce5-9523dbfa952c.aac +0 -0
- data/test/dummy/public/system/audios/files/large/9a096e89-4ce2-4ad9-9ff6-503f7200a8c8.aac +0 -0
- data/test/dummy/public/system/audios/files/large/9a186341-4c3b-4b30-b605-f234eb371d4c.aac +0 -0
- data/test/dummy/public/system/audios/files/large/a9034b45-c9c6-4387-b611-ef0c64c641e6.aac +0 -0
- data/test/dummy/public/system/audios/files/large/a96d0f64-2c94-4378-980e-d12e3492d412.aac +0 -0
- data/test/dummy/public/system/audios/files/large/b24e5454-f642-43f0-8107-4c92dfe3f770.aac +0 -0
- data/test/dummy/public/system/audios/files/large/c0c22ae4-a660-4ebd-8640-d1c82246911f.aac +0 -0
- data/test/dummy/public/system/audios/files/large/cd9bcb87-f6f1-4a63-8989-433f71e44803.aac +0 -0
- data/test/dummy/public/system/audios/files/large/cfda40b9-14ce-4cd1-b843-604a2e5fd37a.aac +0 -0
- data/test/dummy/public/system/audios/files/large/d6421e75-ec3b-4c68-8f50-0365b131505a.aac +0 -0
- data/test/dummy/public/system/audios/files/large/d7a777c2-ce13-4dc3-a401-ac81b469734f.aac +0 -0
- data/test/dummy/public/system/audios/files/large/d97113db-5a93-4cdb-a022-74292de1e40b.aac +0 -0
- data/test/dummy/public/system/audios/files/large/de5a8bbe-292b-49b8-8fdd-b84dc78be9dc.aac +0 -0
- data/test/dummy/public/system/audios/files/large/e0847f0e-90f9-4950-9b87-e2809768dd5a.aac +0 -0
- data/test/dummy/public/system/audios/files/large/e318d820-8e5c-49fd-af55-1b1617c94e51.aac +0 -0
- data/test/dummy/public/system/audios/files/large/e6eb96eb-8688-49ab-8188-3b0c3586e5db.aac +0 -0
- data/test/dummy/public/system/audios/files/large/e8b653fe-9f0a-458e-a4f1-f2a3c43b57b0.aac +0 -0
- data/test/dummy/public/system/audios/files/large/e90ebfbd-b590-4fe9-9cd5-b13b9ba7bb04.aac +0 -0
- data/test/dummy/public/system/audios/files/large/f2663b76-efdf-4522-8a15-31bb94b92c5f.aac +0 -0
- data/test/dummy/public/system/audios/files/large/fb02d110-db44-4c45-951d-69d471af9990.aac +0 -0
- data/test/dummy/public/system/audios/files/original/053225f9-c6d3-4472-8228-2cc701fc1a41.wav +0 -0
- data/test/dummy/public/system/audios/files/original/0b55eae0-52a0-4af0-a24e-2de3fcabfbf4.wav +0 -0
- data/test/dummy/public/system/audios/files/original/16a35230-6ae5-47e4-9e09-2ecdbd31cd58.wav +0 -0
- data/test/dummy/public/system/audios/files/original/344825e7-6315-47b6-986b-c731a6d08cd5.wav +0 -0
- data/test/dummy/public/system/audios/files/original/398e2cc8-f19d-4250-a528-a1fe146a35b3.wav +0 -0
- data/test/dummy/public/system/audios/files/original/4036c6ad-3ec2-4714-b453-357b0e708f3c.wav +0 -0
- data/test/dummy/public/system/audios/files/original/41c23f05-15fe-46fe-b6e4-0f3d95c4f3ab.wav +0 -0
- data/test/dummy/public/system/audios/files/original/41d57894-31d9-4b68-81a5-008e804b66a0.wav +0 -0
- data/test/dummy/public/system/audios/files/original/4c81067f-15e4-4152-a2c4-92b0f29e05f3.wav +0 -0
- data/test/dummy/public/system/audios/files/original/560a41f2-83cd-4734-a741-5da103917a9b.wav +0 -0
- data/test/dummy/public/system/audios/files/original/6569067f-276a-4a15-8376-57709201b209.wav +0 -0
- data/test/dummy/public/system/audios/files/original/68a0b6a2-d41a-4b09-970d-397860563669.wav +0 -0
- data/test/dummy/public/system/audios/files/original/6f91f04a-4894-4b16-87b6-ccfc686ba659.wav +0 -0
- data/test/dummy/public/system/audios/files/original/7aad29c4-7736-4492-9455-1a6ff333d807.wav +0 -0
- data/test/dummy/public/system/audios/files/original/7f4b261e-c56a-41cb-a0e0-ad7888116642.wav +0 -0
- data/test/dummy/public/system/audios/files/original/828531f1-a38d-4406-b147-1a01cff06a67.wav +0 -0
- data/test/dummy/public/system/audios/files/original/86bf96b6-e784-40e0-9edd-a47eb09059a0.wav +0 -0
- data/test/dummy/public/system/audios/files/original/90a9e337-b07b-441d-9c49-0090a7e6b9c0.wav +0 -0
- data/test/dummy/public/system/audios/files/original/975ce729-487c-4e6d-bce5-9523dbfa952c.wav +0 -0
- data/test/dummy/public/system/audios/files/original/9a096e89-4ce2-4ad9-9ff6-503f7200a8c8.wav +0 -0
- data/test/dummy/public/system/audios/files/original/9a186341-4c3b-4b30-b605-f234eb371d4c.wav +0 -0
- data/test/dummy/public/system/audios/files/original/b24e5454-f642-43f0-8107-4c92dfe3f770.wav +0 -0
- data/test/dummy/public/system/audios/files/original/cfda40b9-14ce-4cd1-b843-604a2e5fd37a.wav +0 -0
- data/test/dummy/public/system/audios/files/original/e318d820-8e5c-49fd-af55-1b1617c94e51.wav +0 -0
- data/test/dummy/public/system/audios/files/original/e6eb96eb-8688-49ab-8188-3b0c3586e5db.wav +0 -0
- data/test/dummy/public/system/audios/files/original/f2663b76-efdf-4522-8a15-31bb94b92c5f.wav +0 -0
- data/test/dummy/public/system/audios/files/original/fb02d110-db44-4c45-951d-69d471af9990.wav +0 -0
- data/test/dummy/public/system/audios/files/small/053225f9-c6d3-4472-8228-2cc701fc1a41.aac +0 -0
- data/test/dummy/public/system/audios/files/small/0b55eae0-52a0-4af0-a24e-2de3fcabfbf4.aac +0 -0
- data/test/dummy/public/system/audios/files/small/398e2cc8-f19d-4250-a528-a1fe146a35b3.aac +0 -0
- data/test/dummy/public/system/audios/files/small/4036c6ad-3ec2-4714-b453-357b0e708f3c.aac +0 -0
- data/test/dummy/public/system/audios/files/small/41c23f05-15fe-46fe-b6e4-0f3d95c4f3ab.aac +0 -0
- data/test/dummy/public/system/audios/files/small/41d57894-31d9-4b68-81a5-008e804b66a0.aac +0 -0
- data/test/dummy/public/system/audios/files/small/4c81067f-15e4-4152-a2c4-92b0f29e05f3.aac +0 -0
- data/test/dummy/public/system/audios/files/small/6569067f-276a-4a15-8376-57709201b209.aac +0 -0
- data/test/dummy/public/system/audios/files/small/68a0b6a2-d41a-4b09-970d-397860563669.aac +0 -0
- data/test/dummy/public/system/audios/files/small/6f91f04a-4894-4b16-87b6-ccfc686ba659.aac +0 -0
- data/test/dummy/public/system/audios/files/small/7f4b261e-c56a-41cb-a0e0-ad7888116642.aac +0 -0
- data/test/dummy/public/system/audios/files/small/86bf96b6-e784-40e0-9edd-a47eb09059a0.aac +0 -0
- data/test/dummy/public/system/audios/files/small/90a9e337-b07b-441d-9c49-0090a7e6b9c0.aac +0 -0
- data/test/dummy/public/system/audios/files/small/975ce729-487c-4e6d-bce5-9523dbfa952c.aac +0 -0
- data/test/dummy/public/system/audios/files/small/9a096e89-4ce2-4ad9-9ff6-503f7200a8c8.aac +0 -0
- data/test/dummy/public/system/audios/files/small/9a186341-4c3b-4b30-b605-f234eb371d4c.aac +0 -0
- data/test/dummy/public/system/audios/files/small/b24e5454-f642-43f0-8107-4c92dfe3f770.aac +0 -0
- data/test/dummy/public/system/audios/files/small/cfda40b9-14ce-4cd1-b843-604a2e5fd37a.aac +0 -0
- data/test/dummy/public/system/audios/files/small/e318d820-8e5c-49fd-af55-1b1617c94e51.aac +0 -0
- data/test/dummy/public/system/audios/files/small/e6eb96eb-8688-49ab-8188-3b0c3586e5db.aac +0 -0
- data/test/dummy/public/system/audios/files/small/f2663b76-efdf-4522-8a15-31bb94b92c5f.aac +0 -0
- data/test/dummy/public/system/audios/files/small/fb02d110-db44-4c45-951d-69d471af9990.aac +0 -0
- data/test/dummy/public/system/images/files/full/04a05143-2ea9-4ee0-bca3-64f436bac3d2.jpg +0 -0
- data/test/dummy/public/system/images/files/full/187e58dd-d90c-4000-8118-c46da7f1f71f.jpg +0 -0
- data/test/dummy/public/system/images/files/full/1fd5231d-04d1-4691-bceb-871810ac982b.jpg +0 -0
- data/test/dummy/public/system/images/files/full/25d98e6f-6419-4bb9-990c-cc5113f8606d.jpg +0 -0
- data/test/dummy/public/system/images/files/full/3401af18-b401-404f-9bd7-58424fe33e26.jpg +0 -0
- data/test/dummy/public/system/images/files/full/38bcfbac-5b70-4510-a0dd-9296fc22ed0e.jpg +0 -0
- data/test/dummy/public/system/images/files/full/49f59ee9-98cf-4991-8c96-aebef8f34a21.jpg +0 -0
- data/test/dummy/public/system/images/files/full/520dcbea-ce4a-474b-8e42-3b6c947181b3.jpg +0 -0
- data/test/dummy/public/system/images/files/full/5dea55cb-4d09-453c-b9fa-a6783c2b82e6.jpg +0 -0
- data/test/dummy/public/system/images/files/full/5dfc0dc2-909f-4525-9d5a-d04dc9e9f9ac.jpg +0 -0
- data/test/dummy/public/system/images/files/full/6cb55f24-12c1-4019-aa1d-d7d379ffb4b3.jpg +0 -0
- data/test/dummy/public/system/images/files/full/71e117d2-a77a-4daf-a0cc-39c629727b57.jpg +0 -0
- data/test/dummy/public/system/images/files/full/7426b7d6-2950-4064-8bcd-f7d081fbbd27.jpg +0 -0
- data/test/dummy/public/system/images/files/full/88286a62-ef1b-4532-82f4-7a9e72e32f2a.jpg +0 -0
- data/test/dummy/public/system/images/files/full/8daf45e0-c8c2-4768-9536-53b8dc269c14.jpg +0 -0
- data/test/dummy/public/system/images/files/full/970ec9d8-052c-4c7c-b1eb-a163004dcb35.jpg +0 -0
- data/test/dummy/public/system/images/files/full/9a74af84-4e37-451d-abff-84499ca198db.jpg +0 -0
- data/test/dummy/public/system/images/files/full/b784910f-bc64-4bbb-bc4f-77cc5b9faf7e.jpg +0 -0
- data/test/dummy/public/system/images/files/full/c8ec0593-49f5-44c5-957e-ce61a15678c9.jpg +0 -0
- data/test/dummy/public/system/images/files/full/ef58124a-9bd6-4da7-9dcb-a4dfe83e7cc1.jpg +0 -0
- data/test/dummy/public/system/images/files/full/f905a6f3-1626-4a3b-89dd-53f1c1a88379.jpg +0 -0
- data/test/dummy/public/system/images/files/full/fbe00e7d-98d7-4f89-86db-09918fedb9c5.jpg +0 -0
- data/test/dummy/public/system/images/files/large/04a05143-2ea9-4ee0-bca3-64f436bac3d2.jpg +0 -0
- data/test/dummy/public/system/images/files/large/187e58dd-d90c-4000-8118-c46da7f1f71f.jpg +0 -0
- data/test/dummy/public/system/images/files/large/1fd5231d-04d1-4691-bceb-871810ac982b.jpg +0 -0
- data/test/dummy/public/system/images/files/large/25d98e6f-6419-4bb9-990c-cc5113f8606d.jpg +0 -0
- data/test/dummy/public/system/images/files/large/3401af18-b401-404f-9bd7-58424fe33e26.jpg +0 -0
- data/test/dummy/public/system/images/files/large/38bcfbac-5b70-4510-a0dd-9296fc22ed0e.jpg +0 -0
- data/test/dummy/public/system/images/files/large/49f59ee9-98cf-4991-8c96-aebef8f34a21.jpg +0 -0
- data/test/dummy/public/system/images/files/large/520dcbea-ce4a-474b-8e42-3b6c947181b3.jpg +0 -0
- data/test/dummy/public/system/images/files/large/5dea55cb-4d09-453c-b9fa-a6783c2b82e6.jpg +0 -0
- data/test/dummy/public/system/images/files/large/5dfc0dc2-909f-4525-9d5a-d04dc9e9f9ac.jpg +0 -0
- data/test/dummy/public/system/images/files/large/6cb55f24-12c1-4019-aa1d-d7d379ffb4b3.jpg +0 -0
- data/test/dummy/public/system/images/files/large/71e117d2-a77a-4daf-a0cc-39c629727b57.jpg +0 -0
- data/test/dummy/public/system/images/files/large/7426b7d6-2950-4064-8bcd-f7d081fbbd27.jpg +0 -0
- data/test/dummy/public/system/images/files/large/88286a62-ef1b-4532-82f4-7a9e72e32f2a.jpg +0 -0
- data/test/dummy/public/system/images/files/large/8daf45e0-c8c2-4768-9536-53b8dc269c14.jpg +0 -0
- data/test/dummy/public/system/images/files/large/970ec9d8-052c-4c7c-b1eb-a163004dcb35.jpg +0 -0
- data/test/dummy/public/system/images/files/large/9a74af84-4e37-451d-abff-84499ca198db.jpg +0 -0
- data/test/dummy/public/system/images/files/large/b784910f-bc64-4bbb-bc4f-77cc5b9faf7e.jpg +0 -0
- data/test/dummy/public/system/images/files/large/c8ec0593-49f5-44c5-957e-ce61a15678c9.jpg +0 -0
- data/test/dummy/public/system/images/files/large/ef58124a-9bd6-4da7-9dcb-a4dfe83e7cc1.jpg +0 -0
- data/test/dummy/public/system/images/files/large/f905a6f3-1626-4a3b-89dd-53f1c1a88379.jpg +0 -0
- data/test/dummy/public/system/images/files/large/fbe00e7d-98d7-4f89-86db-09918fedb9c5.jpg +0 -0
- data/test/dummy/public/system/images/files/original/04a05143-2ea9-4ee0-bca3-64f436bac3d2.png +0 -0
- data/test/dummy/public/system/images/files/original/187e58dd-d90c-4000-8118-c46da7f1f71f.png +0 -0
- data/test/dummy/public/system/images/files/original/1fd5231d-04d1-4691-bceb-871810ac982b.png +0 -0
- data/test/dummy/public/system/images/files/original/25d98e6f-6419-4bb9-990c-cc5113f8606d.png +0 -0
- data/test/dummy/public/system/images/files/original/3401af18-b401-404f-9bd7-58424fe33e26.png +0 -0
- data/test/dummy/public/system/images/files/original/38bcfbac-5b70-4510-a0dd-9296fc22ed0e.png +0 -0
- data/test/dummy/public/system/images/files/original/49f59ee9-98cf-4991-8c96-aebef8f34a21.png +0 -0
- data/test/dummy/public/system/images/files/original/520dcbea-ce4a-474b-8e42-3b6c947181b3.png +0 -0
- data/test/dummy/public/system/images/files/original/5dea55cb-4d09-453c-b9fa-a6783c2b82e6.png +0 -0
- data/test/dummy/public/system/images/files/original/5dfc0dc2-909f-4525-9d5a-d04dc9e9f9ac.png +0 -0
- data/test/dummy/public/system/images/files/original/6cb55f24-12c1-4019-aa1d-d7d379ffb4b3.png +0 -0
- data/test/dummy/public/system/images/files/original/71e117d2-a77a-4daf-a0cc-39c629727b57.png +0 -0
- data/test/dummy/public/system/images/files/original/7426b7d6-2950-4064-8bcd-f7d081fbbd27.png +0 -0
- data/test/dummy/public/system/images/files/original/88286a62-ef1b-4532-82f4-7a9e72e32f2a.png +0 -0
- data/test/dummy/public/system/images/files/original/8daf45e0-c8c2-4768-9536-53b8dc269c14.png +0 -0
- data/test/dummy/public/system/images/files/original/970ec9d8-052c-4c7c-b1eb-a163004dcb35.png +0 -0
- data/test/dummy/public/system/images/files/original/9a74af84-4e37-451d-abff-84499ca198db.png +0 -0
- data/test/dummy/public/system/images/files/original/b784910f-bc64-4bbb-bc4f-77cc5b9faf7e.png +0 -0
- data/test/dummy/public/system/images/files/original/c8ec0593-49f5-44c5-957e-ce61a15678c9.png +0 -0
- data/test/dummy/public/system/images/files/original/ef58124a-9bd6-4da7-9dcb-a4dfe83e7cc1.png +0 -0
- data/test/dummy/public/system/images/files/original/f905a6f3-1626-4a3b-89dd-53f1c1a88379.png +0 -0
- data/test/dummy/public/system/images/files/original/fbe00e7d-98d7-4f89-86db-09918fedb9c5.png +0 -0
- data/test/dummy/public/system/images/files/small/04a05143-2ea9-4ee0-bca3-64f436bac3d2.jpg +0 -0
- data/test/dummy/public/system/images/files/small/187e58dd-d90c-4000-8118-c46da7f1f71f.jpg +0 -0
- data/test/dummy/public/system/images/files/small/1fd5231d-04d1-4691-bceb-871810ac982b.jpg +0 -0
- data/test/dummy/public/system/images/files/small/25d98e6f-6419-4bb9-990c-cc5113f8606d.jpg +0 -0
- data/test/dummy/public/system/images/files/small/3401af18-b401-404f-9bd7-58424fe33e26.jpg +0 -0
- data/test/dummy/public/system/images/files/small/38bcfbac-5b70-4510-a0dd-9296fc22ed0e.jpg +0 -0
- data/test/dummy/public/system/images/files/small/49f59ee9-98cf-4991-8c96-aebef8f34a21.jpg +0 -0
- data/test/dummy/public/system/images/files/small/520dcbea-ce4a-474b-8e42-3b6c947181b3.jpg +0 -0
- data/test/dummy/public/system/images/files/small/5dea55cb-4d09-453c-b9fa-a6783c2b82e6.jpg +0 -0
- data/test/dummy/public/system/images/files/small/5dfc0dc2-909f-4525-9d5a-d04dc9e9f9ac.jpg +0 -0
- data/test/dummy/public/system/images/files/small/6cb55f24-12c1-4019-aa1d-d7d379ffb4b3.jpg +0 -0
- data/test/dummy/public/system/images/files/small/71e117d2-a77a-4daf-a0cc-39c629727b57.jpg +0 -0
- data/test/dummy/public/system/images/files/small/7426b7d6-2950-4064-8bcd-f7d081fbbd27.jpg +0 -0
- data/test/dummy/public/system/images/files/small/88286a62-ef1b-4532-82f4-7a9e72e32f2a.jpg +0 -0
- data/test/dummy/public/system/images/files/small/8daf45e0-c8c2-4768-9536-53b8dc269c14.jpg +0 -0
- data/test/dummy/public/system/images/files/small/970ec9d8-052c-4c7c-b1eb-a163004dcb35.jpg +0 -0
- data/test/dummy/public/system/images/files/small/9a74af84-4e37-451d-abff-84499ca198db.jpg +0 -0
- data/test/dummy/public/system/images/files/small/b784910f-bc64-4bbb-bc4f-77cc5b9faf7e.jpg +0 -0
- data/test/dummy/public/system/images/files/small/c8ec0593-49f5-44c5-957e-ce61a15678c9.jpg +0 -0
- data/test/dummy/public/system/images/files/small/ef58124a-9bd6-4da7-9dcb-a4dfe83e7cc1.jpg +0 -0
- data/test/dummy/public/system/images/files/small/f905a6f3-1626-4a3b-89dd-53f1c1a88379.jpg +0 -0
- data/test/dummy/public/system/images/files/small/fbe00e7d-98d7-4f89-86db-09918fedb9c5.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/04a05143-2ea9-4ee0-bca3-64f436bac3d2.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/187e58dd-d90c-4000-8118-c46da7f1f71f.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/1fd5231d-04d1-4691-bceb-871810ac982b.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/25d98e6f-6419-4bb9-990c-cc5113f8606d.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/3401af18-b401-404f-9bd7-58424fe33e26.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/38bcfbac-5b70-4510-a0dd-9296fc22ed0e.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/49f59ee9-98cf-4991-8c96-aebef8f34a21.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/520dcbea-ce4a-474b-8e42-3b6c947181b3.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/5dea55cb-4d09-453c-b9fa-a6783c2b82e6.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/5dfc0dc2-909f-4525-9d5a-d04dc9e9f9ac.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/6cb55f24-12c1-4019-aa1d-d7d379ffb4b3.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/71e117d2-a77a-4daf-a0cc-39c629727b57.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/7426b7d6-2950-4064-8bcd-f7d081fbbd27.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/88286a62-ef1b-4532-82f4-7a9e72e32f2a.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/8daf45e0-c8c2-4768-9536-53b8dc269c14.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/970ec9d8-052c-4c7c-b1eb-a163004dcb35.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/9a74af84-4e37-451d-abff-84499ca198db.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/b784910f-bc64-4bbb-bc4f-77cc5b9faf7e.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/c8ec0593-49f5-44c5-957e-ce61a15678c9.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/ef58124a-9bd6-4da7-9dcb-a4dfe83e7cc1.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/f905a6f3-1626-4a3b-89dd-53f1c1a88379.jpg +0 -0
- data/test/dummy/public/system/images/files/thumb/fbe00e7d-98d7-4f89-86db-09918fedb9c5.jpg +0 -0
- data/test/dummy/test/controllers/audios_controller_test.rb +5 -5
- data/test/dummy/test/controllers/images_controller_test.rb +5 -5
- data/test/dummy/test/models/audio_test.rb +5 -5
- data/test/dummy/test/models/image_test.rb +5 -5
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_alerts.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_background-variant.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_border-radius.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_buttons.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_center-block.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_clearfix.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_forms.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_gradients.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_grid-framework.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_grid.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_hide-text.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_image.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_labels.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_list-group.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_nav-divider.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_nav-vertical-align.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_opacity.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_pagination.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_panels.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_progress-bar.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_reset-filter.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_resize.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_responsive-visibility.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_size.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_tab-focus.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_table-row.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_text-emphasis.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_text-overflow.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/11e4b32482f2a6837bf1eb6d86d3ed3fb479ba9c/_vendor-prefixes.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/4064a56df5bbb01ee76e4d304234a109a364de14/bootstrap.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_alerts.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_badges.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_breadcrumbs.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_button-groups.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_buttons.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_carousel.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_close.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_code.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_component-animations.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_dropdowns.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_forms.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_glyphicons.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_grid.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_input-groups.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_jumbotron.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_labels.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_list-group.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_media.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_mixins.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_modals.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_navbar.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_navs.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_normalize.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_pager.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_pagination.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_panels.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_popovers.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_print.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_progress-bars.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_responsive-embed.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_responsive-utilities.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_scaffolding.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_tables.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_thumbnails.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_tooltip.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_type.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_utilities.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_variables.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sass/e934b98bab29972344df0ce895ad77edec08210c/_wells.scssc +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/0d3881005b0646df783d5c24683d34f5 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/16d61d604995abc9503196afa7ee8a1a +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/1a6846f0a837ae2524e2f9ec89e6ef43 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/2013f4301be82fc1e4c20d363d5f595a +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/416ba8d8c55d6f42571b681274e22d5d +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/50c1885539f61359c48af74fcae1df31 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/6c3e053393afe303432ca73f1b41490b +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/86e145a39f85cceeaffdff91ebb61449 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/c5880aca76ccbb51f9388362e8afc1e6 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/e69b39cad15408a142ce4b079f08d5c7 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/ea90d3d29d22654f1c3309fdcadb2703 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/fe2a206a96f1e0b21d535fa35ddd5f59 +0 -0
- data/test/test_helper.rb +4 -0
- metadata +550 -2
data/lib/attached/railtie.rb
CHANGED
@@ -2,6 +2,7 @@ require 'attached'
|
|
2
2
|
require 'rails'
|
3
3
|
|
4
4
|
module Attached
|
5
|
+
|
5
6
|
class Railtie < Rails::Railtie
|
6
7
|
|
7
8
|
rake_tasks do
|
@@ -14,5 +15,7 @@ module Attached
|
|
14
15
|
ActiveRecord::ConnectionAdapters::TableDefinition.send :include, Attached::Definition
|
15
16
|
end
|
16
17
|
end
|
18
|
+
|
17
19
|
end
|
18
|
-
|
20
|
+
|
21
|
+
end
|
data/lib/attached/storage.rb
CHANGED
@@ -7,7 +7,6 @@ require 'attached/storage/local'
|
|
7
7
|
module Attached
|
8
8
|
module Storage
|
9
9
|
|
10
|
-
|
11
10
|
# Create a storage object given a medium and credentials.
|
12
11
|
#
|
13
12
|
# Usage:
|
@@ -19,19 +18,16 @@ module Attached
|
|
19
18
|
# Attached::Storage.storage(Attached::Storage::Custom.new)
|
20
19
|
|
21
20
|
def self.storage(storage, credentials)
|
22
|
-
|
23
21
|
return storage if storage.is_a? Attached::Storage::Base
|
24
|
-
|
25
22
|
case storage
|
26
|
-
when :aws
|
27
|
-
when :google
|
23
|
+
when :aws then return Attached::Storage::AWS.new credentials
|
24
|
+
when :google then return Attached::Storage::Google.new credentials
|
28
25
|
when :rackspace then return Attached::Storage::Rackspace.new credentials
|
29
|
-
when :local
|
26
|
+
when :local then return Attached::Storage::Local.new
|
30
27
|
else raise "undefined storage '#{storage}'"
|
31
28
|
end
|
32
|
-
|
33
29
|
end
|
34
30
|
|
35
|
-
|
36
31
|
end
|
37
|
-
|
32
|
+
|
33
|
+
end
|
data/lib/attached/storage/aws.rb
CHANGED
@@ -1,17 +1,14 @@
|
|
1
1
|
require 'attached/storage/fog'
|
2
2
|
require 'fog'
|
3
3
|
|
4
|
-
|
5
4
|
module Attached
|
6
5
|
module Storage
|
7
6
|
class AWS < Fog
|
8
7
|
|
9
|
-
|
10
8
|
attr_reader :bucket
|
11
9
|
attr_reader :access_key_id
|
12
10
|
attr_reader :secret_access_key
|
13
11
|
|
14
|
-
|
15
12
|
# Create a new interface supporting save and destroy operations.
|
16
13
|
#
|
17
14
|
# Usage:
|
@@ -21,17 +18,13 @@ module Attached
|
|
21
18
|
|
22
19
|
def initialize(credentials)
|
23
20
|
super
|
24
|
-
|
25
21
|
credentials = parse(credentials)
|
26
|
-
|
27
22
|
@bucket = credentials[:bucket] || credentials['bucket']
|
28
23
|
@access_key_id = credentials[:access_key_id] || credentials['access_key_id']
|
29
24
|
@secret_access_key = credentials[:secret_access_key] || credentials['secret_access_key']
|
30
|
-
|
31
25
|
raise "'bucket' must be specified if using 'aws' for storage" unless @bucket
|
32
26
|
end
|
33
27
|
|
34
|
-
|
35
28
|
# Access the host (e.g. bucket.s3.amazonaws.com) for a storage service.
|
36
29
|
#
|
37
30
|
# Usage:
|
@@ -42,24 +35,20 @@ module Attached
|
|
42
35
|
"https://#{self.bucket}.s3.amazonaws.com/"
|
43
36
|
end
|
44
37
|
|
45
|
-
|
46
38
|
private
|
47
39
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
end
|
52
|
-
|
40
|
+
def directory()
|
41
|
+
connection.directories.get(self.bucket) || connection.directories.create(self.defaults.merge(key: self.bucket))
|
42
|
+
end
|
53
43
|
|
54
44
|
def connection
|
55
45
|
@connection ||= ::Fog::Storage.new(
|
56
|
-
:
|
57
|
-
:
|
58
|
-
:
|
46
|
+
aws_secret_access_key: self.secret_access_key,
|
47
|
+
aws_access_key_id: self.access_key_id,
|
48
|
+
provider: 'AWS'
|
59
49
|
)
|
60
50
|
end
|
61
51
|
|
62
|
-
|
63
52
|
end
|
64
53
|
end
|
65
54
|
end
|
@@ -2,7 +2,6 @@ module Attached
|
|
2
2
|
module Storage
|
3
3
|
class Base
|
4
4
|
|
5
|
-
|
6
5
|
# Helper for parsing credentials from a hash, file, or string.
|
7
6
|
#
|
8
7
|
# Usage:
|
@@ -20,7 +19,6 @@ module Attached
|
|
20
19
|
end
|
21
20
|
end
|
22
21
|
|
23
|
-
|
24
22
|
# Helper for determining options from a file
|
25
23
|
#
|
26
24
|
# Usage:
|
@@ -32,7 +30,6 @@ module Attached
|
|
32
30
|
|
33
31
|
def options(path)
|
34
32
|
options = {}
|
35
|
-
|
36
33
|
options[:content_type] = case File.extname(path)
|
37
34
|
when /tiff/ then "image/tiff"
|
38
35
|
when /tif/ then "image/tiff"
|
@@ -58,11 +55,9 @@ module Attached
|
|
58
55
|
when /txt/ then "text/plain"
|
59
56
|
when /csv/ then "text/csv"
|
60
57
|
end
|
61
|
-
|
62
58
|
return options
|
63
59
|
end
|
64
60
|
|
65
|
-
|
66
61
|
# Create a new file system storage interface supporting save and destroy operations.
|
67
62
|
#
|
68
63
|
# Usage:
|
@@ -73,7 +68,6 @@ module Attached
|
|
73
68
|
raise NotImplementedError.new
|
74
69
|
end
|
75
70
|
|
76
|
-
|
77
71
|
# Access the host for a storage service or return null if local.
|
78
72
|
#
|
79
73
|
# Usage:
|
@@ -84,7 +78,6 @@ module Attached
|
|
84
78
|
raise NotImplementedError.new
|
85
79
|
end
|
86
80
|
|
87
|
-
|
88
81
|
# Save a file to a given path (abstract).
|
89
82
|
#
|
90
83
|
# Parameters:
|
@@ -96,7 +89,6 @@ module Attached
|
|
96
89
|
raise NotImplementedError.new
|
97
90
|
end
|
98
91
|
|
99
|
-
|
100
92
|
# Retrieve a file from a given path.
|
101
93
|
#
|
102
94
|
# Parameters:
|
@@ -107,7 +99,6 @@ module Attached
|
|
107
99
|
raise NotImplementedError.new
|
108
100
|
end
|
109
101
|
|
110
|
-
|
111
102
|
# Destroy a file at a given path (abstract).
|
112
103
|
#
|
113
104
|
# Parameters:
|
@@ -120,4 +111,4 @@ module Attached
|
|
120
111
|
|
121
112
|
end
|
122
113
|
end
|
123
|
-
end
|
114
|
+
end
|
data/lib/attached/storage/fog.rb
CHANGED
@@ -1,98 +1,74 @@
|
|
1
1
|
require 'attached/storage/base'
|
2
2
|
require 'fog'
|
3
3
|
|
4
|
-
|
5
4
|
module Attached
|
6
5
|
module Storage
|
7
6
|
class Fog < Base
|
8
7
|
|
9
|
-
|
10
8
|
attr_reader :defaults
|
11
9
|
|
12
|
-
attr_reader :bucket
|
13
|
-
attr_reader :access_key_id
|
14
|
-
attr_reader :secret_access_key
|
15
|
-
|
16
|
-
|
17
10
|
# Create a new interface supporting save and destroy operations (should be overridden and called).
|
18
|
-
|
19
11
|
def initialize(credentials)
|
20
|
-
@defaults = { :
|
12
|
+
@defaults = { public: true, metadata: Attached::Attachment.options[:metadata] }
|
21
13
|
end
|
22
14
|
|
23
|
-
|
24
15
|
# Access the host for a storage service (must override).
|
25
16
|
#
|
26
17
|
# Usage:
|
27
18
|
#
|
28
19
|
# storage.host
|
29
|
-
|
30
20
|
def host()
|
31
21
|
raise NotImplementedError.new
|
32
22
|
end
|
33
23
|
|
34
|
-
|
35
24
|
# Save a file to a given path.
|
36
25
|
#
|
37
26
|
# Parameters:
|
38
27
|
#
|
39
28
|
# * file - The file to save.
|
40
29
|
# * path - The path to save.
|
41
|
-
|
42
30
|
def save(file, path)
|
43
31
|
file = File.open(file.path)
|
44
|
-
directory.files.create(self.options(path).merge(self.defaults.merge(:
|
32
|
+
directory.files.create(self.options(path).merge(self.defaults.merge(key: path, body: file)))
|
45
33
|
file.close
|
46
34
|
end
|
47
35
|
|
48
|
-
|
49
36
|
# Retrieve a file from a given path.
|
50
37
|
#
|
51
38
|
# Parameters:
|
52
39
|
#
|
53
40
|
# * path - The path to retrieve.
|
54
|
-
|
55
41
|
def retrieve(path)
|
56
42
|
file = directory.files.get(path)
|
57
|
-
|
58
43
|
body = file.body
|
59
|
-
|
60
44
|
extname = File.extname(path)
|
61
45
|
basename = File.basename(path, extname)
|
62
|
-
|
63
46
|
file = Tempfile.new([basename, extname])
|
64
47
|
file.binmode
|
65
48
|
file.write(body)
|
66
49
|
file.rewind
|
67
|
-
|
68
50
|
file
|
69
51
|
end
|
70
52
|
|
71
|
-
|
72
53
|
# Destroy a file at a given path.
|
73
54
|
#
|
74
55
|
# Parameters:
|
75
56
|
#
|
76
57
|
# * path - The path to destroy.
|
77
|
-
|
78
58
|
def destroy(path)
|
79
59
|
directory.files.get(path).destroy if directory.files.head(path)
|
80
60
|
end
|
81
61
|
|
82
|
-
|
83
62
|
private
|
84
63
|
|
85
|
-
|
86
64
|
def directory
|
87
65
|
raise NotImplementedError.new
|
88
66
|
end
|
89
67
|
|
90
|
-
|
91
68
|
def connection
|
92
69
|
raise NotImplementedError.new
|
93
70
|
end
|
94
71
|
|
95
|
-
|
96
72
|
end
|
97
73
|
end
|
98
74
|
end
|
@@ -1,65 +1,52 @@
|
|
1
1
|
require 'attached/storage/fog'
|
2
2
|
|
3
|
-
|
4
3
|
module Attached
|
5
4
|
module Storage
|
6
5
|
class Google < Fog
|
7
6
|
|
8
|
-
|
9
7
|
attr_reader :bucket
|
10
8
|
attr_reader :access_key_id
|
11
9
|
attr_reader :secret_access_key
|
12
10
|
|
13
|
-
|
14
11
|
# Create a new interface supporting save and destroy operations.
|
15
12
|
#
|
16
13
|
# Usage:
|
17
14
|
#
|
18
15
|
# Attached::Storage::Google.new()
|
19
16
|
# Attached::Storage::Google.new("google.yml")
|
20
|
-
|
21
17
|
def initialize(credentials)
|
22
18
|
super
|
23
|
-
|
24
19
|
credentials = parse(credentials)
|
25
20
|
|
26
|
-
|
27
21
|
@bucket = credentials[:bucket] || credentials['bucket']
|
28
22
|
@access_key_id = credentials[:access_key_id] || credentials['access_key_id']
|
29
23
|
@secret_access_key = credentials[:secret_access_key] || credentials['secret_access_key']
|
30
|
-
|
31
24
|
raise "'bucket' must be specified if using 'google' for storage" unless @bucket
|
32
25
|
end
|
33
26
|
|
34
|
-
|
35
27
|
# Access the host (e.g. https://attached.commondatastorage.googleapis.com/) for a storage service.
|
36
28
|
#
|
37
29
|
# Usage:
|
38
30
|
#
|
39
31
|
# storage.host
|
40
|
-
|
41
32
|
def host()
|
42
33
|
"https://#{self.bucket}.commondatastorage.googleapis.com/"
|
43
34
|
end
|
44
35
|
|
45
|
-
|
46
36
|
private
|
47
37
|
|
48
|
-
|
49
38
|
def directory()
|
50
|
-
connection.directories.get(self.bucket) || connection.directories.create(self.defaults.merge(:
|
39
|
+
connection.directories.get(self.bucket) || connection.directories.create(self.defaults.merge(key: self.bucket))
|
51
40
|
end
|
52
41
|
|
53
|
-
|
54
42
|
def connection
|
55
43
|
@connection ||= ::Fog::Storage.new(
|
56
|
-
:
|
57
|
-
:
|
58
|
-
:
|
44
|
+
google_storage_secret_access_key: self.secret_access_key,
|
45
|
+
google_storage_access_key_id: self.access_key_id,
|
46
|
+
provider: 'Google'
|
59
47
|
)
|
60
48
|
end
|
61
49
|
|
62
|
-
|
63
50
|
end
|
64
51
|
end
|
65
|
-
end
|
52
|
+
end
|
@@ -1,14 +1,11 @@
|
|
1
1
|
require 'attached/storage/base'
|
2
2
|
|
3
|
-
|
4
3
|
module Attached
|
5
4
|
module Storage
|
6
5
|
class Local < Base
|
7
6
|
|
8
|
-
|
9
7
|
attr_reader :mode
|
10
8
|
|
11
|
-
|
12
9
|
# Create a new interface supporting save and destroy operations.
|
13
10
|
#
|
14
11
|
# Usage:
|
@@ -19,7 +16,6 @@ module Attached
|
|
19
16
|
@mode = 0644
|
20
17
|
end
|
21
18
|
|
22
|
-
|
23
19
|
# Access the host (e.g. /system/) for a storage service.
|
24
20
|
#
|
25
21
|
# Usage:
|
@@ -30,7 +26,6 @@ module Attached
|
|
30
26
|
"/system/"
|
31
27
|
end
|
32
28
|
|
33
|
-
|
34
29
|
# Save a file to a given path.
|
35
30
|
#
|
36
31
|
# Parameters:
|
@@ -41,9 +36,7 @@ module Attached
|
|
41
36
|
def save(file, path)
|
42
37
|
path = "#{Rails.root}/public/system/#{path}"
|
43
38
|
dirname, basename = File.split(path)
|
44
|
-
|
45
39
|
return if file.path == path
|
46
|
-
|
47
40
|
begin
|
48
41
|
FileUtils.mkdir_p(dirname)
|
49
42
|
FileUtils.cp(file.path, path)
|
@@ -52,7 +45,6 @@ module Attached
|
|
52
45
|
end
|
53
46
|
end
|
54
47
|
|
55
|
-
|
56
48
|
# Retrieve a file from a given path.
|
57
49
|
#
|
58
50
|
# Parameters:
|
@@ -61,11 +53,9 @@ module Attached
|
|
61
53
|
|
62
54
|
def retrieve(path)
|
63
55
|
path = "#{Rails.root}/public/system/#{path}"
|
64
|
-
|
65
56
|
File.open(path)
|
66
57
|
end
|
67
58
|
|
68
|
-
|
69
59
|
# Destroy a file at a given path.
|
70
60
|
#
|
71
61
|
# Parameters:
|
@@ -75,14 +65,12 @@ module Attached
|
|
75
65
|
def destroy(path)
|
76
66
|
path = "#{Rails.root}/public/system/#{path}"
|
77
67
|
dirname, basename = File.split(path)
|
78
|
-
|
79
68
|
begin
|
80
69
|
FileUtils.rm(path)
|
81
70
|
rescue Errno::ENOENT
|
82
71
|
end
|
83
72
|
end
|
84
73
|
|
85
|
-
|
86
74
|
end
|
87
75
|
end
|
88
|
-
end
|
76
|
+
end
|
@@ -1,17 +1,14 @@
|
|
1
1
|
require 'attached/storage/base'
|
2
2
|
require 'fog'
|
3
3
|
|
4
|
-
|
5
4
|
module Attached
|
6
5
|
module Storage
|
7
6
|
class Rackspace < Fog
|
8
7
|
|
9
|
-
|
10
8
|
attr_reader :container
|
11
9
|
attr_reader :username
|
12
10
|
attr_reader :api_key
|
13
11
|
|
14
|
-
|
15
12
|
# Create a new interface supporting save and destroy operations.
|
16
13
|
#
|
17
14
|
# Usage:
|
@@ -21,17 +18,13 @@ module Attached
|
|
21
18
|
|
22
19
|
def initialize(credentials)
|
23
20
|
super
|
24
|
-
|
25
21
|
credentials = parse(credentials)
|
26
|
-
|
27
22
|
@container = credentials[:container] || credentials['container']
|
28
23
|
@username = credentials[:username] || credentials['username']
|
29
24
|
@api_key = credentials[:api_key] || credentials['api_key']
|
30
|
-
|
31
25
|
raise "'container' must be specified if using 'rackspace' for storage" unless @container
|
32
26
|
end
|
33
27
|
|
34
|
-
|
35
28
|
# Access the host (e.g. https://storage.clouddrive.com/container) for a storage service.
|
36
29
|
#
|
37
30
|
# Usage:
|
@@ -42,24 +35,20 @@ module Attached
|
|
42
35
|
"https://storage.clouddrive.com/#{self.container}/"
|
43
36
|
end
|
44
37
|
|
45
|
-
|
46
38
|
private
|
47
39
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
end
|
52
|
-
|
40
|
+
def directory()
|
41
|
+
connection.directories.get(self.container) || connection.directories.create(self.defaults.merge(key: self.container))
|
42
|
+
end
|
53
43
|
|
54
44
|
def connection
|
55
45
|
@connection ||= ::Fog::Storage.new(
|
56
|
-
:
|
57
|
-
:
|
58
|
-
:
|
46
|
+
rackspace_username: self.username,
|
47
|
+
rackspace_api_key: self.api_key,
|
48
|
+
provider: 'Rackspace'
|
59
49
|
)
|
60
50
|
end
|
61
51
|
|
62
|
-
|
63
52
|
end
|
64
53
|
end
|
65
|
-
end
|
54
|
+
end
|