Sha256: d705d82d0949e5599e93ccc77e50b07e28bec1a1f8590e58ce531f94f02fde9d

Contents?: true

Size: 1.36 KB

Versions: 24

Compression:

Stored size: 1.36 KB

Contents

module Lookbook
  class Error < StandardError
    attr_reader :scope, :original, :status, :detail, :source

    def initialize(message = nil,
      scope: nil, original: nil, status: nil, detail: nil,
      file_path: nil, source: nil, line_number: nil, **kwargs)
      @scope = scope
      @original = original
      @message = message
      @status = status
      @detail = detail
      @file_path = file_path
      @source = source
      @line_number = line_number
      super(message)
    end

    def message
      @message || original&.message
    end

    def backtrace
      original&.backtrace || super
    end

    def type
      (original.presence || self).class.to_s
    end

    def file_path
      return @file_path.to_s if @file_path.present?

      parsed_backtrace[0][0] if parsed_backtrace.any?
    end

    def relative_file_path
      file_path&.delete_prefix("#{Rails.root}/")
    end

    def line_number
      return @line_number.to_i if @line_number.present?

      if parsed_backtrace.any?
        number = parsed_backtrace[0][1]
        number.to_i if number.present?
      end
    end

    def backtrace_lines
      root = Rails.root.to_s
      backtrace.map { |line| line.gsub(root, "") }
    end

    protected

    def parsed_backtrace
      backtrace.map do |line|
        line =~ /^(.+?):(\d+)(|:in `(.+)')$/
        [$1, $2, $4]
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
lookbook-2.3.4 lib/lookbook/support/errors/error.rb
lookbook-2.3.3 lib/lookbook/support/errors/error.rb
lookbook-2.3.2 lib/lookbook/support/errors/error.rb
lookbook-2.3.0 lib/lookbook/support/errors/error.rb
lookbook-2.2.2 lib/lookbook/support/errors/error.rb
lookbook-2.2.1 lib/lookbook/support/errors/error.rb
lookbook-2.2.0 lib/lookbook/support/errors/error.rb
lookbook-2.1.1 lib/lookbook/support/errors/error.rb
lookbook-2.1.0 lib/lookbook/support/errors/error.rb
lookbook-2.0.5 lib/lookbook/support/errors/error.rb
lookbook-2.0.4 lib/lookbook/support/errors/error.rb
lookbook-2.0.3 lib/lookbook/support/errors/error.rb
lookbook-2.0.2 lib/lookbook/support/errors/error.rb
lookbook-2.0.1 lib/lookbook/support/errors/error.rb
lookbook-2.0.0 lib/lookbook/support/errors/error.rb
lookbook-2.0.0.rc.3 lib/lookbook/support/errors/error.rb
lookbook-2.0.0.rc.2 lib/lookbook/support/errors/error.rb
lookbook-2.0.0.rc.1 lib/lookbook/support/errors/error.rb
lookbook-2.0.0.beta.9 lib/lookbook/support/errors/error.rb
lookbook-2.0.0.beta.8 lib/lookbook/support/errors/error.rb