nyara 0.0.1.pre.5 → 0.0.1.pre.6
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/example/factorial.rb +19 -0
- data/ext/accept.c +2 -2
- data/ext/event.c +48 -23
- data/ext/extconf.rb +2 -0
- data/ext/hashes.c +28 -3
- data/ext/http-parser/http_parser.h +1 -0
- data/ext/nyara.c +20 -3
- data/ext/nyara.h +13 -2
- data/ext/request.c +90 -13
- data/ext/request.h +8 -2
- data/ext/request_parse.c +135 -6
- data/ext/route.cc +7 -10
- data/ext/test_response.c +155 -0
- data/ext/url_encoded.c +0 -5
- data/lib/nyara/config.rb +5 -0
- data/lib/nyara/controller.rb +91 -28
- data/lib/nyara/cookie.rb +7 -0
- data/lib/nyara/flash.rb +23 -0
- data/lib/nyara/hashes/header_hash.rb +2 -0
- data/lib/nyara/nyara.rb +14 -2
- data/lib/nyara/part.rb +156 -0
- data/lib/nyara/patches/array.rb +5 -0
- data/lib/nyara/patches/blank.rb +128 -0
- data/lib/nyara/patches/json.rb +15 -0
- data/lib/nyara/patches/mini_support.rb +6 -0
- data/lib/nyara/patches/string.rb +21 -0
- data/lib/nyara/patches/to_query.rb +113 -0
- data/lib/nyara/request.rb +13 -15
- data/lib/nyara/route.rb +15 -80
- data/lib/nyara/route_entry.rb +69 -2
- data/lib/nyara/session.rb +66 -21
- data/lib/nyara/test.rb +170 -0
- data/lib/nyara/view.rb +5 -6
- data/lib/nyara.rb +7 -6
- data/nyara.gemspec +2 -2
- data/rakefile +34 -4
- data/readme.md +8 -1
- data/spec/config_spec.rb +28 -0
- data/spec/cpu_counter_spec.rb +9 -0
- data/spec/evented_io_spec.rb +1 -0
- data/spec/flash_spec.rb +29 -0
- data/spec/hashes_spec.rb +8 -0
- data/spec/mini_support_spec.rb +54 -0
- data/spec/part_spec.rb +52 -0
- data/spec/path_helper_spec.rb +22 -14
- data/spec/request_delegate_spec.rb +19 -11
- data/spec/route_entry_spec.rb +55 -0
- data/spec/session_spec.rb +69 -7
- data/spec/spec_helper.rb +3 -0
- data/spec/test_spec.rb +58 -0
- data/tools/hello.rb +11 -3
- data/tools/memcheck.rb +33 -0
- data/tools/s.rb +11 -0
- metadata +23 -7
- data/example/design.rb +0 -62
- data/example/fib.rb +0 -15
- data/spec/route_spec.rb +0 -84
- /data/ext/inc/{status_codes.inc → status_codes.h} +0 -0
data/tools/memcheck.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
require_relative "../lib/nyara/nyara"
|
2
|
+
|
3
|
+
module Nyara
|
4
|
+
class SimpleController < Controller
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
%w[on tag get post put delete patch options].each do |m|
|
9
|
+
eval <<-RUBY
|
10
|
+
def #{m} *xs, &blk
|
11
|
+
Nyara::SimpleController.#{m} *xs, &blk
|
12
|
+
end
|
13
|
+
RUBY
|
14
|
+
end
|
15
|
+
|
16
|
+
configure do
|
17
|
+
map '/', 'nyara::simple'
|
18
|
+
end
|
19
|
+
|
20
|
+
get '/' do
|
21
|
+
send_string 'hello world'
|
22
|
+
end
|
23
|
+
|
24
|
+
get '/gc' do
|
25
|
+
GC.stress = true
|
26
|
+
end
|
27
|
+
|
28
|
+
get '/ngc' do
|
29
|
+
GC.stress = false
|
30
|
+
end
|
31
|
+
|
32
|
+
Nyara.setup
|
33
|
+
Nyara.start_server
|
data/tools/s.rb
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nyara
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1.pre.
|
4
|
+
version: 0.0.1.pre.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zete Lui
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Fast, slim and fuzzy ruby web framework + server, based on preforked
|
14
14
|
event queue and Fiber. NO rack NOR eventmachine are used.
|
@@ -21,8 +21,7 @@ files:
|
|
21
21
|
- rakefile
|
22
22
|
- nyara.gemspec
|
23
23
|
- readme.md
|
24
|
-
- example/
|
25
|
-
- example/fib.rb
|
24
|
+
- example/factorial.rb
|
26
25
|
- example/hello.rb
|
27
26
|
- example/stream.rb
|
28
27
|
- ext/extconf.rb
|
@@ -30,25 +29,39 @@ files:
|
|
30
29
|
- lib/nyara/controller.rb
|
31
30
|
- lib/nyara/cookie.rb
|
32
31
|
- lib/nyara/cpu_counter.rb
|
32
|
+
- lib/nyara/flash.rb
|
33
33
|
- lib/nyara/hashes/config_hash.rb
|
34
34
|
- lib/nyara/hashes/header_hash.rb
|
35
35
|
- lib/nyara/hashes/param_hash.rb
|
36
36
|
- lib/nyara/mime_types.rb
|
37
37
|
- lib/nyara/nyara.rb
|
38
|
+
- lib/nyara/part.rb
|
39
|
+
- lib/nyara/patches/array.rb
|
40
|
+
- lib/nyara/patches/blank.rb
|
41
|
+
- lib/nyara/patches/json.rb
|
42
|
+
- lib/nyara/patches/mini_support.rb
|
43
|
+
- lib/nyara/patches/string.rb
|
38
44
|
- lib/nyara/patches/tcp_socket.rb
|
45
|
+
- lib/nyara/patches/to_query.rb
|
39
46
|
- lib/nyara/request.rb
|
40
47
|
- lib/nyara/route.rb
|
41
48
|
- lib/nyara/route_entry.rb
|
42
49
|
- lib/nyara/session.rb
|
50
|
+
- lib/nyara/test.rb
|
43
51
|
- lib/nyara/view.rb
|
44
52
|
- lib/nyara.rb
|
45
53
|
- spec/apps/connect.rb
|
54
|
+
- spec/config_spec.rb
|
55
|
+
- spec/cpu_counter_spec.rb
|
46
56
|
- spec/evented_io_spec.rb
|
47
57
|
- spec/ext_mime_match_spec.rb
|
48
58
|
- spec/ext_parse_accept_value_spec.rb
|
49
59
|
- spec/ext_parse_spec.rb
|
50
60
|
- spec/ext_route_spec.rb
|
61
|
+
- spec/flash_spec.rb
|
51
62
|
- spec/hashes_spec.rb
|
63
|
+
- spec/mini_support_spec.rb
|
64
|
+
- spec/part_spec.rb
|
52
65
|
- spec/path_helper_spec.rb
|
53
66
|
- spec/performance/layout_render.rb
|
54
67
|
- spec/performance/parse_accept_value.rb
|
@@ -58,15 +71,18 @@ files:
|
|
58
71
|
- spec/request_delegate_spec.rb
|
59
72
|
- spec/request_spec.rb
|
60
73
|
- spec/route_entry_spec.rb
|
61
|
-
- spec/route_spec.rb
|
62
74
|
- spec/session_spec.rb
|
63
75
|
- spec/spec_helper.rb
|
76
|
+
- spec/test_spec.rb
|
64
77
|
- spec/view_spec.rb
|
65
78
|
- tools/bench-cookie.rb
|
66
79
|
- tools/hello.rb
|
80
|
+
- tools/memcheck.rb
|
81
|
+
- tools/s.rb
|
67
82
|
- ext/http-parser/http_parser.h
|
68
83
|
- ext/inc/epoll.h
|
69
84
|
- ext/inc/kqueue.h
|
85
|
+
- ext/inc/status_codes.h
|
70
86
|
- ext/inc/str_intern.h
|
71
87
|
- ext/multipart-parser-c/multipart_parser.h
|
72
88
|
- ext/nyara.h
|
@@ -85,9 +101,9 @@ files:
|
|
85
101
|
- ext/nyara.c
|
86
102
|
- ext/request.c
|
87
103
|
- ext/request_parse.c
|
104
|
+
- ext/test_response.c
|
88
105
|
- ext/url_encoded.c
|
89
106
|
- ext/route.cc
|
90
|
-
- ext/inc/status_codes.inc
|
91
107
|
- ext/inc/version.inc
|
92
108
|
- ext/http-parser/AUTHORS
|
93
109
|
- ext/http-parser/CONTRIBUTIONS
|
@@ -95,7 +111,7 @@ files:
|
|
95
111
|
- ext/multipart-parser-c/README.md
|
96
112
|
homepage: https://github.com/luikore/nyara
|
97
113
|
licenses:
|
98
|
-
- BSD
|
114
|
+
- BSD 3-Clause
|
99
115
|
metadata: {}
|
100
116
|
post_install_message:
|
101
117
|
rdoc_options: []
|
data/example/design.rb
DELETED
@@ -1,62 +0,0 @@
|
|
1
|
-
meta '#hello', accept: %w[js html] | default is text/html, default / * not implemented yet
|
2
|
-
get '/' do
|
3
|
-
send_data ... --> will make encoding chunked
|
4
|
-
|
5
|
-
# set resp status
|
6
|
-
status 302 | :not_found
|
7
|
-
|
8
|
-
# content type is separated out from render
|
9
|
-
content_type :js
|
10
|
-
|
11
|
-
# terminal action : render view, or file for download
|
12
|
-
render ..., layout: [a, b, c]
|
13
|
-
|
14
|
-
render file # choose renderer by ext
|
15
|
-
render :slim => template_content
|
16
|
-
|
17
|
-
... Fiber.yield
|
18
|
-
|
19
|
-
s = stream ... # same arg as render
|
20
|
-
...
|
21
|
-
r.resume
|
22
|
-
...
|
23
|
-
r.resume
|
24
|
-
|
25
|
-
render :slim, 'content'
|
26
|
-
|
27
|
-
# terminal action
|
28
|
-
redirect_to path_for '...'
|
29
|
-
redirect_to '/'
|
30
|
-
redirect_to :back # referrer
|
31
|
-
|
32
|
-
# terminate process
|
33
|
-
halt status
|
34
|
-
|
35
|
-
# loop response
|
36
|
-
loop do
|
37
|
-
sleep 4
|
38
|
-
send_data ...
|
39
|
-
end
|
40
|
-
|
41
|
-
# can use accept when meta is configured, raise error if not configured
|
42
|
-
case accept
|
43
|
-
when 'html'
|
44
|
-
...
|
45
|
-
when 'js'
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
# default is no scheme, the links start with // to fit all schemes
|
50
|
-
configure url_for, default_scheme nil / 'https'
|
51
|
-
|
52
|
-
url_for '#b', scheme: 'http', format: 'js', host: 'a.b.c:3000' # string keys are put in query
|
53
|
-
|
54
|
-
path_for 'cont#action', 12, 3, :format => 'js', # string keys are put in query, (what about hash tags?)
|
55
|
-
|
56
|
-
partial '...'
|
57
|
-
|
58
|
-
# for middleware, we use life cycle callbacks
|
59
|
-
# on :header_complete
|
60
|
-
# on :init
|
61
|
-
|
62
|
-
# before
|
data/example/fib.rb
DELETED
data/spec/route_spec.rb
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
require_relative "spec_helper"
|
2
|
-
|
3
|
-
module Nyara
|
4
|
-
describe Route do
|
5
|
-
# fixme: ugly code
|
6
|
-
it "#process" do
|
7
|
-
entries1 = [
|
8
|
-
RouteEntry.new{
|
9
|
-
@http_method = 'GET',
|
10
|
-
@path = '/hello/%f',
|
11
|
-
@id = :'#hello_f'
|
12
|
-
},
|
13
|
-
RouteEntry.new{
|
14
|
-
@http_method = 'POST',
|
15
|
-
@path = '/%s/%u-%d',
|
16
|
-
@id = :'#post'
|
17
|
-
}
|
18
|
-
]
|
19
|
-
entries2 = [
|
20
|
-
RouteEntry.new{
|
21
|
-
@http_method = 'GET',
|
22
|
-
@path = '/',
|
23
|
-
@id = :'#hel'
|
24
|
-
}
|
25
|
-
]
|
26
|
-
entries3 = [
|
27
|
-
RouteEntry.new{
|
28
|
-
@http_method = 'GET',
|
29
|
-
@path = '/%s',
|
30
|
-
@id = :'#ello_s'
|
31
|
-
}
|
32
|
-
]
|
33
|
-
|
34
|
-
preprocessed_rules = [
|
35
|
-
['/', 'Stub1', entries1],
|
36
|
-
['/hel', 'Stub2', entries2],
|
37
|
-
['/ello', 'Stub3', entries3]
|
38
|
-
]
|
39
|
-
|
40
|
-
rules = Route.process preprocessed_rules
|
41
|
-
e_prefices, e_scopes, e_ids = [
|
42
|
-
['/hello/', '/', :'#hello_f'],
|
43
|
-
['/hel', '/hel', :'#hel'],
|
44
|
-
['/ello/', '/ello', :'#ello_s'],
|
45
|
-
['/', '/', :'#post']
|
46
|
-
].transpose
|
47
|
-
|
48
|
-
assert_equal e_prefices, rules.map(&:prefix)
|
49
|
-
assert_equal e_scopes, rules.map(&:scope)
|
50
|
-
assert_equal e_ids, rules.map(&:id)
|
51
|
-
end
|
52
|
-
|
53
|
-
it "#compile_re" do
|
54
|
-
re, conv = Route.compile_re '%s/%u/%d/%f/%x'
|
55
|
-
assert_equal [:to_s, :to_i, :to_i, :to_f, :hex], conv
|
56
|
-
s = '1/2/-3/4.5/F'
|
57
|
-
assert_equal [s, *s.split('/')], s.match(Regexp.new re).to_a
|
58
|
-
|
59
|
-
re, conv = Route.compile_re '/'
|
60
|
-
assert_equal '^/$', re
|
61
|
-
assert_equal [], conv
|
62
|
-
end
|
63
|
-
|
64
|
-
it "#compile_re with utf-8 chars" do
|
65
|
-
re, conv = Route.compile_re '/目录/%da/也可以'
|
66
|
-
assert_equal [:to_i], conv
|
67
|
-
s = "/目录/12a/也可以"
|
68
|
-
assert_equal [s, '12'], s.match(Regexp.new re).to_a
|
69
|
-
end
|
70
|
-
|
71
|
-
it "#analyse_path" do
|
72
|
-
r = Route.analyse_path '/hello/%d-world%u/%s/'
|
73
|
-
assert_equal ['/hello/', '%d-world%u/%s'], r
|
74
|
-
|
75
|
-
prefix, suffix = Route.analyse_path '/hello'
|
76
|
-
assert_equal '/hello', prefix
|
77
|
-
assert_equal nil, suffix
|
78
|
-
|
79
|
-
prefix, suffix = Route.analyse_path '/'
|
80
|
-
assert_equal '/', prefix
|
81
|
-
assert_equal nil, suffix
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
File without changes
|