Class: SimpleImageUploader

Inherits:
CarrierWave::Uploader::Base
  • Object
show all
Includes:
CarrierWave::MiniMagick
Defined in:
app/uploaders/simple_image_uploader.rb

Overview

Simple image uploader with scaling

Instance Method Summary collapse

Instance Method Details

#alt_text(default = '') ⇒ String

Text for image alt attribute

Parameters:

  • default (String) (defaults to: '')

Returns:

  • (String)


52
53
54
55
56
57
58
59
# File 'app/uploaders/simple_image_uploader.rb', line 52

def alt_text(default = '')
  method_name = "#{mounted_as}_alt_text".to_sym
  if model.respond_to?(method_name)
    model.send(method_name)
  else
    default
  end
end

#default_urlObject



18
19
20
# File 'app/uploaders/simple_image_uploader.rb', line 18

def default_url(*)
  ActionController::Base.helpers.asset_path('biovision/base/placeholders/1x1.svg')
end

#extension_whitelistObject

Add a white list of extensions which are allowed to be uploaded. For images you might use something like this:



44
45
46
# File 'app/uploaders/simple_image_uploader.rb', line 44

def extension_whitelist
  %w[jpg jpeg png svg svgz]
end

#hd_urlObject



86
87
88
# File 'app/uploaders/simple_image_uploader.rb', line 86

def hd_url
  raster? ? hd.url : url
end

#large_urlObject



82
83
84
# File 'app/uploaders/simple_image_uploader.rb', line 82

def large_url
  raster? ? large.url : url
end

#medium_urlObject



78
79
80
# File 'app/uploaders/simple_image_uploader.rb', line 78

def medium_url
  raster? ? medium.url : url
end

#preview_urlObject



70
71
72
# File 'app/uploaders/simple_image_uploader.rb', line 70

def preview_url
  raster? ? preview.url : url
end

#raster?Boolean

Returns:

  • (Boolean)


66
67
68
# File 'app/uploaders/simple_image_uploader.rb', line 66

def raster?
  !File.extname(path).match?(/\.svgz?\z/i)
end

#raster_image?(new_file) ⇒ Boolean

Parameters:

  • (SanitizedFile)

Returns:

  • (Boolean)


62
63
64
# File 'app/uploaders/simple_image_uploader.rb', line 62

def raster_image?(new_file)
  !new_file.extension.match?(/svgz?\z/i)
end

#small_urlObject



74
75
76
# File 'app/uploaders/simple_image_uploader.rb', line 74

def small_url
  raster? ? small.url : url
end

#store_dirObject

Override the directory where uploaded files will be stored. This is a sensible default for uploaders that are meant to be mounted:



11
12
13
14
15
16
# File 'app/uploaders/simple_image_uploader.rb', line 11

def store_dir
  id = model&.id.to_i
  slug = "#{id / 1000}/#{id}"

  "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{slug}"
end