Module: ImageSizable

Extended by:
ActiveSupport::Concern
Defined in:
app/models/concerns/image_sizable.rb

Instance Method Summary collapse

Instance Method Details

#default_sizesObject



50
51
52
53
54
55
56
57
# File 'app/models/concerns/image_sizable.rb', line 50

def default_sizes
  @default_sizes ||= %w[
    original
    small
    medium
    large
  ]
end

#generate_urls(blob, *selected_sizes) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'app/models/concerns/image_sizable.rb', line 17

def generate_urls(blob, *selected_sizes)
  selected_sizes = default_sizes if selected_sizes.empty?
  selected_sizes.map!(&:to_s)

  urls = {}
  if blob.image?
    selected_sizes.each do |size|
      if size == 'original'
        urls[size] = Rails.application.routes.url_helpers.rails_blob_url(blob)
      else
        variant = blob.variant(resize_to_limit: size_detail(size))
        urls[size] = Rails.application.routes.url_helpers.rails_representation_url(variant)
      end
    end
  else
    urls['original'] = Rails.application.routes.url_helpers.rails_blob_url(blob)
  end
  urls
end

#size_detail(size) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
# File 'app/models/concerns/image_sizable.rb', line 37

def size_detail(size)
  case size
  when 'small'
    [600, 600]
  when 'medium'
    [1200, 1200]
  when 'large'
    [1920, 1920]
  else
    'original'
  end
end