# File lib/bricolage/jobclass.rb, line 26 def JobClass.primary_load_path load_path_for_lib_file(__FILE__) end
class Bricolage::JobClass
Constants
- CLASSES
- LOAD_PATHES
Attributes
id[R]
Public Class Methods
add_load_path(path)
click to toggle source
# File lib/bricolage/jobclass.rb, line 22 def JobClass.add_load_path(path) LOAD_PATHES.push path end
define(id, &block)
click to toggle source
# File lib/bricolage/jobclass.rb, line 12 def JobClass.define(id, &block) id = id.to_s raise FatalError, "duplicated job class: #{@id.inspect}" if CLASSES[id] c = new(id) c.instance_exec(c, &block) CLASSES[id] = c end
each(&block)
click to toggle source
# File lib/bricolage/jobclass.rb, line 57 def JobClass.each(&block) CLASSES.each_value(&block) end
get(id)
click to toggle source
# File lib/bricolage/jobclass.rb, line 37 def JobClass.get(id) unless CLASSES[id.to_s] begin path = LOAD_PATHES.map {|prefix| prefix + "#{id}.rb" }.detect(&:exist?) raise ParameterError, "no such job class: #{id}" unless path ::Bricolage.module_eval File.read(path), path.to_path, 1 rescue SystemCallError => err raise FatalError, "could not load job class: #{id}: #{err.message}" end raise FatalError, "job class file loaded but required job class is not defined: #{id}" unless CLASSES[id.to_s] end CLASSES[id.to_s] end
list()
click to toggle source
# File lib/bricolage/jobclass.rb, line 51 def JobClass.list LOAD_PATHES.map {|dir| Dir.glob("#{dir}/*.rb").map {|path| File.basename(path, '.rb') } }.flatten.uniq.sort end
load_path_for_lib_file(path)
click to toggle source
# File lib/bricolage/jobclass.rb, line 30 def JobClass.load_path_for_lib_file(path) srcdir = Pathname(path).realpath.parent.parent.parent.cleanpath srcdir + 'jobclass' end
new(id)
click to toggle source
# File lib/bricolage/jobclass.rb, line 61 def initialize(id) @id = id @parameters = nil @parameters_filter = nil # optional @declarations = nil @script = nil end
primary_load_path()
click to toggle source
Public Instance Methods
declarations(&block)
click to toggle source
# File lib/bricolage/jobclass.rb, line 93 def declarations(&block) @declarations = block end
get_declarations(params)
click to toggle source
# File lib/bricolage/jobclass.rb, line 97 def get_declarations(params) @declarations ? @declarations.call(params) : Declarations.new end
get_parameters()
click to toggle source
# File lib/bricolage/jobclass.rb, line 79 def get_parameters Parameters::Declarations.new.tap {|params| @parameters.call(params) } end
get_script(params)
click to toggle source
# File lib/bricolage/jobclass.rb, line 105 def get_script(params) Script.new.tap {|script| @script.call(params, script) } end
inspect()
click to toggle source
# File lib/bricolage/jobclass.rb, line 71 def inspect "\#<#{self.class} #{@id}>" end
invoke_parameters_filter(job)
click to toggle source
# File lib/bricolage/jobclass.rb, line 89 def invoke_parameters_filter(job) @parameters_filter.call(job) if @parameters_filter end
parameters(&block)
click to toggle source
# File lib/bricolage/jobclass.rb, line 75 def parameters(&block) @parameters = block end
parameters_filter(&block)
click to toggle source
# File lib/bricolage/jobclass.rb, line 85 def parameters_filter(&block) @parameters_filter = block end
script(&block)
click to toggle source
# File lib/bricolage/jobclass.rb, line 101 def script(&block) @script = block end