Module: Inventory

Defined in:
lib/inventory.rb

Overview

Narou.rbのシステムが記録するデータ単位

.narou ディレクトリにYAMLファイルとして保存される

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.load(name, scope) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/inventory.rb', line 15

def self.load(name, scope)
  @@cache ||= {}
  return @@cache[name] if @@cache[name]
  {}.tap { |h|
    h.extend(Inventory)
    h.init(name, scope)
    @@cache[name] = h
  }
end

Instance Method Details

#init(name, scope) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/inventory.rb', line 25

def init(name, scope)
  dir = case scope
        when :local
          Narou.get_local_setting_dir
        when :global
          Narou.get_global_setting_dir
        else
          raise "Unknown scope"
        end
  return nil unless dir
  @inventory_file_path = File.join(dir, name + ".yaml")
  if File.exists?(@inventory_file_path)
    self.merge!(YAML.load_file(@inventory_file_path))
  end
end

#saveObject



41
42
43
44
45
46
# File 'lib/inventory.rb', line 41

def save
  unless @inventory_file_path
    raise "not initialized setting dir yet"
  end
  File.write(@inventory_file_path, YAML.dump(self))
end