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

#lookupsObject

Returns the value of attribute lookups.



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

def lookups
  @lookups
end

#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.



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

def sources
  @sources
end

#targetsObject

Returns the value of attribute targets.



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

def targets
  @targets
end

#transformsObject

Returns the value of attribute transforms.



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

def transforms
  @transforms
end

Class Method Details

.extended(receiver) ⇒ Object



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

def self.extended(receiver)
end

Instance Method Details

#define_lookup(name, type_class, options) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/remi/job.rb', line 15

def define_lookup(name, type_class, options)
  @lookups ||= []
  @lookups << name

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

    if type_class == Hash
      lookup = options
    else
      lookup = type_class.new(options)
    end
    instance_variable_set("@#{name}", lookup)
  end
end

#define_param(key, value) ⇒ Object



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

def define_param(key, value)
  @params ||= {}
  @params[key] = value
end

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



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/remi/job.rb', line 32

def define_source(name, type_class, **options)
  @sources ||= []
  @sources << 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



45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/remi/job.rb', line 45

def define_target(name, type_class, **options)
  @targets ||= []
  @targets << 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



58
59
60
61
62
63
64
65
66
# File 'lib/remi/job.rb', line 58

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



96
97
98
99
100
101
102
103
# File 'lib/remi/job.rb', line 96

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

#work_dirObject



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

def work_dir
  Settings.work_dir
end