stark-rack 1.0.0 → 1.0.1
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/History.txt +4 -0
- data/Rakefile +3 -1
- data/lib/stark/rack.rb +4 -3
- data/stark-rack.gemspec +7 -6
- data/test/test_rack.rb +29 -0
- metadata +6 -5
data/History.txt
CHANGED
data/Rakefile
CHANGED
@@ -12,10 +12,12 @@ Hoe::RUBY_FLAGS.concat " -I#{stark_local_path}" if File.directory?(stark_local_p
|
|
12
12
|
Hoe.plugin :git
|
13
13
|
Hoe.plugin :gemspec
|
14
14
|
|
15
|
-
Hoe.spec 'stark-rack' do
|
15
|
+
Hoe.spec 'stark-rack' do |spec|
|
16
16
|
developer('Evan Phoenix', 'evan@phx.io')
|
17
17
|
dependency 'stark', '< 2.0.0'
|
18
18
|
dependency 'rack', '>= 1.5.0', :dev
|
19
|
+
|
20
|
+
spec.testlib = :testunit if spec.respond_to?(:testlib)
|
19
21
|
end
|
20
22
|
|
21
23
|
# vim: syntax=ruby
|
data/lib/stark/rack.rb
CHANGED
@@ -5,7 +5,7 @@ require 'stark/rack/verbose_protocol'
|
|
5
5
|
|
6
6
|
class Stark::Rack
|
7
7
|
|
8
|
-
VERSION = '1.0.
|
8
|
+
VERSION = '1.0.1'
|
9
9
|
|
10
10
|
FORMAT = %{when: %0.4f, client: "%s", path: "%s%s", type: "%s", name: "%s", seqid: %d, error: %s\n}
|
11
11
|
|
@@ -69,7 +69,7 @@ class Stark::Rack
|
|
69
69
|
processor.process protocol, protocol
|
70
70
|
end
|
71
71
|
|
72
|
-
[status_from_last_error, headers(env), [out.string]]
|
72
|
+
[status_from_last_error(env), headers(env), [out.string]]
|
73
73
|
end
|
74
74
|
|
75
75
|
def error_capture
|
@@ -81,9 +81,10 @@ class Stark::Rack
|
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
-
def status_from_last_error
|
84
|
+
def status_from_last_error(env)
|
85
85
|
return 200 if @last_error.nil? || @last_error.first == :success
|
86
86
|
x = @last_error.last[3]
|
87
|
+
env['rack.exception'] = x
|
87
88
|
case x.type
|
88
89
|
when Thrift::ApplicationException::UNKNOWN_METHOD
|
89
90
|
404
|
data/stark-rack.gemspec
CHANGED
@@ -2,16 +2,17 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "stark-rack"
|
5
|
-
s.version = "1.0.
|
5
|
+
s.version = "1.0.1"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Evan Phoenix"]
|
9
|
-
s.date = "2013-
|
9
|
+
s.date = "2013-08-20"
|
10
10
|
s.description = "Provides middleware for mounting Stark/Thrift services as Rack endpoints."
|
11
11
|
s.email = ["evan@phx.io"]
|
12
12
|
s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
|
13
|
-
s.files = [".autotest", ".gemtest", "History.txt", "Manifest.txt", "README.txt", "Rakefile", "lib/stark/rack.rb", "lib/stark/rack/content_negotiation.rb", "lib/stark/rack/logging_processor.rb", "lib/stark/rack/metadata.rb", "lib/stark/rack/rest.rb", "stark-rack.gemspec", "test/calc-opt.rb", "test/calc.thrift", "test/config.ru", "test/gen-rb/calc.rb", "test/gen-rb/calc_constants.rb", "test/gen-rb/calc_types.rb", "test/helper.rb", "test/test_metadata.rb", "test/test_rack.rb", "test/test_rest.rb"]
|
13
|
+
s.files = [".autotest", ".gemtest", "History.txt", "Manifest.txt", "README.txt", "Rakefile", "lib/stark/rack.rb", "lib/stark/rack/content_negotiation.rb", "lib/stark/rack/logging_processor.rb", "lib/stark/rack/metadata.rb", "lib/stark/rack/rest.rb", "lib/stark/rack/verbose_protocol.rb", "stark-rack.gemspec", "test/calc-opt.rb", "test/calc.thrift", "test/config.ru", "test/gen-rb/calc.rb", "test/gen-rb/calc_constants.rb", "test/gen-rb/calc_types.rb", "test/helper.rb", "test/test_metadata.rb", "test/test_rack.rb", "test/test_rest.rb"]
|
14
14
|
s.homepage = "https://github.com/evanphx/stark-rack"
|
15
|
+
s.licenses = ["MIT"]
|
15
16
|
s.rdoc_options = ["--main", "README.txt"]
|
16
17
|
s.require_paths = ["lib"]
|
17
18
|
s.rubyforge_project = "stark-rack"
|
@@ -26,17 +27,17 @@ Gem::Specification.new do |s|
|
|
26
27
|
s.add_runtime_dependency(%q<stark>, ["< 2.0.0"])
|
27
28
|
s.add_development_dependency(%q<rdoc>, ["~> 4.0"])
|
28
29
|
s.add_development_dependency(%q<rack>, [">= 1.5.0"])
|
29
|
-
s.add_development_dependency(%q<hoe>, ["~> 3.
|
30
|
+
s.add_development_dependency(%q<hoe>, ["~> 3.7"])
|
30
31
|
else
|
31
32
|
s.add_dependency(%q<stark>, ["< 2.0.0"])
|
32
33
|
s.add_dependency(%q<rdoc>, ["~> 4.0"])
|
33
34
|
s.add_dependency(%q<rack>, [">= 1.5.0"])
|
34
|
-
s.add_dependency(%q<hoe>, ["~> 3.
|
35
|
+
s.add_dependency(%q<hoe>, ["~> 3.7"])
|
35
36
|
end
|
36
37
|
else
|
37
38
|
s.add_dependency(%q<stark>, ["< 2.0.0"])
|
38
39
|
s.add_dependency(%q<rdoc>, ["~> 4.0"])
|
39
40
|
s.add_dependency(%q<rack>, [">= 1.5.0"])
|
40
|
-
s.add_dependency(%q<hoe>, ["~> 3.
|
41
|
+
s.add_dependency(%q<hoe>, ["~> 3.7"])
|
41
42
|
end
|
42
43
|
end
|
data/test/test_rack.rb
CHANGED
@@ -62,4 +62,33 @@ class TestRack < Test::Unit::TestCase
|
|
62
62
|
assert_equal 404, code
|
63
63
|
end
|
64
64
|
|
65
|
+
def test_exception_sets_status_and_env_rack_exception
|
66
|
+
@client_p = Thrift::JsonProtocol.new @client_t
|
67
|
+
@client = @n::Calc::Client.new @client_p, @client_p
|
68
|
+
|
69
|
+
def @handler.add(*)
|
70
|
+
raise RangeError, "can't add"
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
code = headers = out = nil
|
75
|
+
env = { 'rack.input' => @sr, 'REQUEST_METHOD' => 'POST' }
|
76
|
+
env['PATH_INFO'] = ''
|
77
|
+
env['HTTP_CONTENT_TYPE'] = 'application/vnd.thrift+json'
|
78
|
+
|
79
|
+
st = Thread.new do
|
80
|
+
code, headers, out = stark_rack.call env
|
81
|
+
out.each do |s|
|
82
|
+
@sw << s
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
assert_raises Thrift::ApplicationException do
|
87
|
+
@client.add 3, 4
|
88
|
+
end
|
89
|
+
|
90
|
+
assert Thrift::ApplicationException === env['rack.exception']
|
91
|
+
assert env['rack.exception'].to_s =~ /^can't add/
|
92
|
+
end
|
93
|
+
|
65
94
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stark-rack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-08-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: stark
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
requirements:
|
67
67
|
- - ~>
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '3.
|
69
|
+
version: '3.7'
|
70
70
|
type: :development
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -74,7 +74,7 @@ dependencies:
|
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: '3.
|
77
|
+
version: '3.7'
|
78
78
|
description: Provides middleware for mounting Stark/Thrift services as Rack endpoints.
|
79
79
|
email:
|
80
80
|
- evan@phx.io
|
@@ -109,7 +109,8 @@ files:
|
|
109
109
|
- test/test_rack.rb
|
110
110
|
- test/test_rest.rb
|
111
111
|
homepage: https://github.com/evanphx/stark-rack
|
112
|
-
licenses:
|
112
|
+
licenses:
|
113
|
+
- MIT
|
113
114
|
post_install_message:
|
114
115
|
rdoc_options:
|
115
116
|
- --main
|