Class: Avm::EacRedmineBase0::DataUnit

Inherits:
Data::Instance::Unit show all
Defined in:
lib/avm/eac_redmine_base0/data_unit.rb

Constant Summary collapse

EXTENSION =
'.tar'

Instance Attribute Summary

Attributes inherited from Data::Instance::Unit

#instance

Instance Method Summary collapse

Methods inherited from Data::Instance::Unit

#initialize

Methods inherited from Data::Unit

#dump, #dump_to_directory, #extension, #load, #load_from_directory, #name

Constructor Details

This class inherits a constructor from Avm::Data::Instance::Unit

Instance Method Details

#do_dump(data_path) ⇒ Object



15
16
17
18
19
# File 'lib/avm/eac_redmine_base0/data_unit.rb', line 15

def do_dump(data_path)
  ::File.open(data_path, 'wb') do |file|
    file << URI.parse(export_url).read
  end
end

#do_load(data_path) ⇒ Object



21
22
23
# File 'lib/avm/eac_redmine_base0/data_unit.rb', line 21

def do_load(data_path)
  do_load_by_web(data_path) || do_load_by_rake(data_path) || raise('Failed to load')
end

#do_load_by_rake(data_path) ⇒ Object



35
36
37
38
# File 'lib/avm/eac_redmine_base0/data_unit.rb', line 35

def do_load_by_rake(data_path)
  instance.bundle('exec', 'rake', "redmine_with_git:load:all[#{data_path}]").system
  true
end

#do_load_by_web(data_path) ⇒ Object



25
26
27
28
29
30
31
32
33
# File 'lib/avm/eac_redmine_base0/data_unit.rb', line 25

def do_load_by_web(data_path)
  c = Curl::Easy.new(import_url)
  c.multipart_form_post = true
  c.http_post(Curl::PostField.file('redmine_with_git_tableless_load[path]', data_path))
  c.perform
  true
rescue Curl::Err::ConnectionFailedError
  false
end

#export_urlObject



40
41
42
# File 'lib/avm/eac_redmine_base0/data_unit.rb', line 40

def export_url
  url('/backup/export')
end

#import_urlObject



44
45
46
# File 'lib/avm/eac_redmine_base0/data_unit.rb', line 44

def import_url
  url('/backup/import.json')
end

#url(path) ⇒ Object



48
49
50
51
52
# File 'lib/avm/eac_redmine_base0/data_unit.rb', line 48

def url(path)
  uri = ::Addressable::URI.parse(instance.read_entry('web.url')) + path
  uri.query_values = { key: instance.read_entry('admin.api_key') }
  uri.to_s
end