Module: Inventory
- Defined in:
- lib/inventory.rb
Overview
Narou.rbのシステムが記録するデータ単位
.narou ディレクトリにYAMLファイルとして保存される scope に :global を指定するとユーザーディレクトリ/.narousetting に保存される
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.clear ⇒ Object
26 27 28 |
# File 'lib/inventory.rb', line 26 def self.clear @@cache = {} end |
.load(name, scope = :local) ⇒ Object
16 17 18 19 20 21 22 23 24 |
# File 'lib/inventory.rb', line 16 def self.load(name, scope = :local) @@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
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/inventory.rb', line 30 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 @mutex = Mutex.new @inventory_file_path = File.join(dir, name + ".yaml") if File.exist?(@inventory_file_path) self.merge!(Helper::CacheLoader.memo(@inventory_file_path) { |yaml| YAML.load(yaml) }) end end |