Class: PipeRpc::Hub::Request::Error

Inherits:
Object
  • Object
show all
Defined in:
lib/pipe_rpc/hub_request_error.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(error) ⇒ Error

Returns a new instance of Error.



4
5
6
# File 'lib/pipe_rpc/hub_request_error.rb', line 4

def initialize(error)
  @error = error
end

Instance Attribute Details

#errorObject (readonly)

Returns the value of attribute error.



8
9
10
# File 'lib/pipe_rpc/hub_request_error.rb', line 8

def error
  @error
end

Instance Method Details

#backtraceObject



24
25
26
27
28
29
30
31
32
# File 'lib/pipe_rpc/hub_request_error.rb', line 24

def backtrace
  @error.backtrace.to_a.dup.tap do |backtrace|
    # In ruby, backtraces of argument errors have the location of the
    # method definition and not from where it is called as first location
    # in the backtrace. To normalize argument and no method errors,
    # remove the first location for argument errors.
    backtrace.shift if @error.is_a?(::ArgumentError) and not Object.const_defined?(:MRUBY_VERSION)
  end
end

#codeObject



10
11
12
13
14
15
16
17
18
# File 'lib/pipe_rpc/hub_request_error.rb', line 10

def code
  case @error
  when NoServerError then -32604
  when method_call_error? && ::NoMethodError then -32601
  when method_call_error? && ::ArgumentError then -32602
  when InternalError then -32605
  else -32603
  end
end

#messageObject



20
21
22
# File 'lib/pipe_rpc/hub_request_error.rb', line 20

def message
  @error.message
end

#method_call_error?Boolean

Returns:

  • (Boolean)


34
35
36
37
38
39
40
# File 'lib/pipe_rpc/hub_request_error.rb', line 34

def method_call_error?
  if Object.const_defined?(:MRUBY_VERSION)
    backtrace.first.nil?
  else
    backtrace.first.split(':').first(2) == [CALL_FILE, CALL_LINENO.to_s]
  end
end