class GeneralStore

Constants

VERSION

Attributes

config[RW]
dir[RW]

Public Class Methods

config_dir(dir) click to toggle source
# File lib/general_store.rb, line 42
def self.config_dir dir
  File.expand_path dir
end
config_file(dir_name) click to toggle source
# File lib/general_store.rb, line 38
def self.config_file dir_name
  File.expand_path File.join dir_name, "config.yml"
end
create(dir, ostruct = OpenStruct.new) { |ostruct| ... } click to toggle source
# File lib/general_store.rb, line 14
def self.create dir, ostruct = OpenStruct.new
  create_config_file dir
  yield ostruct
  new(ostruct.marshal_dump, dir).set
end
create_config_file(dir) click to toggle source
# File lib/general_store.rb, line 46
def self.create_config_file dir
  ensure_dir_existence dir
  ensure_file_existence dir
end
ensure_dir_existence(dir) click to toggle source
# File lib/general_store.rb, line 57
def self.ensure_dir_existence dir
  FileUtils.mkdir_p config_dir dir
end
ensure_file_existence(dir) click to toggle source
# File lib/general_store.rb, line 61
def self.ensure_file_existence dir
  file = config_file dir
  unless File.exists? file
    write_file file, {}
  end
end
read(dir_name) click to toggle source
# File lib/general_store.rb, line 8
def self.read dir_name
  new YAML.load_file(config_file(dir_name)), dir_name
rescue Errno::ENOENT
  puts 'You need to setup your General Store first!'
end
write_file(file, data) click to toggle source
# File lib/general_store.rb, line 51
def self.write_file file, data
  File.open file, File::RDWR|File::TRUNC|File::CREAT, 0600 do |config|
    config.write YAML.dump data
  end
end

Private Class Methods

new(config_contents, dir) click to toggle source
# File lib/general_store.rb, line 25
def initialize config_contents, dir
  self.config = config_contents
  self.dir = dir
  config.each do |k,v|
    accessor = k.to_sym
    self.class.class_eval do
      attr_accessor accessor
    end
    send("#{accessor}=", v)
  end
end

Public Instance Methods

set() click to toggle source
# File lib/general_store.rb, line 20
def set
  klass = self.class
  klass.write_file klass.config_file(dir), config
end