Class: XMigra::NewAccessArtifactAdder

Inherits:
SchemaManipulator show all
Defined in:
lib/xmigra/new_access_artifact_adder.rb

Defined Under Namespace

Classes: UnsupportedArtifactType

Constant Summary

Constants inherited from SchemaManipulator

SchemaManipulator::ACCESS_SUBDIR, SchemaManipulator::DBINFO_FILE, SchemaManipulator::INDEXES_SUBDIR, SchemaManipulator::PERMISSIONS_FILE, SchemaManipulator::PLUGIN_KEY, SchemaManipulator::STRUCTURE_SUBDIR, SchemaManipulator::VERINC_FILE

Instance Attribute Summary

Attributes inherited from SchemaManipulator

#path, #plugin

Instance Method Summary collapse

Methods inherited from SchemaManipulator

#branch_upgrade_file, #load_plugin!

Constructor Details

#initialize(path) ⇒ NewAccessArtifactAdder

Returns a new instance of NewAccessArtifactAdder.



16
17
18
# File 'lib/xmigra/new_access_artifact_adder.rb', line 16

def initialize(path)
  super(path)
end

Instance Method Details

#add_artifact(type, name) ⇒ Object

Raises:



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/xmigra/new_access_artifact_adder.rb', line 20

def add_artifact(type, name)
  access_dir = @path.join(ACCESS_SUBDIR)
  FileUtils.mkdir_p(access_dir) unless access_dir.exist?
  
  new_fpath = access_dir.join(name + '.yaml')
  raise(XMigra::Error, "Access object \"#{new_fpath.basename}\" already exists") if new_fpath.exist?
  
  template_method = begin
    method("#{type}_definition_template_sql".to_sym)
  rescue NameError
    proc {''}
  end
  new_data = {
    'define'=>type.to_s,
    'sql'=>template_method.call.dup.extend(LiteralYamlStyle),
  }
  
  File.open(new_fpath, "w") do |f|
    $xmigra_yamler.dump(new_data, f)
  end
  
  return new_fpath
end