Module: Remi::Job

Defined in:
lib/remi/job.rb

Defined Under Namespace

Modules: JobClassMethods

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#runtime_paramsObject

Returns the value of attribute runtime_params.



113
114
115
# File 'lib/remi/job.rb', line 113

def runtime_params
  @runtime_params
end

Class Method Details

.included(receiver) ⇒ Object



83
84
85
# File 'lib/remi/job.rb', line 83

def self.included(receiver)
  receiver.extend(JobClassMethods)
end

Instance Method Details

#create_work_dirObject



133
134
135
136
# File 'lib/remi/job.rb', line 133

def create_work_dir
  @logger.info "Creating working directory #{work_dir}"
  FileUtils.mkdir_p work_dir
end

#delete_work_dirObject



123
124
125
126
127
128
129
130
131
# File 'lib/remi/job.rb', line 123

def delete_work_dir
  if @delete_work_dir && (work_dir.match /^#{Dir.tmpdir}/)
    @logger.info "Deleting temporary directory #{work_dir}"
    FileUtils.rm_r work_dir
  else
    @logger.debug "Not going to delete working directory #{work_dir}"
    nil
  end
end

#finalizeObject



119
120
121
# File 'lib/remi/job.rb', line 119

def finalize
  delete_work_dir
end

#initialize(runtime_params: {}, delete_work_dir: true, logger: Settings.logger) ⇒ Object



106
107
108
109
110
111
# File 'lib/remi/job.rb', line 106

def initialize(runtime_params: {}, delete_work_dir: true, logger: Settings.logger)
  @runtime_params = runtime_params
  @delete_work_dir = delete_work_dir
  @logger = logger
  create_work_dir
end

#load_all_targetsObject



159
160
161
162
163
164
# File 'lib/remi/job.rb', line 159

def load_all_targets
  targets.each do |target|
    @logger.info "Loading target #{target}"
    self.send(target).tap { |t| t.respond_to?(:load) ? t.load : nil }
  end
end

#paramsObject



88
89
90
# File 'lib/remi/job.rb', line 88

def params
  self.class.params
end

#runObject

Public: Runs all transforms defined in the job.

Returns the job instance.



169
170
171
172
173
174
# File 'lib/remi/job.rb', line 169

def run
  # Do all of the stuff here
  run_all_transforms
  load_all_targets
  self
end

#run_all_transformsObject



155
156
157
# File 'lib/remi/job.rb', line 155

def run_all_transforms
  transforms.map { |t, st| self.send(t) }
end

#run_transforms_using(sources: nil, targets: nil) ⇒ Object

Public: Runs any transforms that use the sources and targets selected. If source and target is not specified, then all transforms will be run. If only the source is specified, then all transforms that use any of the sources will be run. Same for specified transforms.

sources - Array of source names targets - Array of target names

Returns an array containing the result of each transform.



147
148
149
150
151
152
153
# File 'lib/remi/job.rb', line 147

def run_transforms_using(sources: nil, targets: nil)
  transforms.map do |t, st|
    selected_sources = (st[:sources] & Array(sources || st[:sources])).size > 0
    selected_targets = (st[:targets] & Array(targets || st[:targets])).size > 0
    self.send(t) if selected_sources && selected_targets
  end
end

#sourcesObject



92
93
94
# File 'lib/remi/job.rb', line 92

def sources
  self.class.sources
end

#targetsObject



96
97
98
# File 'lib/remi/job.rb', line 96

def targets
  self.class.targets
end

#transformsObject



100
101
102
# File 'lib/remi/job.rb', line 100

def transforms
  self.class.transforms
end

#work_dirObject



115
116
117
# File 'lib/remi/job.rb', line 115

def work_dir
  self.class.work_dir
end