fog-dragonfly 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of fog-dragonfly might be problematic. Click here for more details.
- data/.specopts +2 -0
- data/.yardopts +23 -0
- data/Gemfile +23 -0
- data/Gemfile.rails.2.3.5 +14 -0
- data/History.md +266 -0
- data/LICENSE +20 -0
- data/README.md +88 -0
- data/Rakefile +92 -0
- data/VERSION +1 -0
- data/config.ru +13 -0
- data/docs.watchr +1 -0
- data/dragonfly.gemspec +293 -0
- data/extra_docs/Analysers.md +108 -0
- data/extra_docs/Caching.md +23 -0
- data/extra_docs/Configuration.md +138 -0
- data/extra_docs/DataStorage.md +136 -0
- data/extra_docs/Encoding.md +96 -0
- data/extra_docs/GeneralUsage.md +121 -0
- data/extra_docs/Generators.md +102 -0
- data/extra_docs/Heroku.md +50 -0
- data/extra_docs/Index.md +36 -0
- data/extra_docs/MimeTypes.md +40 -0
- data/extra_docs/Models.md +266 -0
- data/extra_docs/Mongo.md +45 -0
- data/extra_docs/Processing.md +130 -0
- data/extra_docs/Rack.md +52 -0
- data/extra_docs/Rails2.md +55 -0
- data/extra_docs/Rails3.md +62 -0
- data/extra_docs/Sinatra.md +25 -0
- data/extra_docs/URLs.md +169 -0
- data/features/3.0.3.feature +8 -0
- data/features/images.feature +47 -0
- data/features/no_processing.feature +14 -0
- data/features/rails_2.3.5.feature +7 -0
- data/features/steps/common_steps.rb +8 -0
- data/features/steps/dragonfly_steps.rb +66 -0
- data/features/steps/rails_steps.rb +39 -0
- data/features/support/env.rb +40 -0
- data/fixtures/files/app/models/album.rb +3 -0
- data/fixtures/files/app/views/albums/new.html.erb +4 -0
- data/fixtures/files/app/views/albums/show.html.erb +4 -0
- data/fixtures/files/config/initializers/dragonfly.rb +4 -0
- data/fixtures/files/features/manage_album_images.feature +12 -0
- data/fixtures/files/features/step_definitions/image_steps.rb +15 -0
- data/fixtures/files/features/support/paths.rb +15 -0
- data/fixtures/files/features/text_images.feature +7 -0
- data/fixtures/rails_2.3.5/template.rb +10 -0
- data/fixtures/rails_3.0.3/template.rb +20 -0
- data/irbrc.rb +17 -0
- data/lib/dragonfly.rb +45 -0
- data/lib/dragonfly/active_model_extensions.rb +13 -0
- data/lib/dragonfly/active_model_extensions/attachment.rb +169 -0
- data/lib/dragonfly/active_model_extensions/class_methods.rb +45 -0
- data/lib/dragonfly/active_model_extensions/instance_methods.rb +28 -0
- data/lib/dragonfly/active_model_extensions/validations.rb +37 -0
- data/lib/dragonfly/analyser.rb +59 -0
- data/lib/dragonfly/analysis/file_command_analyser.rb +32 -0
- data/lib/dragonfly/analysis/image_magick_analyser.rb +47 -0
- data/lib/dragonfly/analysis/r_magick_analyser.rb +63 -0
- data/lib/dragonfly/app.rb +182 -0
- data/lib/dragonfly/config/heroku.rb +19 -0
- data/lib/dragonfly/config/image_magick.rb +41 -0
- data/lib/dragonfly/config/r_magick.rb +46 -0
- data/lib/dragonfly/config/rails.rb +17 -0
- data/lib/dragonfly/configurable.rb +119 -0
- data/lib/dragonfly/core_ext/object.rb +8 -0
- data/lib/dragonfly/core_ext/string.rb +9 -0
- data/lib/dragonfly/core_ext/symbol.rb +9 -0
- data/lib/dragonfly/data_storage.rb +9 -0
- data/lib/dragonfly/data_storage/file_data_store.rb +114 -0
- data/lib/dragonfly/data_storage/mongo_data_store.rb +82 -0
- data/lib/dragonfly/data_storage/s3data_store.rb +115 -0
- data/lib/dragonfly/encoder.rb +13 -0
- data/lib/dragonfly/encoding/image_magick_encoder.rb +57 -0
- data/lib/dragonfly/encoding/r_magick_encoder.rb +61 -0
- data/lib/dragonfly/function_manager.rb +69 -0
- data/lib/dragonfly/generation/hash_with_css_style_keys.rb +23 -0
- data/lib/dragonfly/generation/image_magick_generator.rb +140 -0
- data/lib/dragonfly/generation/r_magick_generator.rb +155 -0
- data/lib/dragonfly/generator.rb +9 -0
- data/lib/dragonfly/image_magick_utils.rb +81 -0
- data/lib/dragonfly/job.rb +371 -0
- data/lib/dragonfly/job_builder.rb +39 -0
- data/lib/dragonfly/job_definitions.rb +26 -0
- data/lib/dragonfly/job_endpoint.rb +15 -0
- data/lib/dragonfly/loggable.rb +28 -0
- data/lib/dragonfly/middleware.rb +34 -0
- data/lib/dragonfly/processing/image_magick_processor.rb +99 -0
- data/lib/dragonfly/processing/r_magick_processor.rb +126 -0
- data/lib/dragonfly/processor.rb +9 -0
- data/lib/dragonfly/r_magick_utils.rb +48 -0
- data/lib/dragonfly/rails/images.rb +22 -0
- data/lib/dragonfly/response.rb +82 -0
- data/lib/dragonfly/routed_endpoint.rb +40 -0
- data/lib/dragonfly/serializer.rb +32 -0
- data/lib/dragonfly/simple_cache.rb +23 -0
- data/lib/dragonfly/simple_endpoint.rb +63 -0
- data/lib/dragonfly/temp_object.rb +220 -0
- data/samples/beach.png +0 -0
- data/samples/egg.png +0 -0
- data/samples/round.gif +0 -0
- data/samples/sample.docx +0 -0
- data/samples/taj.jpg +0 -0
- data/spec/argument_matchers.rb +19 -0
- data/spec/dragonfly/active_model_extensions/active_model_setup.rb +97 -0
- data/spec/dragonfly/active_model_extensions/active_record_setup.rb +85 -0
- data/spec/dragonfly/active_model_extensions/model_spec.rb +723 -0
- data/spec/dragonfly/active_model_extensions/spec_helper.rb +11 -0
- data/spec/dragonfly/analyser_spec.rb +123 -0
- data/spec/dragonfly/analysis/file_command_analyser_spec.rb +57 -0
- data/spec/dragonfly/analysis/image_magick_analyser_spec.rb +15 -0
- data/spec/dragonfly/analysis/r_magick_analyser_spec.rb +27 -0
- data/spec/dragonfly/analysis/shared_analyser_spec.rb +51 -0
- data/spec/dragonfly/app_spec.rb +280 -0
- data/spec/dragonfly/config/r_magick_spec.rb +25 -0
- data/spec/dragonfly/configurable_spec.rb +220 -0
- data/spec/dragonfly/core_ext/string_spec.rb +17 -0
- data/spec/dragonfly/core_ext/symbol_spec.rb +17 -0
- data/spec/dragonfly/data_storage/data_store_spec.rb +76 -0
- data/spec/dragonfly/data_storage/file_data_store_spec.rb +169 -0
- data/spec/dragonfly/data_storage/mongo_data_store_spec.rb +38 -0
- data/spec/dragonfly/data_storage/s3_data_store_spec.rb +94 -0
- data/spec/dragonfly/deprecation_spec.rb +20 -0
- data/spec/dragonfly/encoding/image_magick_encoder_spec.rb +41 -0
- data/spec/dragonfly/encoding/r_magick_encoder_spec.rb +37 -0
- data/spec/dragonfly/function_manager_spec.rb +154 -0
- data/spec/dragonfly/generation/hash_with_css_style_keys_spec.rb +24 -0
- data/spec/dragonfly/generation/image_magick_generator_spec.rb +12 -0
- data/spec/dragonfly/generation/r_magick_generator_spec.rb +24 -0
- data/spec/dragonfly/generation/shared_generator_spec.rb +91 -0
- data/spec/dragonfly/image_magick_utils_spec.rb +16 -0
- data/spec/dragonfly/job_builder_spec.rb +37 -0
- data/spec/dragonfly/job_definitions_spec.rb +35 -0
- data/spec/dragonfly/job_endpoint_spec.rb +120 -0
- data/spec/dragonfly/job_spec.rb +773 -0
- data/spec/dragonfly/loggable_spec.rb +80 -0
- data/spec/dragonfly/middleware_spec.rb +68 -0
- data/spec/dragonfly/processing/image_magick_processor_spec.rb +29 -0
- data/spec/dragonfly/processing/r_magick_processor_spec.rb +26 -0
- data/spec/dragonfly/processing/shared_processing_spec.rb +215 -0
- data/spec/dragonfly/routed_endpoint_spec.rb +48 -0
- data/spec/dragonfly/serializer_spec.rb +61 -0
- data/spec/dragonfly/simple_cache_spec.rb +27 -0
- data/spec/dragonfly/simple_endpoint_spec.rb +89 -0
- data/spec/dragonfly/temp_object_spec.rb +352 -0
- data/spec/image_matchers.rb +47 -0
- data/spec/simple_matchers.rb +44 -0
- data/spec/spec_helper.rb +58 -0
- data/yard/handlers/configurable_attr_handler.rb +38 -0
- data/yard/setup.rb +15 -0
- data/yard/templates/default/fulldoc/html/css/common.css +107 -0
- data/yard/templates/default/layout/html/layout.erb +87 -0
- data/yard/templates/default/module/html/configuration_summary.erb +31 -0
- data/yard/templates/default/module/setup.rb +17 -0
- metadata +550 -0
data/.specopts
ADDED
data/.yardopts
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
--main extra_docs/Index.md
|
2
|
+
-e yard/setup.rb
|
3
|
+
-
|
4
|
+
README.md
|
5
|
+
extra_docs/GeneralUsage.md
|
6
|
+
extra_docs/Rails2.md
|
7
|
+
extra_docs/Rails3.md
|
8
|
+
extra_docs/Rack.md
|
9
|
+
extra_docs/Sinatra.md
|
10
|
+
extra_docs/Heroku.md
|
11
|
+
extra_docs/Mongo.md
|
12
|
+
extra_docs/Models.md
|
13
|
+
extra_docs/DataStorage.md
|
14
|
+
extra_docs/Analysers.md
|
15
|
+
extra_docs/Processing.md
|
16
|
+
extra_docs/Encoding.md
|
17
|
+
extra_docs/Generators.md
|
18
|
+
extra_docs/Configuration.md
|
19
|
+
extra_docs/URLs.md
|
20
|
+
extra_docs/Caching.md
|
21
|
+
extra_docs/MimeTypes.md
|
22
|
+
LICENSE
|
23
|
+
History.md
|
data/Gemfile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
source :rubygems
|
2
|
+
|
3
|
+
# These gems are needed for development and testing
|
4
|
+
group :development, :test, :cucumber do
|
5
|
+
gem 'fog'
|
6
|
+
gem 'bson_ext'
|
7
|
+
gem 'capybara'
|
8
|
+
gem 'cucumber', '0.8.5'
|
9
|
+
gem 'cucumber-rails'
|
10
|
+
gem 'database_cleaner', '>= 0.5.0'
|
11
|
+
gem 'jeweler', '~> 1.4'
|
12
|
+
gem 'gherkin', '2.1.4' # 2.1.5 seems to segfault on Ruby 1.9.2
|
13
|
+
gem 'mongo'
|
14
|
+
gem 'nokogiri', '1.5.0.beta.2' # 1.4.3.1 segfaults on Ruby 1.9.2
|
15
|
+
gem 'rack', '~>1.1'
|
16
|
+
gem 'rack-cache'
|
17
|
+
gem 'rails', '3.0.3', :require => nil
|
18
|
+
gem 'rake'
|
19
|
+
gem 'rmagick', '2.12.2', :require => nil
|
20
|
+
gem 'rspec', '~> 1.3'
|
21
|
+
gem 'sqlite3-ruby', '1.3.0' # 1.3.1 segfaults on Ruby 1.9.2
|
22
|
+
gem 'yard'
|
23
|
+
end
|
data/Gemfile.rails.2.3.5
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
source :rubygems
|
2
|
+
|
3
|
+
group :development, :test, :cucumber do
|
4
|
+
gem 'capybara'
|
5
|
+
gem 'cucumber', '0.8.5'
|
6
|
+
gem 'cucumber-rails'
|
7
|
+
gem 'database_cleaner', '>= 0.5.0'
|
8
|
+
gem 'gherkin', '2.1.4'
|
9
|
+
gem 'nokogiri', '1.5.0.beta.2'
|
10
|
+
gem 'rack-cache', :require => nil
|
11
|
+
gem 'rails', '2.3.5', :require => nil
|
12
|
+
gem 'rspec', '~> 1.3'
|
13
|
+
gem 'sqlite3-ruby', '1.3.0'
|
14
|
+
end
|
data/History.md
ADDED
@@ -0,0 +1,266 @@
|
|
1
|
+
0.8.1 (2010-11-22)
|
2
|
+
==================
|
3
|
+
Fixes
|
4
|
+
-----
|
5
|
+
Removed runtime dependencies that Jeweler automatically takes from the Gemfile
|
6
|
+
|
7
|
+
0.8.0 (2010-11-21)
|
8
|
+
==================
|
9
|
+
Features
|
10
|
+
--------
|
11
|
+
- New ImageMagick generator, processor, encoder and analyser, which are now defaults
|
12
|
+
(thanks to Henry Phan for work on this)
|
13
|
+
|
14
|
+
Fixes
|
15
|
+
-----
|
16
|
+
- Works with Rails 3.0.2 uploaded files (which has a changed API)
|
17
|
+
|
18
|
+
|
19
|
+
0.7.7 (2010-10-31)
|
20
|
+
==================
|
21
|
+
Features
|
22
|
+
--------
|
23
|
+
- Added username/password authentication to mongo data store
|
24
|
+
|
25
|
+
Fixes
|
26
|
+
-----
|
27
|
+
- Fixes for Windows, inc. tempfile binmode and closing files
|
28
|
+
- "IOError: closed stream" fix (hopefully!)
|
29
|
+
|
30
|
+
|
31
|
+
0.7.6 (2010-09-12)
|
32
|
+
==================
|
33
|
+
Features
|
34
|
+
--------
|
35
|
+
- Added methods for querying job steps, and Job#uid, Job#uid_basename, etc.
|
36
|
+
- Added Job#b64_data
|
37
|
+
- Added configurable url_suffix
|
38
|
+
- Added configurable content_disposition and content_filename
|
39
|
+
- Can pass extra GET params to url_for
|
40
|
+
- Can manually set uid on FileDataStore and S3DataStore
|
41
|
+
(not yet documented because attachments have no way to pass it on yet)
|
42
|
+
- Model attachments store meta info about themselves
|
43
|
+
|
44
|
+
Changes
|
45
|
+
-------
|
46
|
+
- Configurable module doesn't implicitly call 'call' if attribute set as proc
|
47
|
+
- Refactored Endpoint module -> Response object
|
48
|
+
|
49
|
+
Fixes
|
50
|
+
-----
|
51
|
+
- Ruby 1.9.2-p0 was raising encoding errors due to Tempfiles not being in binmode
|
52
|
+
|
53
|
+
|
54
|
+
0.7.5 (2010-09-01)
|
55
|
+
==================
|
56
|
+
Changes
|
57
|
+
--------
|
58
|
+
- RMagick processor, encoder, analyser and generator all use the filesystem now
|
59
|
+
They can be configured to use in-memory strings with the use_filesystem config option.
|
60
|
+
- Upgraded support from Rails 3.0.0.rc -> Rails.3.0.0
|
61
|
+
|
62
|
+
0.7.4 (2010-08-28)
|
63
|
+
==================
|
64
|
+
Features
|
65
|
+
--------
|
66
|
+
- Gave model accessors bang methods process! and encode!
|
67
|
+
|
68
|
+
0.7.3 (2010-08-27)
|
69
|
+
==================
|
70
|
+
Fixes
|
71
|
+
-----
|
72
|
+
- Seems as though inserting after Rails' Rack::Lock was worth it after all
|
73
|
+
|
74
|
+
0.7.2 (2010-08-27)
|
75
|
+
==================
|
76
|
+
Fixes
|
77
|
+
-----
|
78
|
+
- S3DataStore was breaking if previous data hadn't stored meta
|
79
|
+
|
80
|
+
0.7.1 (2010-08-26)
|
81
|
+
==================
|
82
|
+
Fixes
|
83
|
+
-----
|
84
|
+
- SimpleEndpoint was modifying env path_info so wasn't creating proper cache keys
|
85
|
+
- to_response accepts env, so can use if-not-modified, etc.
|
86
|
+
|
87
|
+
Features
|
88
|
+
--------
|
89
|
+
- Doc tweaks: Added mongo page, notes about Capistrano
|
90
|
+
|
91
|
+
Changes
|
92
|
+
-------
|
93
|
+
- ETags generated by hash of job.serialize - was getting a bit long
|
94
|
+
|
95
|
+
0.7.0 (2010-08-25)
|
96
|
+
==================
|
97
|
+
|
98
|
+
Features
|
99
|
+
--------
|
100
|
+
- Ability to chain processing, encoding
|
101
|
+
- Added Generators for arbitrary content generation
|
102
|
+
- 'fetch_file' method for easily getting local files
|
103
|
+
- ActiveModel support
|
104
|
+
- Mongoid support
|
105
|
+
- Better Sinatra, etc. support (using 'to_response')
|
106
|
+
- Data stores now store meta, name and format information too
|
107
|
+
- Added Mongo Data Store
|
108
|
+
- temp_objects maintain name, meta, etc. across processing, encoding, etc.
|
109
|
+
- added portrait? and landscape? to RMagick analyser
|
110
|
+
- Ability to add single custom processor/encoder/analyser/generator
|
111
|
+
- added flip and flop to RMagick processor
|
112
|
+
- ability to configure whether it trusts the file extension
|
113
|
+
- nice text response for root path
|
114
|
+
- ability to configure url host
|
115
|
+
- ability to override path_prefix/host when calling url
|
116
|
+
- routed endpoints
|
117
|
+
- simple endpoints
|
118
|
+
- more intelligent working out of Content-Type to send back
|
119
|
+
|
120
|
+
Fixes
|
121
|
+
-----
|
122
|
+
- proper use of ETags
|
123
|
+
- remove whitespace from file/s3 datastore uids
|
124
|
+
- dragonfly/rails/images url-encodes rack-cache config for windows users
|
125
|
+
- Ruby 1.9.2 support
|
126
|
+
- Better RMagick memory management using image.destroy!
|
127
|
+
|
128
|
+
Changes
|
129
|
+
-------
|
130
|
+
- Dragonfly::App[:images] -> Dragonfly[:images]
|
131
|
+
- Moved text/plasma generation into Generator
|
132
|
+
- Use of lazy 'Job' objects
|
133
|
+
- simplified shortcuts interface
|
134
|
+
- changed interface for attaching to ActiveRecord
|
135
|
+
- simplified saved configurations and allow referring to them as symbols
|
136
|
+
- Removed need for Base class for datastores, processors, analysers and encoders
|
137
|
+
- FileCommandAnalyser included in Rails config, not RMagick
|
138
|
+
- better use of logging module for sharing logs between classes
|
139
|
+
- mounting the app is down the middleware/elsewhere, not the app itself
|
140
|
+
- DOS protection off by default
|
141
|
+
- encoded urls
|
142
|
+
- got rid of unnecessary configurable sha_length
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
0.6.2 (2010-06-24)
|
147
|
+
==================
|
148
|
+
Features
|
149
|
+
-----
|
150
|
+
- Added ability for custom error messages in validations
|
151
|
+
|
152
|
+
0.6.1 (2010-05-16)
|
153
|
+
==================
|
154
|
+
Fixes
|
155
|
+
-----
|
156
|
+
- STI was breaking when the model had a mixin too
|
157
|
+
|
158
|
+
0.6.0 (2010-05-11)
|
159
|
+
==================
|
160
|
+
|
161
|
+
Features
|
162
|
+
--------
|
163
|
+
- Added 'scale factor' for text generation, which gives better quality font rendering for smaller fonts
|
164
|
+
- Configurable objects allow for passing args, and passing a block for extra config
|
165
|
+
- Added more 'saved configurations', for easier setting up on e.g. Heroku
|
166
|
+
- Added RMagickAnalyser#format
|
167
|
+
- Added greyscale to RMagickProcessor
|
168
|
+
- S3DataStore is configurable as to whether it uses the filesystem or not (to save a tempfile)
|
169
|
+
|
170
|
+
Fixes
|
171
|
+
-----
|
172
|
+
- Some specs refactoring, including making text processing specs less brittle
|
173
|
+
- RMagickEncoder::SUPPORTED_FORMATS was proving problematic - now we use a configurable list instead
|
174
|
+
- Got Rails 3 beta3 cucumber features working
|
175
|
+
- Added check to see if bucket already exists in S3DataStore - apparently this was problematic in EU
|
176
|
+
|
177
|
+
Changes
|
178
|
+
-------
|
179
|
+
- temp_object.tempfile now returns a closed tempfile, which temp_object.file returns an open file.
|
180
|
+
Can also pass a block to temp_object.file which closes the file automatically
|
181
|
+
- Processors/Analysers/Encoders know about app now so can log to app's log
|
182
|
+
- Imagemagick errors in RMagick processor/analyser/encoder now throw unable_to_handle and log a warning
|
183
|
+
- Removed Rails generators - better being more explicit with saved configurations which are more concise now
|
184
|
+
|
185
|
+
0.5.7 (2010-04-18)
|
186
|
+
==================
|
187
|
+
|
188
|
+
Fixes
|
189
|
+
--------
|
190
|
+
- Strip file command mime_type value because some versions of file command were appending a line-break
|
191
|
+
|
192
|
+
0.5.6 (2010-04-13)
|
193
|
+
==================
|
194
|
+
|
195
|
+
Fixes
|
196
|
+
--------
|
197
|
+
- Wasn't working properly with Single-Table Inheritance
|
198
|
+
|
199
|
+
0.5.5 (2010-04-13)
|
200
|
+
==================
|
201
|
+
|
202
|
+
Fixes
|
203
|
+
--------
|
204
|
+
- Rails 3 has changed 'metaclass' -> 'singleton_class' so adapt accordingly
|
205
|
+
|
206
|
+
0.5.4 (2010-04-12)
|
207
|
+
==================
|
208
|
+
|
209
|
+
Features
|
210
|
+
--------
|
211
|
+
- Allow setting the uid manually
|
212
|
+
|
213
|
+
Fixes
|
214
|
+
-----
|
215
|
+
- Assigning an accessor to nil wasn't working properly
|
216
|
+
|
217
|
+
|
218
|
+
0.5.3 (2010-03-27)
|
219
|
+
==================
|
220
|
+
|
221
|
+
Fixes
|
222
|
+
-----
|
223
|
+
- Assigning an accessor to nil wasn't working properly
|
224
|
+
|
225
|
+
|
226
|
+
0.5.2 (2010-03-04)
|
227
|
+
==================
|
228
|
+
|
229
|
+
Features
|
230
|
+
--------
|
231
|
+
- Added 'registered mime-types'
|
232
|
+
- Enhanced docs
|
233
|
+
|
234
|
+
Fixes
|
235
|
+
-----
|
236
|
+
- RMagickEncoder only encodes if not already in that format
|
237
|
+
|
238
|
+
|
239
|
+
0.5.1 (2010-02-20)
|
240
|
+
==================
|
241
|
+
|
242
|
+
Fixes
|
243
|
+
-----
|
244
|
+
- Fixed 'broken pipe' errors in FileCommandAnalyser due to outputting loads of stuff to the command line stdin
|
245
|
+
|
246
|
+
0.5.0 (2010-02-20)
|
247
|
+
==================
|
248
|
+
|
249
|
+
Added support
|
250
|
+
-------------
|
251
|
+
- support for Rails 3
|
252
|
+
|
253
|
+
|
254
|
+
0.4.4 (2010-02-16)
|
255
|
+
==================
|
256
|
+
|
257
|
+
Better late than never to start logging change history...
|
258
|
+
|
259
|
+
New features
|
260
|
+
------------
|
261
|
+
- added aspect_ratio to rmagick_analyser
|
262
|
+
|
263
|
+
Added support
|
264
|
+
-------------
|
265
|
+
- support for ruby 1.9
|
266
|
+
- added development dependencies to gemspec for easier setting up
|
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009-2010 Mark Evans
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
Dragonfly
|
2
|
+
===========
|
3
|
+
|
4
|
+
Dragonfly is a <a href="http://rack.rubyforge.org">Rack</a> framework for on-the-fly image handling.
|
5
|
+
|
6
|
+
Ideal for using with Ruby on Rails (2.3 and 3), Sinatra and all that gubbins.
|
7
|
+
|
8
|
+
For the lazy Rails user...
|
9
|
+
--------------------------
|
10
|
+
**Gemfile**:
|
11
|
+
|
12
|
+
gem 'rack-cache', :require => 'rack/cache'
|
13
|
+
gem 'dragonfly', '~>0.8.1'
|
14
|
+
|
15
|
+
**Initializer** (e.g. config/initializers/dragonfly.rb):
|
16
|
+
|
17
|
+
require 'dragonfly/rails/images'
|
18
|
+
|
19
|
+
**Migration**:
|
20
|
+
|
21
|
+
add_column :albums, :cover_image_uid, :string
|
22
|
+
|
23
|
+
**Model**:
|
24
|
+
|
25
|
+
class Album < ActiveRecord::Base
|
26
|
+
image_accessor :cover_image # 'image_accessor' is provided by Dragonfly
|
27
|
+
# this defines a reader/writer for cover_image
|
28
|
+
# ...
|
29
|
+
end
|
30
|
+
|
31
|
+
**View** (for uploading via a file field):
|
32
|
+
|
33
|
+
<% form_for @album, :html => {:multipart => true} do |f| %>
|
34
|
+
...
|
35
|
+
<%= f.file_field :cover_image %>
|
36
|
+
...
|
37
|
+
<% end %>
|
38
|
+
|
39
|
+
NB: REMEMBER THE MULTIPART BIT!!!
|
40
|
+
|
41
|
+
**View** (to display):
|
42
|
+
|
43
|
+
<%= image_tag @album.cover_image.url %>
|
44
|
+
<%= image_tag @album.cover_image.thumb('400x200#').url %>
|
45
|
+
<%= image_tag @album.cover_image.jpg.url %>
|
46
|
+
<%= image_tag @album.cover_image.process(:greyscale).encode(:tiff).url %>
|
47
|
+
...etc.
|
48
|
+
|
49
|
+
The above relies on imagemagick being installed. Dragonfly doesn't depend on it per se, but the default configuration `'dragonfly/rails/images'`
|
50
|
+
uses it. For alternative configurations, see below.
|
51
|
+
|
52
|
+
If using Capistrano with the above, you probably will want to keep the cache between deploys, so in deploy.rb:
|
53
|
+
|
54
|
+
namespace :dragonfly do
|
55
|
+
desc "Symlink the Rack::Cache files"
|
56
|
+
task :symlink, :roles => [:app] do
|
57
|
+
run "mkdir -p #{shared_path}/tmp/dragonfly && ln -nfs #{shared_path}/tmp/dragonfly #{release_path}/tmp/dragonfly"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
after 'deploy:update_code', 'dragonfly:symlink'
|
61
|
+
|
62
|
+
Using outside of rails, custom storage/processing/encoding/analysis, and more...
|
63
|
+
--------------------------------------------------------------------------------
|
64
|
+
Dragonfly is primarily a Rack app, so you can use it as a standalone app, or with Sinatra, Merb, etc.
|
65
|
+
|
66
|
+
It's highly customizable, and works with any data type (not just images).
|
67
|
+
|
68
|
+
For more info, consult the <a href="http://markevans.github.com/dragonfly"><big><strong>DOCUMENTATION</strong></big></a>
|
69
|
+
|
70
|
+
Add-ons
|
71
|
+
=======
|
72
|
+
For third-party add-ons, see [the Add-ons wiki](http://github.com/markevans/dragonfly/wiki/Dragonfly-add-ons)
|
73
|
+
|
74
|
+
Issues
|
75
|
+
======
|
76
|
+
Please use the <a href="http://github.com/markevans/dragonfly/issues">github issue tracker</a> if you have any issues.
|
77
|
+
|
78
|
+
Suggestions/Questions
|
79
|
+
=====================
|
80
|
+
<a href="http://groups.google.com/group/dragonfly-users">Google group dragonfly-users</a>
|
81
|
+
|
82
|
+
Credits
|
83
|
+
=======
|
84
|
+
- [Mark Evans](http://github.com/markevans) (author)
|
85
|
+
|
86
|
+
Copyright
|
87
|
+
========
|
88
|
+
Copyright (c) 2009-2010 Mark Evans. See LICENSE for details.
|
data/Rakefile
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'rake'
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'jeweler'
|
5
|
+
Jeweler::Tasks.new do |s|
|
6
|
+
s.name = "fog-dragonfly"
|
7
|
+
s.summary = %Q{Dragonfly is an on-the-fly Rack-based image handling framework.
|
8
|
+
It is suitable for use with Rails, Sinatra and other web frameworks. Although it's mainly used for images,
|
9
|
+
it can handle any content type.}
|
10
|
+
s.email = "mark@new-bamboo.co.uk"
|
11
|
+
s.homepage = "http://github.com/markevans/dragonfly"
|
12
|
+
s.authors = ["Mark Evans", 'Cyril Mougel']
|
13
|
+
s.add_dependency('rack')
|
14
|
+
end
|
15
|
+
Jeweler::GemcutterTasks.new
|
16
|
+
rescue LoadError
|
17
|
+
puts "Jeweler not available. Install it with: (sudo) gem install jeweler"
|
18
|
+
end
|
19
|
+
|
20
|
+
require 'rake/rdoctask'
|
21
|
+
Rake::RDocTask.new do |rdoc|
|
22
|
+
rdoc.rdoc_dir = 'rdoc'
|
23
|
+
rdoc.title = 'dragonfly'
|
24
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
25
|
+
rdoc.rdoc_files.include('README*')
|
26
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
27
|
+
end
|
28
|
+
|
29
|
+
begin
|
30
|
+
require 'yard'
|
31
|
+
YARD::Rake::YardocTask.new do |t|
|
32
|
+
t.files = ['lib/**/*.rb']
|
33
|
+
t.options = []
|
34
|
+
end
|
35
|
+
YARD::Rake::YardocTask.new 'yard:changed' do |t|
|
36
|
+
t.files = `git status | grep '.rb' | grep modified | grep -v yard | cut -d' ' -f4`.split
|
37
|
+
t.options = []
|
38
|
+
end
|
39
|
+
rescue LoadError
|
40
|
+
puts "YARD is not available. To run the documentation tasks, install it with: (sudo) gem install yard"
|
41
|
+
end
|
42
|
+
|
43
|
+
desc "Run all the specs"
|
44
|
+
task :spec do
|
45
|
+
system "bundle exec spec -O .specopts spec/dragonfly"
|
46
|
+
end
|
47
|
+
|
48
|
+
desc "Run the active model specs"
|
49
|
+
task :model_spec do
|
50
|
+
system "bundle exec spec -O .specopts spec/dragonfly/active_model_extensions"
|
51
|
+
end
|
52
|
+
|
53
|
+
desc "Run the active_record specs (AR 2.3)"
|
54
|
+
task :model_spec_235 do
|
55
|
+
system "export BUNDLE_GEMFILE=Gemfile.rails.2.3.5 && bundle exec spec -O .specopts spec/dragonfly/active_model_extensions"
|
56
|
+
end
|
57
|
+
|
58
|
+
task :features do
|
59
|
+
system "bundle exec cucumber"
|
60
|
+
end
|
61
|
+
|
62
|
+
task :default do
|
63
|
+
# Do everything!!!
|
64
|
+
puts "*** Running all the specs using the default Gemfile ***"
|
65
|
+
Rake::Task['spec'].invoke
|
66
|
+
puts "*** Running the model specs with Gemfile.rails.2.3.5 ***"
|
67
|
+
Rake::Task['model_spec_235'].invoke
|
68
|
+
puts "*** Running the features ***"
|
69
|
+
Rake::Task['features'].invoke
|
70
|
+
end
|
71
|
+
|
72
|
+
desc 'Set up a Rails app ready for testing'
|
73
|
+
namespace :rails do
|
74
|
+
|
75
|
+
task :setup do
|
76
|
+
version = ENV['RAILS_VERSION']
|
77
|
+
raise "Please give a RAILS_VERSION, e.g. RAILS_VERSION=2.3.5" unless version
|
78
|
+
path = File.expand_path("fixtures/rails_#{version}")
|
79
|
+
app_name = 'tmp_app'
|
80
|
+
system %(
|
81
|
+
cd #{path} &&
|
82
|
+
rm -rf #{app_name} &&
|
83
|
+
../rails _#{version}_ #{app_name} -m template.rb
|
84
|
+
)
|
85
|
+
FileUtils.cp("fixtures/dragonfly_setup.rb", "#{path}/#{app_name}/config/initializers")
|
86
|
+
system %(cd #{path}/#{app_name} && rake db:migrate)
|
87
|
+
puts "*** Created a Rails #{version} app in #{path}/#{app_name} ***"
|
88
|
+
puts "Now just start the server, and go to localhost:3000/albums"
|
89
|
+
puts "***"
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|