Module: UniverseCompiler::Entity::Persistence

Included in:
Base
Defined in:
lib/universe_compiler/entity/persistence.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#source_uriObject

Returns the value of attribute source_uri.



8
9
10
# File 'lib/universe_compiler/entity/persistence.rb', line 8

def source_uri
  @source_uri
end

Class Method Details

.load(uri) ⇒ Object



10
11
12
13
14
# File 'lib/universe_compiler/entity/persistence.rb', line 10

def self.load(uri)
  entity = YAML.load_file uri
  entity.source_uri = uri
  entity
end

Instance Method Details

#deleteObject



33
34
35
36
37
38
39
# File 'lib/universe_compiler/entity/persistence.rb', line 33

def delete
  universe.delete self
  unless self.source_uri.nil?
    FileUtils.rm self.source_uri
    UniverseCompiler.logger.debug "Deleted '#{self.as_path}' (removed file '#{self.source_uri}'"
  end
end

#save(uri = source_uri, raise_error: true, force_save: false) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/universe_compiler/entity/persistence.rb', line 16

def save(uri = source_uri, raise_error: true, force_save: false)
  if force_save
    if valid? raise_error: false
      UniverseCompiler.logger.debug "Forcing '#{self.as_path}' save."
    else
      UniverseCompiler.logger.warn "Forcing '#{self.as_path}' save despite it is invalid !"
    end
  else
    valid? raise_error: raise_error
  end
  FileUtils.mkpath File.dirname(uri)
  File.write uri, to_yaml, mode: 'w'
  self.source_uri = uri
  UniverseCompiler.logger.debug "Saved '#{self.as_path}' to '#{uri}'"
  self
end