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