rack-bert-rpc 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -45,6 +45,10 @@ The `BertRpc` middle takes several configuration parameters:
45
45
  * `path`
46
46
  Any requests coming in to this path will be handled as RPC
47
47
  requests. Defaults to '/rpc'
48
+ * `logger`
49
+ This is a `Logger` object that will be used for logging messages
50
+ from the RPC server. If no logger is provided a default one will be
51
+ created that logs to `STDOUT`
48
52
  * `server`
49
53
  Used for testing, switches out the backend `BertRpc::Server` so the
50
54
  requests can be handled by a different one
@@ -1,4 +1,5 @@
1
1
  require 'rack'
2
+ require 'logger'
2
3
 
3
4
  module Rack
4
5
  class BertRpc
@@ -14,6 +15,14 @@ module Rack
14
15
  def clear_exposed
15
16
  @exposed_modules = []
16
17
  end
18
+
19
+ def logger
20
+ @logger ||= ::Logger.new(STDOUT)
21
+ end
22
+
23
+ def logger=(logger)
24
+ @logger = logger
25
+ end
17
26
  end
18
27
 
19
28
  attr_reader :path
@@ -21,7 +30,8 @@ module Rack
21
30
  def initialize(app, options = {})
22
31
  @path = options[:path] || '/rpc'
23
32
  @app = app
24
- @server = options[:server] || Server.new
33
+ logger = options[:logger] || BertRpc.logger
34
+ @server = options[:server] || BertRpc::Server.new(logger)
25
35
 
26
36
  expose_defaults!
27
37
  options[:expose].each do |sym, mod|
@@ -9,7 +9,8 @@ module Rack
9
9
 
10
10
  attr_reader :mods
11
11
 
12
- def initialize
12
+ def initialize(logger = nil)
13
+ @logger = logger
13
14
  @mods = {}
14
15
  end
15
16
 
@@ -20,26 +21,36 @@ module Rack
20
21
  def handle(input)
21
22
  rpc = read_rpc(input)
22
23
  if rpc.nil?
24
+ @logger.error("Invalid rpc request received: '#{input.inspect}'")
23
25
  return error_response(:server, "Invalid request: unrecognized")
24
26
  end
25
27
 
26
28
  if rpc.size == 4 && rpc[0] == :call
27
29
  begin
30
+ @logger.debug("RPC Call: '#{rpc.inspect}'")
28
31
  resp = dispatch(*rpc[1..3])
29
32
  reply_response(resp)
30
33
  rescue ServerError => e
34
+ @logger.error("Server error encountered on call: '#{e.inspect}'")
31
35
  error_response(:server, e)
32
36
  rescue Object => e
37
+ @logger.info("error encountered on call: '#{e.inspect}'")
33
38
  error_response(:user, e)
34
39
  end
35
40
  elsif rpc.size == 4 && rpc[0] == :cast
36
41
  begin
42
+ @logger.debug("RPC Call: '#{rpc.inspect}'")
37
43
  dispatch(*rpc[1..3])
44
+ noreply_response
45
+ rescue ServerError => e
46
+ @logger.error("Server error encountered on cast: '#{e.inspect}'")
47
+ error_response(:server, e)
38
48
  rescue Object => e
39
- # Just ignore errors here
49
+ @logger.debug("error encountered on cast: '#{e.inspect}'")
50
+ noreply_response
40
51
  end
41
- noreply_response
42
52
  else
53
+ @logger.fatal("Unexpected error: '#{e.inspect}'")
43
54
  error_response(:server, "Invalid request: #{rpc.inspect}")
44
55
  end
45
56
  end
@@ -1,5 +1,5 @@
1
1
  module Rack
2
2
  class BertRpc
3
- VERSION = "0.2.1"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-bert-rpc
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 19
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
- - 2
8
- - 1
9
- version: 0.2.1
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Ryan Burrows
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-08-13 00:00:00 -07:00
18
+ date: 2010-10-29 00:00:00 -07:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: bert
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 3
27
30
  segments:
28
31
  - 0
29
32
  version: "0"
@@ -33,38 +36,62 @@ dependencies:
33
36
  name: rack
34
37
  prerelease: false
35
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
36
40
  requirements:
37
41
  - - ">="
38
42
  - !ruby/object:Gem::Version
43
+ hash: 3
39
44
  segments:
40
45
  - 0
41
46
  version: "0"
42
47
  type: :runtime
43
48
  version_requirements: *id002
44
49
  - !ruby/object:Gem::Dependency
45
- name: rspec
50
+ name: bundler
46
51
  prerelease: false
47
52
  requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
48
54
  requirements:
49
55
  - - ">="
50
56
  - !ruby/object:Gem::Version
57
+ hash: 23
51
58
  segments:
59
+ - 1
52
60
  - 0
53
- version: "0"
61
+ - 0
62
+ version: 1.0.0
54
63
  type: :development
55
64
  version_requirements: *id003
56
65
  - !ruby/object:Gem::Dependency
57
- name: rack-test
66
+ name: rspec
58
67
  prerelease: false
59
68
  requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ~>
72
+ - !ruby/object:Gem::Version
73
+ hash: 13
74
+ segments:
75
+ - 2
76
+ - 0
77
+ - 1
78
+ version: 2.0.1
79
+ type: :development
80
+ version_requirements: *id004
81
+ - !ruby/object:Gem::Dependency
82
+ name: rack-test
83
+ prerelease: false
84
+ requirement: &id005 !ruby/object:Gem::Requirement
85
+ none: false
60
86
  requirements:
61
87
  - - ">="
62
88
  - !ruby/object:Gem::Version
89
+ hash: 3
63
90
  segments:
64
91
  - 0
65
92
  version: "0"
66
93
  type: :development
67
- version_requirements: *id004
94
+ version_requirements: *id005
68
95
  description: rack-bert-rpc is rack middleware that provides a BERT-RPC server implemenation for using BERT-RPC over HTTP
69
96
  email: rhburrows@gmail.com
70
97
  executables: []
@@ -93,16 +120,20 @@ rdoc_options: []
93
120
  require_paths:
94
121
  - lib
95
122
  required_ruby_version: !ruby/object:Gem::Requirement
123
+ none: false
96
124
  requirements:
97
125
  - - ">="
98
126
  - !ruby/object:Gem::Version
127
+ hash: 3
99
128
  segments:
100
129
  - 0
101
130
  version: "0"
102
131
  required_rubygems_version: !ruby/object:Gem::Requirement
132
+ none: false
103
133
  requirements:
104
134
  - - ">="
105
135
  - !ruby/object:Gem::Version
136
+ hash: 23
106
137
  segments:
107
138
  - 1
108
139
  - 3
@@ -111,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
142
  requirements: []
112
143
 
113
144
  rubyforge_project:
114
- rubygems_version: 1.3.6
145
+ rubygems_version: 1.3.7
115
146
  signing_key:
116
147
  specification_version: 3
117
148
  summary: Rack middleware BERT-RPC server