class Renv::Engine

Public Class Methods

new(connection:, name: nil, data: nil) click to toggle source
# File lib/renv/engine.rb, line 8
def initialize(connection:, name: nil, data: nil)
  @_name       = name
  @_connection = connection
  @_data       = data || Data.new
  @_loaded     = false
end

Public Instance Methods

del(keys) click to toggle source

Deletes one or more keys-value pairs

# File lib/renv/engine.rb, line 28
def del(keys)
  keys.each { |key| _data.delete(key) }
  _save
end
dump() click to toggle source
# File lib/renv/engine.rb, line 33
def dump
  _data.dump
end
get(key) click to toggle source
# File lib/renv/engine.rb, line 15
def get(key)
  _data[key]
end
load(payload) click to toggle source
# File lib/renv/engine.rb, line 37
def load(payload)
  _data.load(payload)
  _save
end
set(hash) click to toggle source

Sets one or more key-value pairs

# File lib/renv/engine.rb, line 20
def set(hash)
  hash.each_pair do |key, value|
    _data[key] = value
  end
  _save
end

Private Instance Methods

_app() click to toggle source
# File lib/renv/engine.rb, line 71
def _app
  @_connection.app
end
_data() click to toggle source
# File lib/renv/engine.rb, line 44
def _data
  return @_data if @_loaded
  s3file = @_connection.files.get(_path_current)
  payload = s3file ? s3file.body : ''
  @_loaded = true
  @_data.load(payload)
end
_name() click to toggle source
# File lib/renv/engine.rb, line 67
def _name
  @_name ||= @_connection.app_name
end
_path_current() click to toggle source
# File lib/renv/engine.rb, line 58
def _path_current
  @_path_current ||= "#{_name}/current"
end
_path_new() click to toggle source

“Backup” path, which is a timestamp in ISO format (2014-08-07T11:24:25)

# File lib/renv/engine.rb, line 63
def _path_new
  @_path_new ||= "#{_name}/#{Time.now.strftime('%FT%T')}"
end
_save() click to toggle source
# File lib/renv/engine.rb, line 52
def _save
  [_path_new, _path_current].each do |path|
    @_connection.files.create(key: path, body: _data.dump, public: false)
  end
end