Sha256: a6a613f7bcd03f542e71c46ac767066f60b6c55bd6280f79250ea3dd63786f5f

Contents?: true

Size: 1.27 KB

Versions: 66

Compression:

Stored size: 1.27 KB

Contents

# frozen_string_literal: true

require 'avm/data/instance/unit'
require 'eac_ruby_utils/core_ext'
require 'curb'
require 'open-uri'

module Avm
  module EacRedmineBase0
    class DataUnit < ::Avm::Data::Instance::Unit
      common_constructor :instance

      EXPORT_PATH = '/backup/export'
      EXTENSION = '.tar'
      IMPORT_PATH = '/backup/import.json'

      def do_dump(data_path)
        ::File.open(data_path, 'wb') do |file|
          file << export_request.response.body_data_or_raise
        end
      end

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

      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

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

      def export_request
        instance.rest_api.request(EXPORT_PATH)
      end

      def import_url
        instance.rest_api.build_service_url(IMPORT_PATH).to_s
      end
    end
  end
end

Version data entries

66 entries across 66 versions & 3 rubygems

Version Path
eac_tools-0.30.0 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
eac_tools-0.29.0 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
eac_tools-0.28.0 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
eac_tools-0.27.2 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
eac_tools-0.27.1 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
avm-eac_redmine_base0-0.14.0 lib/avm/eac_redmine_base0/data_unit.rb
eac_tools-0.27.0 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
eac_tools-0.26.0 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
avm-eac_redmine_base0-0.13.0 lib/avm/eac_redmine_base0/data_unit.rb
eac_tools-0.25.1 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
eac_tools-0.25.0 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
eac_tools-0.24.1 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
eac_tools-0.24.0 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
avm-eac_redmine_base0-0.12.0 lib/avm/eac_redmine_base0/data_unit.rb
eac_tools-0.23.0 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
eac_tools-0.22.0 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
eac_tools-0.21.0 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
eac_tools-0.20.0 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
eac_tools-0.19.0 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb
eac_tools-0.18.0 sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb