Module: Kiba::Extend::Jobs::DependencyHandleable
- Included in:
- BaseJob, DynamicJobable
- Defined in:
- lib/kiba/extend/jobs/dependency_handleable.rb
Overview
The methods that need to be mixed in to a Job to handle dependencies
Instance Method Summary collapse
-
#check_requirements(type) ⇒ Object
-
#destinations ⇒ Object
-
#file_config(config) ⇒ Object
-
#handle_requirements(type) ⇒ Object
-
#prep_file(meth, key, for_job) ⇒ Object
-
#setup_file_for(type, key) ⇒ Object
-
#setup_files(files) ⇒ Object
Replace file key names with registered_source/lookup/destination objects dynamically.
-
#setup_files_for(type, arr) ⇒ Object
-
#setup_source_for(key) ⇒ Object
-
#sources ⇒ Object
Instance Method Details
#check_requirements(type) ⇒ Object
77 78 79 80 81 82 83 84 85 |
# File 'lib/kiba/extend/jobs/dependency_handleable.rb', line 77 def check_requirements(type) files[type].flatten.compact.each do |data| next if data.dynamic_source next unless data.path next if File.exist?(data.path) fail Kiba::Extend::MissingDependencyError.new(data.key, data.path) end end |
#destinations ⇒ Object
87 88 89 90 91 |
# File 'lib/kiba/extend/jobs/dependency_handleable.rb', line 87 def destinations @files[:destination].map { |config| file_config(config) } .map { |src| "destination #{src[:klass]}, **#{src[:args]}" } .join("\n") end |
#file_config(config) ⇒ Object
99 100 101 |
# File 'lib/kiba/extend/jobs/dependency_handleable.rb', line 99 def file_config(config) {klass: config.klass, args: config.args} end |
#handle_requirements(type) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/kiba/extend/jobs/dependency_handleable.rb', line 53 def handle_requirements(type) deps = files[type] return unless deps deps.flatten .compact .reject(&:dynamic_source) .each do |registered| req = registered.required next unless req req.call end check_requirements(type) rescue Kiba::Extend::MissingDependencyError => err puts "JOB FAILED: DEPENDENCY ERROR IN: #{err.calling_job}" err.info exit rescue => err puts "JOB FAILED: Error handling #{type} file dependency for "\ "#{destination_key}: #{err.}" end |
#prep_file(meth, key, for_job) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/kiba/extend/jobs/dependency_handleable.rb', line 40 def prep_file(meth, key, for_job) meth.call(key, for_job) rescue Kiba::Extend::ErrMod => err if err.respond_to?(:formatted) puts err.formatted else puts "JOB FAILED: TRANSFORM ERROR IN: #{err.calling_job}" err.info end exit end |
#setup_file_for(type, key) ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/kiba/extend/jobs/dependency_handleable.rb', line 19 def setup_file_for(type, key) return setup_source_for(key) if type == :source prep_file( Kiba::Extend.registry.method(:"as_#{type}"), key, destination_key ) end |
#setup_files(files) ⇒ Object
Replace file key names with registered_source/lookup/destination objects dynamically
10 11 12 13 |
# File 'lib/kiba/extend/jobs/dependency_handleable.rb', line 10 def setup_files(files) files.map { |type, arr| [type, setup_files_for(type, arr)] } .to_h end |
#setup_files_for(type, arr) ⇒ Object
15 16 17 |
# File 'lib/kiba/extend/jobs/dependency_handleable.rb', line 15 def setup_files_for(type, arr) arr.map { |key| setup_file_for(type, key) } end |
#setup_source_for(key) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/kiba/extend/jobs/dependency_handleable.rb', line 27 def setup_source_for(key) entry = Kiba::Extend.registry.resolve(key) if entry.dynamic_source && self.class.ancestors.include?(Kiba::Extend::Jobs::DynamicJobable) return Kiba::Extend::Registry::DynamicSource.new( key: key, for_job: destination_key ) end meth = Kiba::Extend.registry.method(:as_source) prep_file(meth, key, destination_key) end |
#sources ⇒ Object
93 94 95 96 97 |
# File 'lib/kiba/extend/jobs/dependency_handleable.rb', line 93 def sources @files[:source].map { |config| file_config(config) } .map { |src| "source #{src[:klass]}, **#{src[:args]}" } .join("\n") end |