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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8bc176dbc2ad38b99ab49a128971f1e32103e009
|
4
|
+
data.tar.gz: d56c4292c0979d826074d95546d42a7907edb677
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 862c1a697e68afe188aba95ef8e1b3db5b241f666d2d314630a11b558f0e1f31caf31e6a8b12a7658b9ebbacd75ebc517b1513fa941662a8b4962fe952bdf4f6
|
7
|
+
data.tar.gz: 0426cbf46893ad05460682f7f7153168923409919f26e3e1ca73741dfd11eaf024008b0f9ee736f6823c5bd235e8f9aff452a119c74c98b82833bbc5b062ad10
|
data/README.rdoc
CHANGED
@@ -6,8 +6,8 @@ Attached is a Ruby on Rails file attachment tool that lets users upload to the c
|
|
6
6
|
|
7
7
|
The gem is tested with:
|
8
8
|
|
9
|
-
* Ruby on Rails 4.1.
|
10
|
-
* Ruby on Rails 4.0.
|
9
|
+
* Ruby on Rails 4.1.2
|
10
|
+
* Ruby on Rails 4.0.6
|
11
11
|
* Ruby 2.1.2
|
12
12
|
* Ruby 2.0.0
|
13
13
|
* Ruby 1.9.3
|
@@ -166,9 +166,10 @@ View:
|
|
166
166
|
|
167
167
|
== Status
|
168
168
|
|
169
|
-
{<img src="
|
170
|
-
{<img src="
|
171
|
-
{<img src="
|
169
|
+
{<img src="https://img.shields.io/gemnasium/ksylvest/attached.svg" />}[https://gemnasium.com/ksylvest/attached]
|
170
|
+
{<img src="https://img.shields.io/travis/ksylvest/attached.svg" />}[https://travis-ci.org/ksylvest/attached]
|
171
|
+
{<img src="https://img.shields.io/coveralls/ksylvest/attached.svg" />}[https://coveralls.io/r/ksylvest/attached]
|
172
|
+
{<img src="https://img.shields.io/codeclimate/github/ksylvest/attached.svg" />}[https://codeclimate.com/github/ksylvest/attached]
|
172
173
|
|
173
174
|
== Copyright
|
174
175
|
|
data/Rakefile
CHANGED
data/lib/attached.rb
CHANGED
@@ -1,37 +1,20 @@
|
|
1
|
+
require 'attached/definition'
|
1
2
|
require 'attached/attachment'
|
3
|
+
require 'attached/attatcher'
|
2
4
|
require 'attached/railtie'
|
3
5
|
|
4
|
-
|
5
6
|
module Attached
|
6
7
|
|
7
|
-
|
8
8
|
def self.mock!
|
9
9
|
Fog.mock!
|
10
10
|
end
|
11
11
|
|
12
|
-
|
13
12
|
def self.included(base)
|
14
13
|
base.extend ClassMethods
|
15
|
-
base.class_attribute :attached_options
|
16
|
-
end
|
17
|
-
|
18
|
-
|
19
|
-
module Definition
|
20
|
-
def attachment(*args)
|
21
|
-
options = args.extract_options!
|
22
|
-
|
23
|
-
args.each do |name|
|
24
|
-
column("#{name}_identifier", :string, options)
|
25
|
-
column("#{name}_extension", :string, options)
|
26
|
-
column("#{name}_size", :integer, options)
|
27
|
-
end
|
28
|
-
end
|
29
14
|
end
|
30
15
|
|
31
|
-
|
32
16
|
module ClassMethods
|
33
17
|
|
34
|
-
|
35
18
|
# Add an attachment to a class.
|
36
19
|
#
|
37
20
|
# Options:
|
@@ -43,70 +26,13 @@ module Attached
|
|
43
26
|
# Usage:
|
44
27
|
#
|
45
28
|
# has_attached :video
|
46
|
-
# has_attached :video, :
|
47
|
-
# has_attached :video, styles
|
29
|
+
# has_attached :video, storage: :aws
|
30
|
+
# has_attached :video, styles: { mov: { size: "480p", format: "mov" } }
|
48
31
|
|
49
32
|
def has_attached(name, options = {})
|
50
|
-
|
51
|
-
include InstanceMethods
|
52
|
-
|
53
|
-
self.attached_options ||= {}
|
54
|
-
self.attached_options[name] = options
|
55
|
-
|
56
|
-
before_save :save_attached
|
57
|
-
before_destroy :destroy_attached
|
58
|
-
|
59
|
-
define_method name do
|
60
|
-
attachment_for(name)
|
61
|
-
end
|
62
|
-
|
63
|
-
define_method "#{name}=" do |file|
|
64
|
-
attachment_for(name).assign(file)
|
65
|
-
end
|
66
|
-
|
67
|
-
define_method "#{name}?" do
|
68
|
-
attachment_for(name).attached?
|
69
|
-
end
|
70
|
-
|
71
|
-
define_method "#{name}_url=" do |url|
|
72
|
-
attachment_for(name).url = url
|
73
|
-
end
|
74
|
-
|
75
|
-
validates_each(name) do |record, attr, value|
|
76
|
-
attachment = record.attachment_for(name)
|
77
|
-
attachment.errors.each do |error|
|
78
|
-
record.errors.add(name, error)
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
after_validation do
|
83
|
-
|
84
|
-
if self.errors.include?(:"#{name}_size")
|
85
|
-
self.errors[:"#{name}_size"].each do |message|
|
86
|
-
self.errors.add(name, message)
|
87
|
-
end
|
88
|
-
self.errors[:"#{name}_size"].clear
|
89
|
-
end
|
90
|
-
|
91
|
-
if self.errors.include?(:"#{name}_extension")
|
92
|
-
self.errors[:"#{name}_extension"].each do |message|
|
93
|
-
self.errors.add(name, message)
|
94
|
-
end
|
95
|
-
self.errors[:"#{name}_extension"].clear
|
96
|
-
end
|
97
|
-
|
98
|
-
if self.errors.include?(:"#{name}_identifier")
|
99
|
-
self.errors[:"#{name}_identifier"].each do |message|
|
100
|
-
self.errors.add(name, message)
|
101
|
-
end
|
102
|
-
self.errors[:"#{name}_identifier"].clear
|
103
|
-
end
|
104
|
-
|
105
|
-
end
|
106
|
-
|
33
|
+
Attatcher.define(self, name, options)
|
107
34
|
end
|
108
35
|
|
109
|
-
|
110
36
|
# Validates an attached size in a specified range or minimum and maximum.
|
111
37
|
#
|
112
38
|
# Options:
|
@@ -118,9 +44,9 @@ module Attached
|
|
118
44
|
#
|
119
45
|
# Usage:
|
120
46
|
#
|
121
|
-
# validates_attached_size :avatar, :
|
122
|
-
# validates_attached_size :avatar, :
|
123
|
-
# validates_attached_size :avatar, :
|
47
|
+
# validates_attached_size :avatar, range: 10.megabytes .. 20.megabytes
|
48
|
+
# validates_attached_size :avatar, minimum: 10.megabytes, maximum: 20.megabytes
|
49
|
+
# validates_attached_size :avatar, message: "size must be between :minimum and :maximum bytes"
|
124
50
|
|
125
51
|
def validates_attached_size(name, options = {})
|
126
52
|
|
@@ -141,12 +67,11 @@ module Attached
|
|
141
67
|
message.gsub!(/:minimum/, number_to_size(minimum)) unless minimum == zero
|
142
68
|
message.gsub!(/:maximum/, number_to_size(maximum)) unless maximum == infi
|
143
69
|
|
144
|
-
validates_inclusion_of :"#{name}_size", :
|
145
|
-
:
|
70
|
+
validates_inclusion_of :"#{name}_size", in: range, message: message,
|
71
|
+
if: options[:if], unless: options[:unless]
|
146
72
|
|
147
73
|
end
|
148
74
|
|
149
|
-
|
150
75
|
# Validates an attached extension in a specified set.
|
151
76
|
#
|
152
77
|
# Options:
|
@@ -155,11 +80,11 @@ module Attached
|
|
155
80
|
#
|
156
81
|
# Usage:
|
157
82
|
#
|
158
|
-
# validates_attached_extension :avatar, :
|
159
|
-
# validates_attached_extension :avatar, :
|
160
|
-
# validates_attached_extension :avatar, :
|
161
|
-
# validates_attached_extension :avatar, :
|
162
|
-
# validates_attached_extension :avatar, :
|
83
|
+
# validates_attached_extension :avatar, is: 'png'
|
84
|
+
# validates_attached_extension :avatar, in: %w(png jpg)
|
85
|
+
# validates_attached_extension :avatar, in: [:png, :jpg]
|
86
|
+
# validates_attached_extension :avatar, in: %w(png jpg), message: "extension must be :in"
|
87
|
+
# validates_attached_extension :avatar, in: %w(png jpg), message: "extension must be :in"
|
163
88
|
|
164
89
|
def validates_attached_extension(name, options = {})
|
165
90
|
|
@@ -170,11 +95,10 @@ module Attached
|
|
170
95
|
|
171
96
|
range = options[:in].map { |element| ".#{element}" }
|
172
97
|
|
173
|
-
validates_inclusion_of :"#{name}_extension", :
|
174
|
-
:
|
98
|
+
validates_inclusion_of :"#{name}_extension", in: range, message: message,
|
99
|
+
if: options[:if], unless: options[:unless]
|
175
100
|
end
|
176
101
|
|
177
|
-
|
178
102
|
# Validates that an attachment is included.
|
179
103
|
#
|
180
104
|
# Options:
|
@@ -184,22 +108,20 @@ module Attached
|
|
184
108
|
# Usage:
|
185
109
|
#
|
186
110
|
# validates_attached_presence :avatar
|
187
|
-
# validates_attached_presence :avatar, :
|
111
|
+
# validates_attached_presence :avatar, message: "must be attached"
|
188
112
|
|
189
113
|
def validates_attached_presence(name, options = {})
|
190
114
|
|
191
115
|
message = options[:message]
|
192
116
|
message ||= "must be attached"
|
193
117
|
|
194
|
-
validates_presence_of :"#{name}_identifier", :
|
195
|
-
:
|
118
|
+
validates_presence_of :"#{name}_identifier", message: message,
|
119
|
+
if: options[:if], unless: options[:unless]
|
196
120
|
|
197
121
|
end
|
198
122
|
|
199
|
-
|
200
123
|
private
|
201
124
|
|
202
|
-
|
203
125
|
# Convert a number to a human readable size.
|
204
126
|
#
|
205
127
|
# Usage:
|
@@ -213,9 +135,9 @@ module Attached
|
|
213
135
|
return if number == 0.0 / 1.0
|
214
136
|
return if number == 1.0 / 0.0
|
215
137
|
|
216
|
-
singular = options[
|
217
|
-
base = options[
|
218
|
-
units = options[
|
138
|
+
singular = options[:singular] || 1
|
139
|
+
base = options[:base] || 1024
|
140
|
+
units = options[:units] || ["byte", "kilobyte", "megabyte", "gigabyte", "terabyte", "petabyte"]
|
219
141
|
|
220
142
|
exponent = (Math.log(number) / Math.log(base)).floor
|
221
143
|
|
@@ -227,56 +149,6 @@ module Attached
|
|
227
149
|
"#{number} #{unit}"
|
228
150
|
end
|
229
151
|
|
230
|
-
|
231
152
|
end
|
232
153
|
|
233
|
-
|
234
|
-
module InstanceMethods
|
235
|
-
|
236
|
-
|
237
|
-
# Create or access attachment.
|
238
|
-
#
|
239
|
-
# Usage:
|
240
|
-
#
|
241
|
-
# attachment_for :avatar
|
242
|
-
|
243
|
-
def attachment_for(name)
|
244
|
-
@_attached_attachments ||= {}
|
245
|
-
@_attached_attachments[name] ||= Attachment.new(name, self, self.class.attached_options[name])
|
246
|
-
end
|
247
|
-
|
248
|
-
|
249
|
-
# Log and save all attached (using specified storage).
|
250
|
-
#
|
251
|
-
# Usage:
|
252
|
-
#
|
253
|
-
# before_save :save_attached
|
254
|
-
|
255
|
-
def save_attached
|
256
|
-
logger.info "[attached] save attached"
|
257
|
-
|
258
|
-
self.class.attached_options.each do |name, options|
|
259
|
-
attachment_for(name).save
|
260
|
-
end
|
261
|
-
end
|
262
|
-
|
263
|
-
|
264
|
-
# Log and destroy all attached (using specified storage).
|
265
|
-
#
|
266
|
-
# Usage:
|
267
|
-
#
|
268
|
-
# before_save :destroy_attached
|
269
|
-
|
270
|
-
def destroy_attached
|
271
|
-
logger.info "[attached] destroy attached"
|
272
|
-
|
273
|
-
self.class.attached_options.each do |name, options|
|
274
|
-
attachment_for(name).destroy
|
275
|
-
end
|
276
|
-
end
|
277
|
-
|
278
|
-
|
279
|
-
end
|
280
|
-
|
281
|
-
|
282
154
|
end
|
data/lib/attached/attachment.rb
CHANGED
@@ -1,18 +1,13 @@
|
|
1
1
|
require 'open-uri'
|
2
|
-
|
3
2
|
require 'identifier'
|
4
|
-
|
5
3
|
require 'attached/storage'
|
6
4
|
require 'attached/storage/error'
|
7
|
-
|
8
5
|
require 'attached/processor'
|
9
6
|
require 'attached/processor/error'
|
10
7
|
|
11
8
|
module Attached
|
12
|
-
|
13
9
|
class Attachment
|
14
10
|
|
15
|
-
|
16
11
|
attr_reader :file
|
17
12
|
attr_reader :name
|
18
13
|
attr_reader :instance
|
@@ -33,25 +28,23 @@ module Attached
|
|
33
28
|
attr_reader :storage
|
34
29
|
attr_reader :host
|
35
30
|
|
36
|
-
|
37
31
|
# A default set of options that can be extended to customize the path, storage or credentials.
|
38
32
|
#
|
39
33
|
# Usage:
|
40
34
|
#
|
41
|
-
# Attached::Attachment.options = { :
|
35
|
+
# Attached::Attachment.options = { storage: :fs, path: ":name/:style/:identifier:extension" }
|
42
36
|
|
43
37
|
def self.options
|
44
38
|
@options ||= {
|
45
|
-
:
|
46
|
-
:
|
47
|
-
:
|
48
|
-
:
|
49
|
-
:
|
50
|
-
:
|
39
|
+
path: ":name/:style/:identifier:extension",
|
40
|
+
missing: ":name/:style/missing:extension",
|
41
|
+
default: :original,
|
42
|
+
medium: :local,
|
43
|
+
credentials: {},
|
44
|
+
metadata: { 'Cache-Control' => 'max-age=3153600' }
|
51
45
|
}
|
52
46
|
end
|
53
47
|
|
54
|
-
|
55
48
|
# Initialize a new attachment by providing a name and the instance the attachment is associated with.
|
56
49
|
#
|
57
50
|
# Parameters:
|
@@ -71,7 +64,7 @@ module Attached
|
|
71
64
|
# * :aliases - An array of aliases
|
72
65
|
|
73
66
|
def initialize(name, instance, options = {})
|
74
|
-
options
|
67
|
+
options = self.class.options.clone.merge(options)
|
75
68
|
|
76
69
|
options[:styles] ||= {}
|
77
70
|
options[:aliases] ||= []
|
@@ -79,11 +72,9 @@ module Attached
|
|
79
72
|
|
80
73
|
@name = name
|
81
74
|
@instance = instance
|
82
|
-
|
83
75
|
@queue = {}
|
84
76
|
@purge = []
|
85
77
|
@errors = []
|
86
|
-
|
87
78
|
@path = options[:path]
|
88
79
|
@missing = options[:missing]
|
89
80
|
@styles = options[:styles]
|
@@ -95,16 +86,12 @@ module Attached
|
|
95
86
|
@processor = options[:processor]
|
96
87
|
@aliases = options[:aliases]
|
97
88
|
@alias = options[:alias]
|
98
|
-
|
99
89
|
@aliases = self.aliases << self.alias if self.alias
|
100
90
|
@processors = self.processors << self.processor if self.processor
|
101
|
-
|
102
91
|
@storage = Attached::Storage.storage(self.medium, self.credentials)
|
103
|
-
|
104
92
|
@host = self.storage.host
|
105
93
|
end
|
106
94
|
|
107
|
-
|
108
95
|
# Check if an attachment has been modified.
|
109
96
|
#
|
110
97
|
# Usage:
|
@@ -115,7 +102,6 @@ module Attached
|
|
115
102
|
instance.changed.include? "#{name}_identifier"
|
116
103
|
end
|
117
104
|
|
118
|
-
|
119
105
|
# Check if an attachment is present.
|
120
106
|
#
|
121
107
|
# Usage:
|
@@ -126,7 +112,6 @@ module Attached
|
|
126
112
|
not identifier.blank?
|
127
113
|
end
|
128
114
|
|
129
|
-
|
130
115
|
# Check if an attachment is present.
|
131
116
|
#
|
132
117
|
# Usage:
|
@@ -137,7 +122,6 @@ module Attached
|
|
137
122
|
not identifier.blank?
|
138
123
|
end
|
139
124
|
|
140
|
-
|
141
125
|
# Custom setter for specifying an attachment.
|
142
126
|
#
|
143
127
|
# Usage:
|
@@ -148,7 +132,6 @@ module Attached
|
|
148
132
|
@file = file.respond_to?(:tempfile) ? file.tempfile : file
|
149
133
|
end
|
150
134
|
|
151
|
-
|
152
135
|
# Assign an attachment to a file.
|
153
136
|
#
|
154
137
|
# Usage:
|
@@ -162,7 +145,6 @@ module Attached
|
|
162
145
|
extension ||= file.extension if file.respond_to? :extension
|
163
146
|
extension ||= File.extname(file.original_filename) if file.respond_to? :original_filename
|
164
147
|
extension ||= File.extname(file.path) if file.respond_to? :path
|
165
|
-
|
166
148
|
size ||= file.size if file.respond_to? :size
|
167
149
|
size ||= File.size(file.path) if file.respond_to? :path
|
168
150
|
end
|
@@ -176,7 +158,6 @@ module Attached
|
|
176
158
|
process if file
|
177
159
|
end
|
178
160
|
|
179
|
-
|
180
161
|
# Assign an attachment to a file.
|
181
162
|
#
|
182
163
|
# Usage:
|
@@ -185,16 +166,12 @@ module Attached
|
|
185
166
|
|
186
167
|
def url=(url)
|
187
168
|
extension = File.extname(url)
|
188
|
-
|
189
169
|
file = Tempfile.new(["", extension])
|
190
170
|
file.binmode
|
191
|
-
|
192
171
|
file << open(url).read
|
193
|
-
|
194
172
|
self.assign(file)
|
195
173
|
end
|
196
174
|
|
197
|
-
|
198
175
|
# Save an attachment.
|
199
176
|
#
|
200
177
|
# Usage:
|
@@ -206,16 +183,13 @@ module Attached
|
|
206
183
|
path = self.path(style)
|
207
184
|
self.storage.save(file, path) if file and path
|
208
185
|
end
|
209
|
-
|
210
186
|
self.purge.each do |path|
|
211
187
|
self.storage.destroy(path)
|
212
188
|
end
|
213
|
-
|
214
189
|
@purge = []
|
215
190
|
@queue = {}
|
216
191
|
end
|
217
192
|
|
218
|
-
|
219
193
|
# Destroy an attachment.
|
220
194
|
#
|
221
195
|
# Usage:
|
@@ -229,12 +203,10 @@ module Attached
|
|
229
203
|
self.storage.destroy(self.path(style))
|
230
204
|
end
|
231
205
|
end
|
232
|
-
|
233
206
|
@purge = []
|
234
207
|
@queue = {}
|
235
208
|
end
|
236
209
|
|
237
|
-
|
238
210
|
# Acesss the URL for an attachment.
|
239
211
|
#
|
240
212
|
# Usage:
|
@@ -245,14 +217,11 @@ module Attached
|
|
245
217
|
|
246
218
|
def url(style = self.default)
|
247
219
|
path = self.path(style)
|
248
|
-
|
249
220
|
host = self.host
|
250
221
|
host = self.aliases[path.hash % self.aliases.count] unless self.aliases.empty?
|
251
|
-
|
252
222
|
return "#{host}#{path}"
|
253
223
|
end
|
254
224
|
|
255
|
-
|
256
225
|
# Access the path for an attachment.
|
257
226
|
#
|
258
227
|
# Usage:
|
@@ -263,16 +232,13 @@ module Attached
|
|
263
232
|
|
264
233
|
def path(style = self.default)
|
265
234
|
path = self.attached? ? @path.clone : @missing.clone
|
266
|
-
|
267
235
|
path.gsub!(/:name/, name.to_s)
|
268
236
|
path.gsub!(/:style/, style.to_s)
|
269
237
|
path.gsub!(/:extension/, extension(style).to_s)
|
270
238
|
path.gsub!(/:identifier/, identifier(style).to_s)
|
271
|
-
|
272
239
|
return path
|
273
240
|
end
|
274
241
|
|
275
|
-
|
276
242
|
# Access the size for an attachment.
|
277
243
|
#
|
278
244
|
# Usage:
|
@@ -283,7 +249,6 @@ module Attached
|
|
283
249
|
return instance_get(:size)
|
284
250
|
end
|
285
251
|
|
286
|
-
|
287
252
|
# Access the status for an attachment.
|
288
253
|
#
|
289
254
|
# Usage:
|
@@ -294,7 +259,6 @@ module Attached
|
|
294
259
|
instance_get(:status)
|
295
260
|
end
|
296
261
|
|
297
|
-
|
298
262
|
# Access the extension for an attachment. It will first check the styles
|
299
263
|
# to see if one is specified before checking the instance.
|
300
264
|
#
|
@@ -310,7 +274,6 @@ module Attached
|
|
310
274
|
instance_get(:extension)
|
311
275
|
end
|
312
276
|
|
313
|
-
|
314
277
|
# Access the identifier for an attachment. It will first check the styles
|
315
278
|
# to see if one is specified before checking the instance.
|
316
279
|
#
|
@@ -326,7 +289,6 @@ module Attached
|
|
326
289
|
instance_get(:identifier)
|
327
290
|
end
|
328
291
|
|
329
|
-
|
330
292
|
# Set the size for an attachment.
|
331
293
|
#
|
332
294
|
# Usage:
|
@@ -337,7 +299,6 @@ module Attached
|
|
337
299
|
instance_set(:size, size)
|
338
300
|
end
|
339
301
|
|
340
|
-
|
341
302
|
# Set the status for an attachment.
|
342
303
|
#
|
343
304
|
# Usage:
|
@@ -348,7 +309,6 @@ module Attached
|
|
348
309
|
instance_set(:size, status)
|
349
310
|
end
|
350
311
|
|
351
|
-
|
352
312
|
# Set the extension for an attachment. It will act independently of the
|
353
313
|
# defined style.
|
354
314
|
#
|
@@ -360,7 +320,6 @@ module Attached
|
|
360
320
|
instance_set(:extension, extension)
|
361
321
|
end
|
362
322
|
|
363
|
-
|
364
323
|
# Set the identifier for an attachment. It will act independently of the
|
365
324
|
# defined style.
|
366
325
|
#
|
@@ -372,19 +331,15 @@ module Attached
|
|
372
331
|
instance_set(:identifier, identifier)
|
373
332
|
end
|
374
333
|
|
375
|
-
|
376
334
|
# Access the original file .
|
377
335
|
|
378
336
|
def reprocess!
|
379
337
|
self.file = self.storage.retrieve(self.path)
|
380
|
-
|
381
338
|
process
|
382
339
|
end
|
383
340
|
|
384
|
-
|
385
341
|
private
|
386
342
|
|
387
|
-
|
388
343
|
# Helper function for calling processors (will queue default).
|
389
344
|
#
|
390
345
|
# Usage:
|
@@ -393,22 +348,18 @@ module Attached
|
|
393
348
|
|
394
349
|
def process
|
395
350
|
self.queue[self.default] = self.file
|
396
|
-
|
397
351
|
begin
|
398
|
-
|
399
352
|
self.processors.each do |processor|
|
400
353
|
processor = Attached::Processor.processor(processor)
|
401
354
|
self.styles.each do |style, options|
|
402
355
|
self.queue[style] = processor.process(self.queue[style] || self.file, options, self)
|
403
356
|
end
|
404
357
|
end
|
405
|
-
|
406
358
|
rescue Attached::Processor::Error => error
|
407
359
|
self.errors << error.message
|
408
360
|
end
|
409
361
|
end
|
410
362
|
|
411
|
-
|
412
363
|
# Helper function for setting instance variables.
|
413
364
|
#
|
414
365
|
# Usage:
|
@@ -420,7 +371,6 @@ module Attached
|
|
420
371
|
self.instance.send(setter, value) if instance.respond_to?(setter)
|
421
372
|
end
|
422
373
|
|
423
|
-
|
424
374
|
# Helper function for getting instance variables.
|
425
375
|
#
|
426
376
|
# Usage:
|
@@ -432,7 +382,5 @@ module Attached
|
|
432
382
|
self.instance.send(getter) if instance.respond_to?(getter)
|
433
383
|
end
|
434
384
|
|
435
|
-
|
436
385
|
end
|
437
|
-
|
438
386
|
end
|