Class: ImpExp::Exporters::Base

Inherits:
Object
  • Object
show all
Defined in:
app/services/imp_exp/exporters/base.rb

Direct Known Subclasses

Files, Xlsx

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(scoping_parent, models, logger: nil) ⇒ Base

Returns a new instance of Base.



8
9
10
11
12
# File 'app/services/imp_exp/exporters/base.rb', line 8

def initialize(scoping_parent, models, logger: nil)
  @scoping_parent = scoping_parent
  @models = models
  @logger = logger || Logger.new('log/exports.log', 1)
end

Instance Attribute Details

#loggerObject (readonly)

Returns the value of attribute logger.



6
7
8
# File 'app/services/imp_exp/exporters/base.rb', line 6

def logger
  @logger
end

#modelsObject (readonly)

Returns the value of attribute models.



6
7
8
# File 'app/services/imp_exp/exporters/base.rb', line 6

def models
  @models
end

#scoping_parentObject (readonly)

Returns the value of attribute scoping_parent.



6
7
8
# File 'app/services/imp_exp/exporters/base.rb', line 6

def scoping_parent
  @scoping_parent
end

Instance Method Details

#callObject



14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/services/imp_exp/exporters/base.rb', line 14

def call
  logger.info "Starting export #{self.class.name} for #{scoping_parent.model_name.singular} " \
              "#{scoping_parent.name} (#{scoping_parent.id})"
  begin
    export_result = yield
    logger.info "Export completed\n---------"
    export_result
  rescue StandardError => e
    logger.error "Export interrupted with error : #{e.class.name} #{e.message}"
    raise e
  end
end