module DailyReporter::Settings

Constants

SETTINGS_FILE

Public Class Methods

init() click to toggle source
# File lib/daily_reporter/settings.rb, line 13
def init
  tmp_settings = get_settings(File.dirname(__FILE__) + '/../../config/settings.yml.sample')

  tmp_settings['mail'].each_pair do |key, value|
    puts "Input #{key.gsub('_', ' ').capitalize} (default: #{value})"
    input = STDIN.gets.chomp
    input = value if input.nil? || input.empty?
    settings.mail.send("#{key}=", input)
  end
  save_settings
end
method_missing(method) click to toggle source
# File lib/daily_reporter/settings.rb, line 9
def method_missing(method)
  settings.send(method)
end

Private Class Methods

get_settings(settings_file = SETTINGS_FILE) click to toggle source
# File lib/daily_reporter/settings.rb, line 31
def get_settings(settings_file = SETTINGS_FILE)
  YAML.load_file(settings_file) || {'mail' => {}}
rescue Errno::ENOENT
  {'mail' => {}}
end
hashes_to_ostruct(object) click to toggle source
# File lib/daily_reporter/settings.rb, line 49
def hashes_to_ostruct(object)
  return case object
  when Hash
    object = object.clone
    object.each do |key, value|
      object[key] = hashes_to_ostruct(value)
    end
    OpenStruct.new(object)
  when Array
    object = object.clone
    object.map! { |i| hashes_to_ostruct(i) }
  else
    object
  end
end
save_settings() click to toggle source
# File lib/daily_reporter/settings.rb, line 37
def save_settings
  begin
    Dir.mkdir(SETTINGS_DIRECTORY)
  rescue Errno::EEXIST
    puts 'directory already exists'
  end

  File.open(SETTINGS_FILE, 'w') do |f|
    f.write(settings.marshal_dump.to_yaml)
  end
end
settings() click to toggle source
# File lib/daily_reporter/settings.rb, line 27
def settings
  @settings ||= hashes_to_ostruct(get_settings)
end