class Imgproxy::UrlAdapters::ActiveStorage

Adapter for ActiveStorage

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

Imgproxy.url_for(user.avatar)

Public Instance Methods

applicable?(image) click to toggle source
# File lib/imgproxy/url_adapters/active_storage.rb, line 11
def applicable?(image)
  image.is_a?(::ActiveStorage::Attached::One) ||
    image.is_a?(::ActiveStorage::Attachment) ||
    image.is_a?(::ActiveStorage::Blob)
end
url(image) click to toggle source
# File lib/imgproxy/url_adapters/active_storage.rb, line 17
def url(image)
  return s3_url(image) if use_s3_url(image)
  return gcs_url(image) if use_gcs_url(image)

  Rails.application.routes.url_helpers.url_for(image)
end

Private Instance Methods

config() click to toggle source
# File lib/imgproxy/url_adapters/active_storage.rb, line 42
def config
  Imgproxy.config
end
gcs_url(image) click to toggle source
# File lib/imgproxy/url_adapters/active_storage.rb, line 34
def gcs_url(image)
  "gs://#{config.gcs_bucket}/#{image.key}"
end
s3_url(image) click to toggle source
# File lib/imgproxy/url_adapters/active_storage.rb, line 26
def s3_url(image)
  "s3://#{image.service.bucket.name}/#{image.key}"
end
use_gcs_url(image) click to toggle source
# File lib/imgproxy/url_adapters/active_storage.rb, line 38
def use_gcs_url(image)
  config.use_gcs_urls && image.service.is_a?(::ActiveStorage::Service::GCSService)
end
use_s3_url(image) click to toggle source
# File lib/imgproxy/url_adapters/active_storage.rb, line 30
def use_s3_url(image)
  config.use_s3_urls && image.service.is_a?(::ActiveStorage::Service::S3Service)
end