class DbSucker::Application::ContainerCollection

Constants

DuplicateIdentifierError
YAMLParseError

Attributes

app[R]
data[R]

Public Class Methods

new(app) click to toggle source
# File lib/db_sucker/application/container_collection.rb, line 9
def initialize app
  @app = app
  @data = {}
end

Public Instance Methods

each(&block) click to toggle source
# File lib/db_sucker/application/container_collection.rb, line 42
def each &block
  @data.each(&block)
end
get(id) click to toggle source
# File lib/db_sucker/application/container_collection.rb, line 38
def get id
  @data[id]
end
load_all_configs() click to toggle source
# File lib/db_sucker/application/container_collection.rb, line 22
def load_all_configs
  yml_configs.each{|f| load_yml_config(f) }
end
load_yml_config(file) click to toggle source
# File lib/db_sucker/application/container_collection.rb, line 26
def load_yml_config file
  YAML.load_file(file).each do |id, cfg|
    if @data.key?(id)
      raise DuplicateIdentifierError, "double use of identifier `#{id}' in `#{file}'"
    else
      @data[id] = Container.new(app, id, file, cfg)
    end
  end
rescue Psych::SyntaxError => ex
  app.abort ex.message
end
yml_configs(disabled = false) click to toggle source
# File lib/db_sucker/application/container_collection.rb, line 14
def yml_configs disabled = false
  files = Dir["#{app.core_cfg_path}/**/*.yml"].select{|f| File.file?(f) }
  return files if disabled
  files.reject do |f|
    f.gsub("#{app.core_cfg_path}/", "").split("/").any?{|fp| fp.start_with?("__") }
  end
end