Sha256: 44d95147466ae59c02f22dc609d604b6657c9d5579250f43b5194f3aa99930a0

Contents?: true

Size: 1.19 KB

Versions: 3

Compression:

Stored size: 1.19 KB

Contents

require 'fileutils'
class FileUploader < CarrierWave::Uploader::Base
    include CarrierWave::MiniMagick
    storage :file
    after :remove, :delete_empty_upstream_dirs

    version :normalized, :if => :image? do
      process :resize_to_fit => [600,600]
    end

    version :preview, :if => :image? do 
      process :resize_to_limit => [100,100]
    end

    def timestamp
      time=if model
        model.created_at || Time.now
      else
        Time.now
      end
      time.strftime("%Y%m")
    end

    # With slash in first place it will be absolute url, otherwise relative to Rails.root+"/public"
    def store_dir
      if model
        "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{timestamp}/#{model.id}"
      else
        "uploads/misc"
      end
    end

    def delete_empty_upstream_dirs
      path = ::File.expand_path(store_dir, root)
      #FileUtils.rm_rf path # always remove
      
     # path = ::File.expand_path(base_store_dir, root)
      Dir.delete(path) # fails if path not empty dir
    rescue SystemCallError
      true # nothing, the dir is not empty
    end

    def image?(file)
      File.extname(file.filename.to_s).match(/jpg|JPG|jpeg|JPEG|png|PNG|gif|GIF/)
    end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lolita-file-upload-0.6.1 app/uploaders/file_uploader.rb
lolita-file-upload-0.6.0 app/uploaders/file_uploader.rb
lolita-file-upload-0.5.0 app/uploaders/file_uploader.rb