# See also: https://github.com/erikdahlstrand/shrine-rails-example/blob/master/config/initializers/shrine.rb

require 'shrine'
require 'shrine/storage/file_system'

# both `cache` and `store` storages are needed
Shrine.storages = {
  # Saves to ./shrine/files/screenshot/ID/image/…
  cache: Shrine::Storage::FileSystem.new(Rails.application.config.shrine_storage_path,
                                         prefix: 'cache'),
  store: Shrine::Storage::FileSystem.new(Rails.application.config.shrine_storage_path,
                                         prefix: 'files')
}

# See plugin documentation at https://shrinerb.com/docs/plugins/activerecord
# Persist images. Promote from :cache to :store when Screenshot.save is called.
# Delete files if the Screenshot get destroyed.
Shrine.plugin :activerecord
Shrine.plugin :instrumentation
Shrine.plugin :determine_mime_type, analyzer: :marcel, log_subscriber: nil
Shrine.plugin :cached_attachment_data
Shrine.plugin :restore_cached_data
Shrine.plugin :derivatives # up front processing
# Shrine.plugin :derivation_endpoint, # on-the-fly processing
#   secret_key: Rails.application.secret_key_base
