class S3AssetDeploy::RemovalManifest

Constants

PATH

Attributes

bucket_name[R]

Public Class Methods

new(bucket_name, s3_client_options: {}) click to toggle source
# File lib/s3_asset_deploy/removal_manifest.rb, line 8
def initialize(bucket_name, s3_client_options: {})
  @bucket_name = bucket_name
  @loaded = false
  @changed = false
  @manifest = {}
  @s3_client_options = {
    region: "us-east-1",
    logger: @logger
  }.merge(s3_client_options)
end

Public Instance Methods

[](key) click to toggle source
# File lib/s3_asset_deploy/removal_manifest.rb, line 67
def [](key)
  @manifest[key]
end
[]=(key, value) click to toggle source
# File lib/s3_asset_deploy/removal_manifest.rb, line 71
def []=(key, value)
  return unless loaded?
  @changed = true
  @manifest[key] = value
end
changed?() click to toggle source
# File lib/s3_asset_deploy/removal_manifest.rb, line 36
def changed?
  @changed
end
delete(key) click to toggle source
# File lib/s3_asset_deploy/removal_manifest.rb, line 61
def delete(key)
  return unless loaded?
  @changed = true
  @manifest.delete(key)
end
inspect() click to toggle source
# File lib/s3_asset_deploy/removal_manifest.rb, line 85
def inspect
  "#<#{self.class.name}:#{"0x0000%x" % (object_id << 1)} @bucket_name='#{bucket_name}'>"
end
keys() click to toggle source
# File lib/s3_asset_deploy/removal_manifest.rb, line 57
def keys
  @manifest.keys
end
load() click to toggle source
# File lib/s3_asset_deploy/removal_manifest.rb, line 23
def load
  return true if loaded?
  @manifest = fetch_manifest
  @loaded = true
rescue Aws::S3::Errors::NoSuchKey
  @manifest = {}
  @loaded = true
end
loaded?() click to toggle source
# File lib/s3_asset_deploy/removal_manifest.rb, line 32
def loaded?
  @loaded
end
s3() click to toggle source
# File lib/s3_asset_deploy/removal_manifest.rb, line 19
def s3
  @s3 ||= Aws::S3::Client.new(@s3_client_options)
end
save() click to toggle source
# File lib/s3_asset_deploy/removal_manifest.rb, line 40
def save
  return false unless loaded?
  return true unless changed?

  s3.put_object({
    bucket: bucket_name,
    key: PATH,
    body: @manifest.to_json,
    acl: "private",
    content_type: "application/json"
  })

  @changed = false

  true
end
to_h() click to toggle source
# File lib/s3_asset_deploy/removal_manifest.rb, line 77
def to_h
  @manifest
end
to_s() click to toggle source
# File lib/s3_asset_deploy/removal_manifest.rb, line 81
def to_s
  @manifest.to_s
end

Private Instance Methods

fetch_manifest() click to toggle source
# File lib/s3_asset_deploy/removal_manifest.rb, line 91
def fetch_manifest
  resp = s3.get_object({
    bucket: bucket_name,
    key: PATH
  })

  JSON.parse(resp.body.read)
end