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 CHANGED
@@ -1,3 +1,7 @@
1
+ === 1.0.1 / 2013-08-20
2
+
3
+ * Save any marshalled thrift exceptions in env['rack.exception']
4
+
1
5
  === 1.0.0 / 2013-05-22
2
6
 
3
7
  * 1 major enhancement
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.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.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-05-22"
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.6"])
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.6"])
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.6"])
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.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-05-22 00:00:00.000000000 Z
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.6'
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.6'
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