Method: FileColumn::BaseUploadedFile#create_magick_version_if_needed

Defined in:
lib/magick_file_column.rb

#create_magick_version_if_needed(version) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/magick_file_column.rb', line 32

def create_magick_version_if_needed(version)
  # RMagick might not have been loaded so far.
  # We do not want to require it on every call of this method
  # as this might be fairly expensive, so we just try if ::Magick
  # exists and require it if not.
  begin 
    ::Magick 
  rescue NameError
    require 'RMagick'
  end

  if version.is_a?(Symbol)
    version_options = options[:magick][:versions][version]
  else
    version_options = MagickExtension::process_options(version)
  end

  unless File.exists?(absolute_path(version_options[:name]))
    begin
      img = ::Magick::Image::read(absolute_path).first
    rescue ::Magick::ImageMagickError
      # we might be called directly from the view here
      # so we just return nil if we cannot load the image
      return nil
    end
    dirname = version_options[:name]
    FileUtils.mkdir File.join(@dir, dirname)
    transform_image(img, version_options, absolute_path(dirname))
  end

  version_options[:name]
end