class Imgproxy::UrlAdapters::Shrine

Adapter for Shrine

Imgproxy.configure do |config|
  config.url_adapters.add Imgproxy::UrlAdapters::Shrine.new
end

Imgproxy.url_for(user.avatar)

Public Instance Methods

applicable?(image) click to toggle source
# File lib/imgproxy/url_adapters/shrine.rb, line 11
def applicable?(image)
  image.is_a?(::Shrine::UploadedFile)
end
url(image) click to toggle source
# File lib/imgproxy/url_adapters/shrine.rb, line 15
def url(image)
  return s3_url(image) if use_s3_url(image)

  opts = {}
  opts[:host] = Imgproxy.config.shrine_host if Imgproxy.config.shrine_host
  image.url(opts)
end

Private Instance Methods

s3_url(image) click to toggle source
# File lib/imgproxy/url_adapters/shrine.rb, line 25
def s3_url(image)
  path = [*image.storage.prefix, image.id].join("/")
  "s3://#{image.storage.bucket.name}/#{path}"
end
use_s3_url(image) click to toggle source
# File lib/imgproxy/url_adapters/shrine.rb, line 30
def use_s3_url(image)
  Imgproxy.config.use_s3_urls &&
    image.storage.is_a?(::Shrine::Storage::S3)
end