class Scripter::Base
Public Class Methods
execute(iteration_function_name=:execute)
click to toggle source
# File lib/scripter/base.rb, line 23 def self.execute(iteration_function_name=:execute) self.new do |scripter_instance| # exits immediately without raising an exception on ctrl+c trap("SIGINT") { exit! } scripter_instance.with_fault_monitoring do scripter_instance.public_send(iteration_function_name) end scripter_instance.on_exit if scripter_instance.respond_to?(:on_exit) end end
new() { |self| ... }
click to toggle source
# File lib/scripter/base.rb, line 18 def initialize yield self if block_given? self end
set_custom_executable_name(name)
click to toggle source
# File lib/scripter/base.rb, line 10 def self.set_custom_executable_name(name) class_eval %{ def self.#{name} self.execute(:#{name}) end } end
Public Instance Methods
perform_iteration(iteration_id, iteration_meta={}, verbose=true) { || ... }
click to toggle source
# File lib/scripter/base.rb, line 48 def perform_iteration(iteration_id, iteration_meta={}, verbose=true) @iteration_idx = (@iteration_idx || 0) + 1 begin unless iteration_processed?(iteration_id) yield iteration_processed!(iteration_id) end rescue Exception => error add_error(error, iteration_meta, verbose) if @iteration_idx == 100 && errors_count > 50 raise "Iteration was interrupted as error rate was too big (#{errors_count.to_f / @iteration_idx.to_f * 100.0}%)" end end end
with_fault_monitoring() { || ... }
click to toggle source
# File lib/scripter/base.rb, line 36 def with_fault_monitoring log :info, "============================================== START ==============================================" begin log :info, "Performing: #{self.inspect}" yield rescue Exception => error add_error(error) ensure log :info, "=============================================== END ===============================================" end end