Analysers

Analysers are registered with Dragonfly apps for adding methods to Job objects and model attachments such as width, height, etc.

ImageMagick Analyser

See ImageMagick.

FileCommandAnalyser

The FileCommandAnalyser is registered by default by the Rails configuration used by 'dragonfly/rails/images'.

As the name suggests, it uses the UNIX 'file' command.

If not already registered:

app.analyser.register(Dragonfly::Analysis::FileCommandAnalyser)

gives us:

image.mime_type    # => 'image/png'

You shouldn't need to configure it but if you need to:

app.analyser.register(Dragonfly::Analysis::FileCommandAnalyser) do |a|
  a.use_filesystem = false                 # defaults to true
  a.file_command = '/opt/local/bin/file'   # defaults to 'file'
  a.num_bytes_to_check = 1024              # defaults to 255 - only applies if not using the filesystem
end

Custom Analysers

To register a single custom analyser:

app.analyser.add :wobbliness do |temp_object|
  # can use temp_object.data, temp_object.path, temp_object.file, etc.
  SomeLibrary.assess_wobbliness(temp_object.data)
end

image.wobbliness    # => 71

You can create a class like the ImageMagick one above, in which case all public methods will be counted as analysis methods. Each method takes the temp_object as its argument.

class MyAnalyser

  def coolness(temp_object)
    temp_object.size / 30
  end

  def uglyness(temp_object)
    `ugly -i #{temp_object.path}`
  end

  private

  def my_helper_method
    # do stuff
  end

end

app.analyser.register(MyAnalyser)

image.coolness    # => -4.1
image.uglyness    # => "VERY"