Module: S3Log

Defined in:
lib/s3_log.rb,
lib/s3_log/version.rb,
lib/s3_log/exceptions.rb

Defined Under Namespace

Classes: Error, InvalidConfigError, Unconfigured

Constant Summary collapse

RequiredOptions =
[:access_key_id, :secret_access_key, :bucket]
VERSION =
'0.0.2'

Class Method Summary collapse

Class Method Details

.bucketObject



11
12
13
# File 'lib/s3_log.rb', line 11

def self.bucket
  @bucket
end

.clear_configurationObject



60
61
62
# File 'lib/s3_log.rb', line 60

def self.clear_configuration
  @bucket = @storage = nil
end

.configure(options = {}) ⇒ Object

Raises:



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/s3_log.rb', line 19

def self.configure(options = {})
  missing = RequiredOptions - options.keys
  raise InvalidConfigError.new(missing) unless missing.empty?

  clear_configuration

  @storage = Fog::Storage::AWS.new(
    aws_access_key_id: options[:access_key_id],
    aws_secret_access_key: options[:secret_access_key]
  )

  @bucket = @storage.directories.create(
    key: options[:bucket],
    public: false
  )
  self
end

.configured?Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/s3_log.rb', line 15

def self.configured?
  storage && bucket
end

.read(path) ⇒ Object



51
52
53
54
55
56
57
58
# File 'lib/s3_log.rb', line 51

def self.read(path)
  unless storage && bucket
    raise Unconfigured
  end

  file = bucket.files.get(path)
  file.nil? ? '' : file.body.to_s
end

.storageObject



7
8
9
# File 'lib/s3_log.rb', line 7

def self.storage
  @storage
end

.write(path, content) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/s3_log.rb', line 37

def self.write(path, content)
  unless storage && bucket
    raise Unconfigured
  end

  bucket.files.create(
    key: path,
    body: read(path).split("\n").push(content).join("\n"),
    public: false
  )

  self
end