Module: Remi::Job::JobClassMethods

Defined in:
lib/remi/job.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#paramsObject

Returns the value of attribute params.



4
5
6
# File 'lib/remi/job.rb', line 4

def params
  @params
end

#sourcesObject

Returns the value of attribute sources.



5
6
7
# File 'lib/remi/job.rb', line 5

def sources
  @sources
end

#targetsObject

Returns the value of attribute targets.



6
7
8
# File 'lib/remi/job.rb', line 6

def targets
  @targets
end

#transformsObject

Returns the value of attribute transforms.



7
8
9
# File 'lib/remi/job.rb', line 7

def transforms
  @transforms
end

Class Method Details

.extended(receiver) ⇒ Object



71
72
# File 'lib/remi/job.rb', line 71

def self.extended(receiver)
end

Instance Method Details

#define_param(key, value) ⇒ Object



9
10
11
12
# File 'lib/remi/job.rb', line 9

def define_param(key, value)
  @params ||= Hash.new { |h, key| raise "Parameter #{key} is not defined" }
  @params[key] = value
end

#define_source(name, type_class, **options) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/remi/job.rb', line 14

def define_source(name, type_class, **options)
  @sources ||= []
  @sources << name unless @sources.include? name

  define_method(name) do
    iv_name = instance_variable_get("@#{name}")
    return iv_name if iv_name

    source = type_class.new(options)
    instance_variable_set("@#{name}", source)
  end
end

#define_target(name, type_class, **options) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/remi/job.rb', line 27

def define_target(name, type_class, **options)
  @targets ||= []
  @targets << name unless @targets.include? name

  define_method(name) do
    iv_name = instance_variable_get("@#{name}")
    return iv_name if iv_name

    target = type_class.new(options)
    instance_variable_set("@#{name}", target)
  end
end

#define_transform(name, sources: [], targets: [], &block) ⇒ Object



40
41
42
43
44
45
46
47
48
# File 'lib/remi/job.rb', line 40

def define_transform(name, sources: [], targets: [], &block)
  @transforms ||= {}
  @transforms[name] = { sources: Array(sources), targets: Array(targets) }

  define_method(name) do
    instance_eval { @logger.info "Running transformation #{__method__}" }
    instance_eval(&block)
  end
end

#included(receiver) ⇒ Object



74
75
76
77
78
79
80
# File 'lib/remi/job.rb', line 74

def included(receiver)
  receiver.extend(JobClassMethods)
  receiver.params     = self.params.merge(receiver.params)
  receiver.sources    = self.sources + receiver.sources
  receiver.targets    = self.targets + receiver.targets
  receiver.transforms = self.transforms.merge(receiver.transforms)
end

#work_dirObject



67
68
69
# File 'lib/remi/job.rb', line 67

def work_dir
  Settings.work_dir
end