nyny 1.0.0.pre1 → 1.0.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +12 -0
- data/Gemfile +5 -0
- data/Performance.md +8 -6
- data/README.md +116 -55
- data/Rakefile +5 -0
- data/benchmarks/filters/{frankie.rb → nyny.rb} +2 -2
- data/benchmarks/helpers/{frankie.rb → nyny.rb} +2 -2
- data/benchmarks/simple/{frankie.rb → nyny.rb} +2 -2
- data/benchmarks/url_pattern/{frankie.rb → nyny.rb} +2 -2
- data/examples/active_record/server.rb +2 -2
- data/examples/data_mapper/Gemfile +7 -0
- data/examples/data_mapper/database.rb +7 -0
- data/examples/data_mapper/models/shout.rb +7 -0
- data/examples/data_mapper/server.rb +41 -0
- data/examples/json_api.rb +2 -2
- data/examples/templates/server.rb +5 -4
- data/examples/web_sockets/server.rb +4 -4
- data/lib/nyny.rb +4 -2
- data/lib/nyny/app.rb +46 -47
- data/lib/nyny/middleware_chain.rb +14 -0
- data/lib/nyny/request_scope.rb +3 -9
- data/lib/nyny/route_signature.rb +11 -11
- data/lib/nyny/router.rb +44 -0
- data/lib/nyny/runner.rb +18 -0
- data/lib/nyny/version.rb +1 -1
- data/nyny.gemspec +2 -2
- data/spec/app_spec.rb +34 -24
- data/spec/primitives_spec.rb +11 -4
- data/spec/request_scope_spec.rb +12 -2
- data/spec/route_signature_spec.rb +9 -0
- data/spec/runner_spec.rb +23 -0
- data/spec/spec_helper.rb +14 -3
- metadata +23 -15
- data/.ruby-gemset +0 -1
- data/lib/nyny/class_level_api.rb +0 -40
- data/spec/class_level_api_spec.rb +0 -39
data/spec/primitives_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Request do
|
4
|
-
let (:subject) { Request.new
|
4
|
+
let (:subject) { Request.new double }
|
5
5
|
|
6
6
|
it { should be_a(Rack::Request) }
|
7
7
|
end
|
@@ -11,14 +11,21 @@ describe Response do
|
|
11
11
|
|
12
12
|
describe '#raw_body' do
|
13
13
|
it 'should be accesible when the response was initialized' do
|
14
|
-
raw_body =
|
14
|
+
raw_body = double
|
15
15
|
res = Response.new raw_body
|
16
16
|
res.raw_body.should == raw_body
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'should accesible after body was set' do
|
20
20
|
res = Response.new
|
21
|
-
raw_body =
|
21
|
+
raw_body = double
|
22
|
+
res.body = raw_body
|
23
|
+
res.raw_body.should == raw_body
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should set the iterable as the raw body as well' do
|
27
|
+
res = Response.new
|
28
|
+
raw_body = ['one', 'two']
|
22
29
|
res.body = raw_body
|
23
30
|
res.raw_body.should == raw_body
|
24
31
|
end
|
data/spec/request_scope_spec.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe RequestScope do
|
4
4
|
let (:env) { Rack::MockRequest.env_for '/', :params => {:some => 'param'} }
|
5
5
|
let (:dummy_request) { Rack::Request.new(env) }
|
6
|
-
let (:subject) { RequestScope.new
|
6
|
+
let (:subject) { RequestScope.new dummy_request }
|
7
7
|
let (:handler) {
|
8
8
|
Proc.new {"hello"}
|
9
9
|
}
|
@@ -18,6 +18,16 @@ describe RequestScope do
|
|
18
18
|
its (:cookies) { should == dummy_request.cookies }
|
19
19
|
its (:session) { should == dummy_request.session }
|
20
20
|
|
21
|
+
it 'params should have insensitive keys' do
|
22
|
+
app = mock_app do
|
23
|
+
get '/' do
|
24
|
+
params[:foo].should == params['foo']
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
app.get '/?foo=bar'
|
29
|
+
end
|
30
|
+
|
21
31
|
it '#headers should set the header values' do
|
22
32
|
subject.headers 'Head' => 'Tail'
|
23
33
|
response = subject.apply_to &handler
|
data/spec/runner_spec.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Runner do
|
4
|
+
describe '.run!' do
|
5
|
+
before do
|
6
|
+
handler = begin
|
7
|
+
Rack::Handler::Thin
|
8
|
+
rescue LoadError
|
9
|
+
Rack::Handler::WEBrick
|
10
|
+
end
|
11
|
+
handler.stub :run
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should include the default middleware on top' do
|
15
|
+
kls = mock_app_class do
|
16
|
+
end
|
17
|
+
|
18
|
+
kls.run!
|
19
|
+
kls.middlewares.first.should == Rack::ShowExceptions
|
20
|
+
kls.middlewares[1].should == Rack::CommonLogger
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,17 @@
|
|
1
|
-
require 'nyny'
|
2
1
|
require 'rack'
|
3
2
|
require 'securerandom'
|
3
|
+
|
4
|
+
if ENV['TRAVIS']
|
5
|
+
require 'coveralls'
|
6
|
+
Coveralls.wear!
|
7
|
+
else
|
8
|
+
require 'simplecov'
|
9
|
+
SimpleCov.start do
|
10
|
+
add_filter "spec"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
require 'nyny'
|
4
15
|
include NYNY
|
5
16
|
|
6
17
|
class Rack::MockRequest
|
@@ -13,10 +24,10 @@ def extended_modules_for kls
|
|
13
24
|
end
|
14
25
|
|
15
26
|
def mock_app &blk
|
16
|
-
Rack::MockRequest.new
|
27
|
+
Rack::MockRequest.new mock_app_class(&blk).new
|
17
28
|
end
|
18
29
|
|
19
|
-
def
|
30
|
+
def mock_app_class &blk
|
20
31
|
Class.new(App, &blk)
|
21
32
|
end
|
22
33
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nyny
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrei Lisnic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,7 +52,7 @@ dependencies:
|
|
52
52
|
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
description: New York, New York.
|
55
|
+
description: New York, New York - (very) small Sinatra clone.
|
56
56
|
email:
|
57
57
|
- andrei.lisnic@gmail.com
|
58
58
|
executables: []
|
@@ -61,20 +61,20 @@ extra_rdoc_files: []
|
|
61
61
|
files:
|
62
62
|
- .gitignore
|
63
63
|
- .rspec
|
64
|
-
- .ruby-gemset
|
65
64
|
- .ruby-version
|
65
|
+
- .travis.yml
|
66
66
|
- Gemfile
|
67
67
|
- LICENSE.txt
|
68
68
|
- Performance.md
|
69
69
|
- README.md
|
70
70
|
- Rakefile
|
71
|
-
- benchmarks/filters/
|
71
|
+
- benchmarks/filters/nyny.rb
|
72
72
|
- benchmarks/filters/sinatra.rb
|
73
|
-
- benchmarks/helpers/
|
73
|
+
- benchmarks/helpers/nyny.rb
|
74
74
|
- benchmarks/helpers/sinatra.rb
|
75
|
-
- benchmarks/simple/
|
75
|
+
- benchmarks/simple/nyny.rb
|
76
76
|
- benchmarks/simple/sinatra.rb
|
77
|
-
- benchmarks/url_pattern/
|
77
|
+
- benchmarks/url_pattern/nyny.rb
|
78
78
|
- benchmarks/url_pattern/sinatra.rb
|
79
79
|
- examples/active_record/.gitignore
|
80
80
|
- examples/active_record/Gemfile
|
@@ -84,6 +84,10 @@ files:
|
|
84
84
|
- examples/active_record/db/migrate/20130606133756_add_shouts.rb
|
85
85
|
- examples/active_record/models/shout.rb
|
86
86
|
- examples/active_record/server.rb
|
87
|
+
- examples/data_mapper/Gemfile
|
88
|
+
- examples/data_mapper/database.rb
|
89
|
+
- examples/data_mapper/models/shout.rb
|
90
|
+
- examples/data_mapper/server.rb
|
87
91
|
- examples/json_api.rb
|
88
92
|
- examples/templates/server.rb
|
89
93
|
- examples/templates/views/index.haml
|
@@ -95,16 +99,19 @@ files:
|
|
95
99
|
- examples/web_sockets/server.rb
|
96
100
|
- lib/nyny.rb
|
97
101
|
- lib/nyny/app.rb
|
98
|
-
- lib/nyny/
|
102
|
+
- lib/nyny/middleware_chain.rb
|
99
103
|
- lib/nyny/primitives.rb
|
100
104
|
- lib/nyny/request_scope.rb
|
101
105
|
- lib/nyny/route_signature.rb
|
106
|
+
- lib/nyny/router.rb
|
107
|
+
- lib/nyny/runner.rb
|
102
108
|
- lib/nyny/version.rb
|
103
109
|
- nyny.gemspec
|
104
110
|
- spec/app_spec.rb
|
105
|
-
- spec/class_level_api_spec.rb
|
106
111
|
- spec/primitives_spec.rb
|
107
112
|
- spec/request_scope_spec.rb
|
113
|
+
- spec/route_signature_spec.rb
|
114
|
+
- spec/runner_spec.rb
|
108
115
|
- spec/spec_helper.rb
|
109
116
|
homepage: https://github.com/alisnic/nyny
|
110
117
|
licenses:
|
@@ -121,18 +128,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
121
128
|
version: '0'
|
122
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
130
|
requirements:
|
124
|
-
- - '
|
131
|
+
- - '>='
|
125
132
|
- !ruby/object:Gem::Version
|
126
|
-
version:
|
133
|
+
version: '0'
|
127
134
|
requirements: []
|
128
135
|
rubyforge_project:
|
129
|
-
rubygems_version: 2.0.
|
136
|
+
rubygems_version: 2.0.3
|
130
137
|
signing_key:
|
131
138
|
specification_version: 4
|
132
|
-
summary:
|
139
|
+
summary: New York, New York.
|
133
140
|
test_files:
|
134
141
|
- spec/app_spec.rb
|
135
|
-
- spec/class_level_api_spec.rb
|
136
142
|
- spec/primitives_spec.rb
|
137
143
|
- spec/request_scope_spec.rb
|
144
|
+
- spec/route_signature_spec.rb
|
145
|
+
- spec/runner_spec.rb
|
138
146
|
- spec/spec_helper.rb
|
data/.ruby-gemset
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
frankie
|
data/lib/nyny/class_level_api.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
module NYNY
|
2
|
-
module ClassLevelApi
|
3
|
-
HTTP_VERBS = [:delete, :get, :head, :options, :patch, :post, :put, :trace]
|
4
|
-
HTTP_VERBS.each do |method|
|
5
|
-
define_method method do |str, &blk|
|
6
|
-
(routes[method] ||= {})[RouteSignature.new(str)] = Proc.new &blk
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
def middlewares; @middlewares ||= [] end
|
11
|
-
def routes; @routes ||= {} end
|
12
|
-
def before_hooks; @before_hooks ||= [] end
|
13
|
-
def after_hooks; @after_hooks ||= [] end
|
14
|
-
|
15
|
-
def use_protection! args={}
|
16
|
-
begin
|
17
|
-
require 'rack/protection'
|
18
|
-
middlewares.unshift [Rack::Protection, args]
|
19
|
-
rescue LoadError
|
20
|
-
puts "WARN: to use protection, you must install 'rack-protection' gem"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def before &blk
|
25
|
-
before_hooks << Proc.new(&blk)
|
26
|
-
end
|
27
|
-
|
28
|
-
def after &blk
|
29
|
-
after_hooks << Proc.new(&blk)
|
30
|
-
end
|
31
|
-
|
32
|
-
def use middleware, *args, &block
|
33
|
-
middlewares << [middleware, args, block]
|
34
|
-
end
|
35
|
-
|
36
|
-
def helpers *args
|
37
|
-
args.each {|m| RequestScope.add_helper_module m }
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
require_relative 'spec_helper'
|
2
|
-
|
3
|
-
describe ClassLevelApi do
|
4
|
-
let (:app_class) { Class.new(App) }
|
5
|
-
describe 'middlewares' do
|
6
|
-
let (:app_class) do
|
7
|
-
frankie_app do
|
8
|
-
use NullMiddleware
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'should allow to add a middleware' do
|
13
|
-
app_class.middlewares.last.first.should == NullMiddleware
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'should call the middleware when called' do
|
17
|
-
app = app_class.new
|
18
|
-
top = app.instance_variable_get '@top'
|
19
|
-
top.class.should == NullMiddleware
|
20
|
-
top.should_receive :call
|
21
|
-
app.call Rack::MockRequest.env_for '/'
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
describe 'helpers' do
|
26
|
-
it 'should allow to include a helper in request scope' do
|
27
|
-
app_class.helpers NullHelper
|
28
|
-
RequestScope.ancestors.should include(NullHelper)
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'should allow to include multiple helpers modules' do
|
32
|
-
module NullHelper2
|
33
|
-
end
|
34
|
-
|
35
|
-
app_class.helpers NullHelper, NullHelper2
|
36
|
-
RequestScope.ancestors.should include(NullHelper, NullHelper2)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|