Sha256: 8b35e7433085d1f6ea7ed9404136c5a7d2b8be8bb496647d468a5110cc30930d

Contents?: true

Size: 858 Bytes

Versions: 6

Compression:

Stored size: 858 Bytes

Contents

module Rumx
  module Beans
    class Error
      include Bean

      bean_attr_reader     :error_count, :integer, 'Number of times the measured block has raised an exception'
      bean_attr_reader     :errors,      :list,    'List of the last occurring errors', :list_type => :bean

      def initialize(opts={})
        @errors = []
        @max_errors = (opts[:max_errors] || 1).to_i
      end

      def reset=(val)
        if val
          @error_count = 0
        end
      end

      def perform(prefix='')
        yield
      rescue Exception => e
        bean_synchronize do
          @error_count += 1
          @errors << Message.new(e.message)
          @errors.shift while @errors.size > @max_errors
        end
        raise
      end

      def to_s
        "error_count=#{@error_count} last_error=#{@errors.last}"
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rumx-0.1.5 lib/rumx/beans/error.rb
rumx-0.1.4 lib/rumx/beans/error.rb
rumx-0.1.3 lib/rumx/beans/error.rb
rumx-0.1.2 lib/rumx/beans/error.rb
rumx-0.1.1 lib/rumx/beans/error.rb
rumx-0.1.0 lib/rumx/beans/error.rb