rack-bert-rpc 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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