class Admin::Image::S3

Attributes

access_key[R]
bucket[R]
errors[R]
path[R]
secret_key[R]

Public Class Methods

new(options={}) click to toggle source
# File lib/ecrire/app/models/admin/image.rb, line 57
def initialize(options={})
  @errors = ActiveModel::Errors.new(self)
  @access_key = options.fetch(:access_key, "")
  @secret_key = options.fetch(:secret_key, "")
  @path = options.fetch(:path, "")

  @bucket = service.bucket(options.fetch(:bucket, 'ecrire'))
end

Public Instance Methods

configuration_hash() click to toggle source
# File lib/ecrire/app/models/admin/image.rb, line 66
def configuration_hash
  config = {
    'access_key' => access_key,
    'secret_key' => secret_key,
    'bucket' => bucket.name
  }

  unless path.blank?
    config['path'] = path
  end

  config
end
connect() click to toggle source
# File lib/ecrire/app/models/admin/image.rb, line 80
def connect
  begin
    @bucket.retrieve
    @connected = true
  rescue Error::ResponseError, ArgumentError, SocketError => e
    errors.add :remote, "Couldn't connect to S3."
  end
end
connected?() click to toggle source
# File lib/ecrire/app/models/admin/image.rb, line 96
def connected?
  if @connected.nil?
    connect
  end
  !!@connected
end
service() click to toggle source
# File lib/ecrire/app/models/admin/image.rb, line 89
def service
  @service ||= Service.new(access_key_id: access_key,
                         secret_access_key: secret_key,
                         use_ssl: true
                        )
end