class LearnLab::Configuration

Interface for dealing with persisted configuration file in YAML format.

Attributes

email[RW]
fs[R]
path[R]

Public Class Methods

new(path, data, **options) click to toggle source
# File lib/learn_lab/configuration.rb, line 20
def initialize(path, data, **options)
  @path = path
  @fs = options.fetch(:fs) { LearnLab.file_system }
  @email = data[:email]
end
open(filename='enterprise.yml', **options) click to toggle source
# File lib/learn_lab/configuration.rb, line 10
def self.open(filename='enterprise.yml', **options)
  fs = options.fetch(:fs) { LearnLab.file_system }
  path = fs.join(fs.home, '.flatiron-school', filename)
  data = fs.read_yaml_file(path)
  new(path, data)
rescue ConfigurationError
  path = fs.join(fs.home, '.flatiron-school', 'enterprise.yml')
  new(path, {})
end

Public Instance Methods

save!() click to toggle source
# File lib/learn_lab/configuration.rb, line 26
def save!
  directory = fs.dirname(path)
  fs.mkdir(directory) unless fs.directory?(directory)
  fs.write_yaml_file(path, payload, mode: 'w')
end
valid?() click to toggle source
# File lib/learn_lab/configuration.rb, line 32
def valid?
  !email.nil?
end

Private Instance Methods

payload() click to toggle source
# File lib/learn_lab/configuration.rb, line 38
def payload
  { 'email' => email }
end