- Attachment#b64_data
- Fix '+' character being converted to ' ' (revert to URI.escape instead of Rack::Utils.escape)
- Support old-style deprecated urls (with a check for malicious ones)
- Handle case where uid is an empty string
- URLS are encoded/decoded with JSON, not with Marshal
- Allow using a mongo replica set with mongo datastore
define_macro_on_include
was giving a stack error with multiple accessors on same app
- Allow the S3 base URL to be customised with
url_host
(or per-request) - Added App#name (name as per
Dragonfly[:app_name]
)
- Better inspect for App, Processor, Analyser, Encoder, Generator, Job, TempObject, RoutedEndpoint, JobEndpoint
- Rescue from Excon::Errors::Conflict which apparently gets raised sometimes (don't know why - see markevans#167)
- Alias portrait and landscape without question marks, so magic_attributes can be used with them
- Fixed stack error when using
define_macro_on_include
twice - Use fog's
sync_clock
to overcome potential S3 time skew problems - Using :name in urls was causing problems when filenames had dashes in them
- FileDataStore was causing errors when the storage path was flat (not in a directory structure)
- Created tempfiles use the original file extension if known
- Added
:case_sensitive
option tovalidates_property
for dealing with upper-case extensions and mime-types. - Github Markup syntax on readme for code highlighting
- S3DataStore can use https for remote urls (either configurable or per-url)
to_file
can take:mode
option for setting custom permissionsto_file
creates intermediate subdirs by default, can be turned off with:mkdirs => false
option- Added some more S3 regions
- Datastores now use
temp_object.meta
, not the second arg passed in tostore
meta
,name
, etc. now lazily load the job on an attachment - previously you'd have to callapply
to get the meta from the datastore- When assigning an image via the activemodel extensions, mark that uid attribute will change
validates_property
uses Rails 3 validators- Deprecated saved 'heroku' config, in favour of configuring S3 explicitly
- Model attachment urls are consistent now - the name is appended to the url (with format "/:job/:name") ONLY if it has the "name" magic attribute
identify
wasn't working properly for files with capital letter extensions- S3 datastore sets content mime_type by default
- File extensions with numbers like JP2 weren't being processed/analysed properly
- Protect against object_ids being recycled and messing with analyser cache
- All url segments are correctly url-escaped now
- Fixed TempObject File.open mode
- S3DataStore was breaking on bucket_exists? when using AWS IAM
- Put CookieMonster before ActionDispatch::Cookies in rack middleware stack - that way Rack::Cache won't come between them and mess things up
- Regenerated gemspec again with ruby 1.8.7 - didn't seem to be fixed
- Regenerated gemspec to overcome annoying yaml issue (http://blog.rubygems.org/2011/08/31/shaving-the-yaml-yacc.html)
- Allow setting
content_type
when storing in Mongo GridFS
- Tests use Rails 3.1
- Moved from fog's deprecated
get_object_url
toget_object_https_url
- Allow initializing a TempObject with Rack::Test::UploadedFile
- Tests working in Windows (except feature that uses FileCommandAnalyser)
- Better shell quoting
- Added reflection method
app.analyser_methods
- Fixed
convert
andidentify
for files with spaces - Fixed size validations for Rails 3.0.7
- Made use of Rack calling
close
on the response body to clean up tempfiles. The response body is now the job, which delegateseach
to the temp_object.
- TempObject#to_file sets file permissions 644 - copying wasn't previously guaranteeing this
- Added TempObject#close and closed?, which Rack uses to clean up tempfiles
- replaced '/' characters with '~' in base64 encoded urls (they were confusing url recognition)
- Added env['dragonfly.job'] for use in other Rack middlewares
- Added CookieMonster middleware for removing 'Set-Cookie' headers
- Remove 'Set-Cookie' header from any requests coming from a rails route
- Added reflection methods
app.processor_methods
,app.generator_methods
andapp.job_methods
- Improved performance of
resize_and_crop
method, using imagemagick built-in '^' operator - Improved server security validations
- Deal with Excon::Errors::SocketError: EOFError errors which get thrown sometimes from S3 connection
- Allow files with '..' (but not '../') in the middle of their name in file data store
- Model accessors are configurable
- added
after_assign
callback - added
after_unassign
callback - added
copy_to
for e.g. up-front thumbnailing - added
storage_opts
andstorage_xxx
- added
- Added model
remove_xxxxx
for using with checkboxes - Added model
xxxx_url
for assigning content from a url - Added job step
fetch_url
- Added
retain!
and modelretained_xxxxx
for avoiding multiple uploads when validations fail - Added
image?
to imagemagick analyser - Added imagemagick
plain
generator - Added
strip
to imagemagick processor - Added CouchDataStore that uses a CouchDB as a data storage engine
- Added
before_serve
callback - Allowed for configurable response headers
- Made url re-definable with
define_url
validates_property
can take a proc for the message- Saved configs can be registered now so they can be used with
configure_with(:symbol)
- Configurable objects can fallback to a parent configuration, so e.g. the server can be configured through the parent app's configure block.
- Allowed initializing data by using a pathname
convert_command
andidentify_command
can be configured on a per-app basis- Added
remote_url
and ability for datastores to form urls- Added for File, Couch and S3 datastores
- Models automatically copy magic attributes into meta
- S3DataStore configurable headers
- 'dragonfly/rails/images' slightly smarter and added
file_accessor
for more semantic use of non-image attachments - Made dragonfly response configurable
- Mongo datastore can reuse an existing connection/db
- FileDataStore can be configured not to store meta (save on extra file)
- Removed
url_path_prefix
andurl_suffix
in favour ofurl_format
- Middleware doesn't need mount point argument now
- Removed support for rails 2.3
- Removed RMagick support (and extracted into a plugin)
- ImageMagick processors etc. moved into the ImageMagick namespace
- moved from aws/s3 -> fog for S3 support
- Renamed SimpleEndpoint -> Server
- moved name and meta into Job, simplified, and now they don't cause the job to be applied
- FileDataStore stores metadata in xxx.meta now, not xxx.extra
- removed Job methods
uid_basename
,uid_extname
,encoded_format
andencoded_extname
as they are now unnecessary
- Performance tweaks regarding temp_objects model accessors and job objects
- Allow filenames that have '..' in them (but not '../') in the filedatastore
- Better security for server
- Security fix for file data store
- Renamed ActiveModel methods like 'attachments' to avoid name clashes
- Respond properly to HEAD, POST, PUT and DELETE requests
- Got it working with jRuby and Rubinius
- Made DOS protection SHA (and ETag) consistent
Removed runtime dependencies that Jeweler automatically takes from the Gemfile
- New ImageMagick generator, processor, encoder and analyser, which are now defaults (thanks to Henry Phan for work on this)
- Works with Rails 3.0.2 uploaded files (which has a changed API)
- Added username/password authentication to mongo data store
- Fixes for Windows, inc. tempfile binmode and closing files
- "IOError: closed stream" fix (hopefully!)
- Added methods for querying job steps, and Job#uid, Job#uid_basename, etc.
- Added Job#b64_data
- Added configurable url_suffix
- Added configurable content_disposition and content_filename
- Can pass extra GET params to url_for
- Can manually set uid on FileDataStore and S3DataStore (not yet documented because attachments have no way to pass it on yet)
- Model attachments store meta info about themselves
- Configurable module doesn't implicitly call 'call' if attribute set as proc
- Refactored Endpoint module -> Response object
- Ruby 1.9.2-p0 was raising encoding errors due to Tempfiles not being in binmode
- RMagick processor, encoder, analyser and generator all use the filesystem now They can be configured to use in-memory strings with the use_filesystem config option.
- Upgraded support from Rails 3.0.0.rc -> Rails.3.0.0
- Gave model accessors bang methods process! and encode!
- Seems as though inserting after Rails' Rack::Lock was worth it after all
- S3DataStore was breaking if previous data hadn't stored meta
- SimpleEndpoint was modifying env path_info so wasn't creating proper cache keys
- to_response accepts env, so can use if-not-modified, etc.
- Doc tweaks: Added mongo page, notes about Capistrano
- ETags generated by hash of job.serialize - was getting a bit long
- Ability to chain processing, encoding
- Added Generators for arbitrary content generation
- 'fetch_file' method for easily getting local files
- ActiveModel support
- Mongoid support
- Better Sinatra, etc. support (using 'to_response')
- Data stores now store meta, name and format information too
- Added Mongo Data Store
- temp_objects maintain name, meta, etc. across processing, encoding, etc.
- added portrait? and landscape? to RMagick analyser
- Ability to add single custom processor/encoder/analyser/generator
- added flip and flop to RMagick processor
- ability to configure whether it trusts the file extension
- nice text response for root path
- ability to configure url host
- ability to override path_prefix/host when calling url
- routed endpoints
- simple endpoints
- more intelligent working out of Content-Type to send back
- proper use of ETags
- remove whitespace from file/s3 datastore uids
- dragonfly/rails/images url-encodes rack-cache config for windows users
- Ruby 1.9.2 support
- Better RMagick memory management using image.destroy!
- Dragonfly::App[:images] -> Dragonfly[:images]
- Moved text/plasma generation into Generator
- Use of lazy 'Job' objects
- simplified shortcuts interface
- changed interface for attaching to ActiveRecord
- simplified saved configurations and allow referring to them as symbols
- Removed need for Base class for datastores, processors, analysers and encoders
- FileCommandAnalyser included in Rails config, not RMagick
- better use of logging module for sharing logs between classes
- mounting the app is down the middleware/elsewhere, not the app itself
- DOS protection off by default
- encoded urls
- got rid of unnecessary configurable sha_length
- Added ability for custom error messages in validations
- STI was breaking when the model had a mixin too
- Added 'scale factor' for text generation, which gives better quality font rendering for smaller fonts
- Configurable objects allow for passing args, and passing a block for extra config
- Added more 'saved configurations', for easier setting up on e.g. Heroku
- Added RMagickAnalyser#format
- Added greyscale to RMagickProcessor
- S3DataStore is configurable as to whether it uses the filesystem or not (to save a tempfile)
- Some specs refactoring, including making text processing specs less brittle
- RMagickEncoder::SUPPORTED_FORMATS was proving problematic - now we use a configurable list instead
- Got Rails 3 beta3 cucumber features working
- Added check to see if bucket already exists in S3DataStore - apparently this was problematic in EU
- temp_object.tempfile now returns a closed tempfile, which temp_object.file returns an open file. Can also pass a block to temp_object.file which closes the file automatically
- Processors/Analysers/Encoders know about app now so can log to app's log
- Imagemagick errors in RMagick processor/analyser/encoder now throw unable_to_handle and log a warning
- Removed Rails generators - better being more explicit with saved configurations which are more concise now
- Strip file command mime_type value because some versions of file command were appending a line-break
- Wasn't working properly with Single-Table Inheritance
- Rails 3 has changed 'metaclass' -> 'singleton_class' so adapt accordingly
- Allow setting the uid manually
- Assigning an accessor to nil wasn't working properly
- Assigning an accessor to nil wasn't working properly
- Added 'registered mime-types'
- Enhanced docs
- RMagickEncoder only encodes if not already in that format
- Fixed 'broken pipe' errors in FileCommandAnalyser due to outputting loads of stuff to the command line stdin
- support for Rails 3
Better late than never to start logging change history...
- added aspect_ratio to rmagick_analyser
- support for ruby 1.9
- added development dependencies to gemspec for easier setting up