KyivKrishnaAcademy/ved_akadem_students

View on GitHub
app/uploaders/base_uploader.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
class BaseUploader < CarrierWave::Uploader::Base
  storage :file
  permissions 0o0604

  # 0o0655 breaks Travis tests
  directory_permissions 0o0701

  def store_dir
    subfolder = Rails.env.test? ? '/test' : ''

    Rails.root.join "uploads#{subfolder}", model.class.to_s.underscore, mounted_as.to_s
  end

  def cache_dir
    Rails.root.join 'tmp/uploads/cache'
  end

  def filename
    "#{secure_token}.#{default_extension}" if original_filename.present?
  end

  def default_url
    ActionController::Base.helpers.asset_path("fallback/#{model.class.to_s.underscore}/" +
                                                  [version_name, 'default.png'].compact.join('_'))
  end

  def extension_white_list
    raise 'Override me'
  end

  private

  def default_extension
    raise 'Override me'
  end

  def secure_token
    var = :"@#{mounted_as}_secure_token"

    model.instance_variable_get(var) || model.instance_variable_set(var, SecureRandom.uuid)
  end
end