strelka 0.6.0 → 0.7.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
- checksums.yaml.gz.sig +0 -0
- data/ChangeLog +156 -9
- data/History.rdoc +15 -0
- data/IDEAS.rdoc +17 -1
- data/MILESTONES.rdoc +1 -1
- data/Manifest.txt +10 -2
- data/Plugins.rdoc +4 -4
- data/README.rdoc +3 -3
- data/Rakefile +5 -4
- data/bin/strelka +19 -10
- data/contrib/hoetemplate/data/project/apps/file_name_app +1 -0
- data/contrib/hoetemplate/lib/file_name.rb.erb +3 -2
- data/examples/apps/hello-world +1 -0
- data/examples/apps/ws-chat +69 -0
- data/examples/apps/ws-echo +61 -0
- data/examples/gen-config.rb +6 -5
- data/lib/strelka/app/auth.rb +2 -2
- data/lib/strelka/app/errors.rb +1 -1
- data/lib/strelka/app/filters.rb +3 -2
- data/lib/strelka/app/negotiation.rb +2 -2
- data/lib/strelka/app/parameters.rb +1 -2
- data/lib/strelka/app/restresources.rb +3 -2
- data/lib/strelka/app/routing.rb +1 -1
- data/lib/strelka/app/sessions.rb +2 -2
- data/lib/strelka/app/templating.rb +7 -3
- data/lib/strelka/app.rb +5 -145
- data/lib/strelka/behavior/plugin.rb +4 -4
- data/lib/strelka/discovery.rb +211 -0
- data/lib/strelka/httprequest.rb +1 -0
- data/lib/strelka/httpresponse/negotiation.rb +7 -1
- data/lib/strelka/mixins.rb +4 -1
- data/lib/strelka/paramvalidator.rb +1 -1
- data/lib/strelka/plugins.rb +8 -6
- data/lib/strelka/websocketserver/routing.rb +116 -0
- data/lib/strelka/websocketserver.rb +147 -0
- data/lib/strelka.rb +5 -4
- data/spec/{lib/constants.rb → constants.rb} +3 -2
- data/spec/{lib/helpers.rb → helpers.rb} +15 -14
- data/spec/strelka/app/auth_spec.rb +145 -142
- data/spec/strelka/app/errors_spec.rb +20 -26
- data/spec/strelka/app/filters_spec.rb +67 -54
- data/spec/strelka/app/negotiation_spec.rb +8 -14
- data/spec/strelka/app/parameters_spec.rb +23 -29
- data/spec/strelka/app/restresources_spec.rb +98 -100
- data/spec/strelka/app/routing_spec.rb +57 -57
- data/spec/strelka/app/sessions_spec.rb +11 -17
- data/spec/strelka/app/templating_spec.rb +36 -40
- data/spec/strelka/app_spec.rb +48 -147
- data/spec/strelka/authprovider/basic_spec.rb +5 -11
- data/spec/strelka/authprovider/hostaccess_spec.rb +9 -15
- data/spec/strelka/authprovider_spec.rb +3 -9
- data/spec/strelka/cookie_spec.rb +32 -38
- data/spec/strelka/cookieset_spec.rb +31 -37
- data/spec/strelka/discovery_spec.rb +144 -0
- data/spec/strelka/exceptions_spec.rb +2 -8
- data/spec/strelka/httprequest/acceptparams_spec.rb +74 -83
- data/spec/strelka/httprequest/auth_spec.rb +5 -15
- data/spec/strelka/httprequest/negotiation_spec.rb +93 -103
- data/spec/strelka/httprequest/session_spec.rb +12 -22
- data/spec/strelka/httprequest_spec.rb +1 -7
- data/spec/strelka/httpresponse/negotiation_spec.rb +84 -76
- data/spec/strelka/httpresponse/session_spec.rb +25 -35
- data/spec/strelka/httpresponse_spec.rb +20 -26
- data/spec/strelka/mixins_spec.rb +66 -61
- data/spec/strelka/multipartparser_spec.rb +31 -37
- data/spec/strelka/paramvalidator_spec.rb +389 -373
- data/spec/strelka/plugins_spec.rb +17 -23
- data/spec/strelka/router/default_spec.rb +32 -38
- data/spec/strelka/router/exclusive_spec.rb +28 -34
- data/spec/strelka/router_spec.rb +2 -8
- data/spec/strelka/session/db_spec.rb +17 -15
- data/spec/strelka/session/default_spec.rb +22 -28
- data/spec/strelka/session_spec.rb +3 -9
- data/spec/strelka/websocketserver/routing_spec.rb +119 -0
- data/spec/strelka/websocketserver_spec.rb +149 -0
- data/spec/strelka_spec.rb +11 -13
- data.tar.gz.sig +3 -3
- metadata +22 -14
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9917d0f2aa0af3e703673e52fa232213ca6c1ecd
|
4
|
+
data.tar.gz: 33663b826ca6419b795bb01272c4d89bea9f1944
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e9d6bc816de257d09d2f96135cec0f4e167e18657e458d172cf51fde131ba58f5f8e761adec8a4709cc4a3849e8a8c067539993ee9e01cca98ebaacd71818c4
|
7
|
+
data.tar.gz: ebfb61a89a233bba657937877bf1eb61ade3b907bda55ba2d188ce397358e52e5cc6a762a04c13664baa45867c8640967903acb63f095a979a011e87d3139c27
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/ChangeLog
CHANGED
@@ -1,8 +1,156 @@
|
|
1
|
+
2013-10-15 Michael Granger <ged@faeriemud.org>
|
2
|
+
|
3
|
+
* Close branch rdolgushin/ideasrdoc-russian-woof-fix-1381879886956
|
4
|
+
[dedc90b70209] [tip] <rdolgushin/ideasrdoc-russian-woof-fix-1381879886956>
|
5
|
+
|
6
|
+
* Merged in rdolgushin/strelka/rdolgushin/ideasrdoc-russian-woof-
|
7
|
+
fix-1381879886956 (pull request #2)
|
8
|
+
|
9
|
+
IDEAS.rdoc: Russian 'woof' fix
|
10
|
+
[ac7fea5af58f] [github/master]
|
11
|
+
|
12
|
+
2013-10-15 Roman Dolgushin <rd@roman-dolgushin.ru>
|
13
|
+
|
14
|
+
* IDEAS.rdoc:
|
15
|
+
IDEAS.rdoc: Russian 'woof' fix
|
16
|
+
[639105edf399] <rdolgushin/ideasrdoc-russian-woof-fix-1381879886956>
|
17
|
+
|
18
|
+
2013-10-15 Michael Granger <ged@FaerieMUD.org>
|
19
|
+
|
20
|
+
* Manifest.txt, bin/strelka, lib/strelka/app.rb,
|
21
|
+
lib/strelka/app/restresources.rb, lib/strelka/behavior/plugin.rb,
|
22
|
+
lib/strelka/httprequest.rb, spec/constants.rb, spec/helpers.rb,
|
23
|
+
spec/lib/constants.rb, spec/lib/helpers.rb,
|
24
|
+
spec/strelka/app/auth_spec.rb, spec/strelka/app/errors_spec.rb,
|
25
|
+
spec/strelka/app/filters_spec.rb,
|
26
|
+
spec/strelka/app/negotiation_spec.rb,
|
27
|
+
spec/strelka/app/parameters_spec.rb,
|
28
|
+
spec/strelka/app/restresources_spec.rb,
|
29
|
+
spec/strelka/app/routing_spec.rb, spec/strelka/app/sessions_spec.rb,
|
30
|
+
spec/strelka/app/templating_spec.rb, spec/strelka/app_spec.rb,
|
31
|
+
spec/strelka/authprovider/basic_spec.rb,
|
32
|
+
spec/strelka/authprovider/hostaccess_spec.rb,
|
33
|
+
spec/strelka/authprovider_spec.rb, spec/strelka/cookie_spec.rb,
|
34
|
+
spec/strelka/cookieset_spec.rb, spec/strelka/discovery_spec.rb,
|
35
|
+
spec/strelka/exceptions_spec.rb,
|
36
|
+
spec/strelka/httprequest/acceptparams_spec.rb,
|
37
|
+
spec/strelka/httprequest/auth_spec.rb,
|
38
|
+
spec/strelka/httprequest/negotiation_spec.rb,
|
39
|
+
spec/strelka/httprequest/session_spec.rb,
|
40
|
+
spec/strelka/httprequest_spec.rb,
|
41
|
+
spec/strelka/httpresponse/negotiation_spec.rb,
|
42
|
+
spec/strelka/httpresponse/session_spec.rb,
|
43
|
+
spec/strelka/httpresponse_spec.rb, spec/strelka/mixins_spec.rb,
|
44
|
+
spec/strelka/multipartparser_spec.rb,
|
45
|
+
spec/strelka/paramvalidator_spec.rb, spec/strelka/plugins_spec.rb,
|
46
|
+
spec/strelka/router/default_spec.rb,
|
47
|
+
spec/strelka/router/exclusive_spec.rb, spec/strelka/router_spec.rb,
|
48
|
+
spec/strelka/session/db_spec.rb,
|
49
|
+
spec/strelka/session/default_spec.rb, spec/strelka/session_spec.rb,
|
50
|
+
spec/strelka/websocketserver/routing_spec.rb,
|
51
|
+
spec/strelka/websocketserver_spec.rb, spec/strelka_spec.rb:
|
52
|
+
Convert specs to new RSpec syntax.
|
53
|
+
[44fa18409c36]
|
54
|
+
|
55
|
+
* contrib/hoetemplate/.tm_properties,
|
56
|
+
contrib/hoetemplate/data/project/apps/file_name_app,
|
57
|
+
contrib/hoetemplate/lib/file_name.rb.erb:
|
58
|
+
Update Textmate properties in Hoe template
|
59
|
+
[ffc16e8412df]
|
60
|
+
|
61
|
+
2013-10-07 Michael Granger <ged@FaerieMUD.org>
|
62
|
+
|
63
|
+
* .rvm.gems:
|
64
|
+
Update rvm gemset
|
65
|
+
[004066a49de5]
|
66
|
+
|
67
|
+
2013-10-06 Michael Granger <ged@FaerieMUD.org>
|
68
|
+
|
69
|
+
* Gemfile, Rakefile:
|
70
|
+
Don't explicitly depend on RSpec version (use hoe-deveiate's
|
71
|
+
version)
|
72
|
+
[d0020cb5b3b5]
|
73
|
+
|
74
|
+
* examples/Procfile, examples/gen-config.rb:
|
75
|
+
Update for latest versions of Mongrel2 and the mongrel2 gem
|
76
|
+
[bcb0496f6135]
|
77
|
+
|
78
|
+
* lib/strelka/mixins.rb, spec/strelka/mixins_spec.rb:
|
79
|
+
Don't dup IOs or Tempfiles while deep-copying
|
80
|
+
[307d1a75161c]
|
81
|
+
|
82
|
+
* .hgignore, examples/.env:
|
83
|
+
Don't include example .env settings or logs
|
84
|
+
[76d01cc8ee54]
|
85
|
+
|
86
|
+
* Rakefile:
|
87
|
+
Fix Rakefile for latest version of Hoe
|
88
|
+
[ed5ff1b21eb1]
|
89
|
+
|
90
|
+
* .hgignore, Gemfile, Rakefile:
|
91
|
+
Add hoe-bundler for generated Gemfile.
|
92
|
+
[c2180fd0ac4f]
|
93
|
+
|
94
|
+
2013-09-20 Michael Granger <ged@FaerieMUD.org>
|
95
|
+
|
96
|
+
* lib/strelka/app.rb:
|
97
|
+
Update for newest version of Configurability.
|
98
|
+
[79b29b4c9079]
|
99
|
+
|
100
|
+
* Manifest.txt:
|
101
|
+
Update manifest
|
102
|
+
[719fbab274b9]
|
103
|
+
|
104
|
+
2013-09-10 Michael Granger <ged@FaerieMUD.org>
|
105
|
+
|
106
|
+
* IDEAS.rdoc, MILESTONES.rdoc, bin/strelka, examples/Procfile,
|
107
|
+
examples/apps/hello-world, examples/apps/ws-chat, examples/apps/ws-
|
108
|
+
echo, lib/strelka.rb, lib/strelka/app.rb,
|
109
|
+
lib/strelka/app/templating.rb, lib/strelka/behavior/plugin.rb,
|
110
|
+
lib/strelka/discovery.rb, lib/strelka/websocketserver.rb,
|
111
|
+
lib/strelka/websocketserver/routing.rb, spec/lib/constants.rb,
|
112
|
+
spec/strelka/app/auth_spec.rb, spec/strelka/app/errors_spec.rb,
|
113
|
+
spec/strelka/app/filters_spec.rb,
|
114
|
+
spec/strelka/app/negotiation_spec.rb,
|
115
|
+
spec/strelka/app/parameters_spec.rb,
|
116
|
+
spec/strelka/app/restresources_spec.rb,
|
117
|
+
spec/strelka/app/routing_spec.rb, spec/strelka/app/sessions_spec.rb,
|
118
|
+
spec/strelka/app/templating_spec.rb, spec/strelka/app_spec.rb,
|
119
|
+
spec/strelka/discovery_spec.rb,
|
120
|
+
spec/strelka/websocketserver/routing_spec.rb,
|
121
|
+
spec/strelka/websocketserver_spec.rb:
|
122
|
+
Adding a websocket service base class
|
123
|
+
[dc4b69988131]
|
124
|
+
|
125
|
+
* lib/strelka/app.rb, lib/strelka/httpresponse/negotiation.rb,
|
126
|
+
spec/strelka/httpresponse/negotiation_spec.rb:
|
127
|
+
Treat exceptions raised from negotiated content blocks as a failed
|
128
|
+
format
|
129
|
+
[48fb08c7a2a3]
|
130
|
+
|
131
|
+
* spec/strelka/httpresponse/negotiation_spec.rb:
|
132
|
+
Convert httpresponse/negotiation spec to expect syntax
|
133
|
+
[f727ec415c0d]
|
134
|
+
|
135
|
+
2013-06-19 Michael Granger <ged@FaerieMUD.org>
|
136
|
+
|
137
|
+
* .hgtags:
|
138
|
+
Added tag v0.6.0 for changeset 25c5569e585b
|
139
|
+
[db22abb5e332]
|
140
|
+
|
141
|
+
* .hgsigs:
|
142
|
+
Added signature for changeset a043d61c759c
|
143
|
+
[25c5569e585b] [v0.6.0]
|
144
|
+
|
1
145
|
2013-06-12 Michael Granger <ged@FaerieMUD.org>
|
2
146
|
|
147
|
+
* History.rdoc, lib/strelka.rb:
|
148
|
+
Bump the minor version, update history.
|
149
|
+
[a043d61c759c]
|
150
|
+
|
3
151
|
* Rakefile:
|
4
152
|
Add Mahlon (finally) as an author
|
5
|
-
[d0a7eba63c10]
|
153
|
+
[d0a7eba63c10]
|
6
154
|
|
7
155
|
* lib/strelka/httprequest.rb, spec/strelka/httprequest_spec.rb:
|
8
156
|
Make HTTPRequest#params always return a Hash
|
@@ -31,7 +179,7 @@
|
|
31
179
|
* .rvm.gems, Rakefile, lib/strelka/httprequest.rb,
|
32
180
|
lib/strelka/session/db.rb, spec/strelka/httprequest_spec.rb:
|
33
181
|
Use the safe_yaml gem for loading untrusted request bodies.
|
34
|
-
[ce0387824c10]
|
182
|
+
[ce0387824c10]
|
35
183
|
|
36
184
|
* lib/strelka/paramvalidator.rb, spec/strelka/paramvalidator_spec.rb:
|
37
185
|
Fix validator for literal "false" (via JSON)
|
@@ -2092,8 +2240,8 @@
|
|
2092
2240
|
- Require Ruby-Mongrel 0.12+
|
2093
2241
|
- This is just the initial implementation. Yet to be added:
|
2094
2242
|
configuration options for enabling/disabling stuff, automatic
|
2095
|
-
composite services mapped from association reflections, mass-
|
2096
|
-
|
2243
|
+
composite services mapped from association reflections, mass- create
|
2244
|
+
option, and lots more I'm forgetting.
|
2097
2245
|
[23acdb6e9afc]
|
2098
2246
|
|
2099
2247
|
* data/strelka/bootstrap-config.rb:
|
@@ -2411,12 +2559,11 @@
|
|
2411
2559
|
spec/strelka/httpresponse/negotiation_spec.rb:
|
2412
2560
|
Alterations to the plugin system to reflect dogfood discoveries.
|
2413
2561
|
- Rearranged the lifecycle of the request to all happen inside the
|
2414
|
-
try/catch to allow fixup hooks to finish with an error status,
|
2415
|
-
too.
|
2562
|
+
try/catch to allow fixup hooks to finish with an error status, too.
|
2416
2563
|
- Moved the negotiation plugin closer to the router so negotation
|
2417
|
-
callbacks can return responses that will be further altered by
|
2418
|
-
|
2419
|
-
|
2564
|
+
callbacks can return responses that will be further altered by later
|
2565
|
+
plugins. Moved the acceptable check into the response fixup hook to
|
2566
|
+
accomplish this.
|
2420
2567
|
- Made the response fixup hook only take a response object since
|
2421
2568
|
responses can now know what their request is.
|
2422
2569
|
- Made language-negotiation short-circuit whenever there aren't any
|
data/History.rdoc
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
== v0.7.0 [2013-10-21] Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
- Make response filters always receive a response even if the handler
|
4
|
+
returns a Symbol, e.g., for the templating plugin.
|
5
|
+
- Add a note about needed documentation to :templating
|
6
|
+
- Change filter plugin order; change run_before/run_after to
|
7
|
+
run_outside/run_inside. Backward-compatibility maintained with an alias.
|
8
|
+
- Consider empty string as no value for parameter validation. (fixes #8)
|
9
|
+
- IDEAS.rdoc: Russian 'woof' fix (thanks to Roman Dolgushin <rd@roman-dolgushin.ru>)
|
10
|
+
- Don't dup IOs or Tempfiles while deep-copying
|
11
|
+
- Adding a websocket service base class
|
12
|
+
- Treat exceptions raised from negotiated content blocks as a failed
|
13
|
+
format
|
14
|
+
|
15
|
+
|
1
16
|
== v0.6.0 [2013-06-12] Michael Granger <ged@FaerieMUD.org>
|
2
17
|
|
3
18
|
- Bump dependency on Loggability and Configurability
|
data/IDEAS.rdoc
CHANGED
@@ -55,8 +55,24 @@ gem sandboxing.
|
|
55
55
|
* caching -- utilities for easy HTTP caching
|
56
56
|
|
57
57
|
|
58
|
-
==
|
58
|
+
== гав! (woof!)
|
59
59
|
|
60
60
|
Make a MacOS X tool like Pow! that makes it easy to run Strelka apps with a
|
61
61
|
minimum of setup.
|
62
62
|
|
63
|
+
|
64
|
+
== WebSocketServer
|
65
|
+
|
66
|
+
Planned features:
|
67
|
+
|
68
|
+
* DSL plugin for handling various kinds of frames, ala the App routing plugin
|
69
|
+
* DSL plugin derived from the frame-based routing plugin that adds routing logic based on a
|
70
|
+
JSON data structure's contents
|
71
|
+
* Automatic de-fragmenting of frames, with a plugin that allows customization of fragment-handling.
|
72
|
+
* Heartbeat plugin that automatically pings connected clients, and disconnects them if they haven't
|
73
|
+
been seen in a while.
|
74
|
+
* Plugin class to facilitate extensions? Not sure how this would work, but it could use
|
75
|
+
the 'deflate' extension as the test case.
|
76
|
+
|
77
|
+
|
78
|
+
|
data/MILESTONES.rdoc
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
=== Documentation
|
6
6
|
|
7
|
-
[
|
7
|
+
[√] Ensure the README is up to date
|
8
8
|
[ ] Update the IDEAS doc
|
9
9
|
[ ] Extract the rest of the tutorial part of the manual out into RDoc for the app classes
|
10
10
|
[ ] Lay out the framework for the 'cookbook' section of the manual
|
data/Manifest.txt
CHANGED
@@ -27,6 +27,8 @@ examples/apps/auth-demo2
|
|
27
27
|
examples/apps/hello-world
|
28
28
|
examples/apps/sessions-demo
|
29
29
|
examples/apps/upload-demo
|
30
|
+
examples/apps/ws-chat
|
31
|
+
examples/apps/ws-echo
|
30
32
|
examples/config.yml
|
31
33
|
examples/gen-config.rb
|
32
34
|
examples/static/examples.css
|
@@ -55,6 +57,7 @@ lib/strelka/behavior/plugin.rb
|
|
55
57
|
lib/strelka/constants.rb
|
56
58
|
lib/strelka/cookie.rb
|
57
59
|
lib/strelka/cookieset.rb
|
60
|
+
lib/strelka/discovery.rb
|
58
61
|
lib/strelka/exceptions.rb
|
59
62
|
lib/strelka/httprequest.rb
|
60
63
|
lib/strelka/httprequest/acceptparams.rb
|
@@ -75,6 +78,9 @@ lib/strelka/session.rb
|
|
75
78
|
lib/strelka/session/db.rb
|
76
79
|
lib/strelka/session/default.rb
|
77
80
|
lib/strelka/testing.rb
|
81
|
+
lib/strelka/websocketserver.rb
|
82
|
+
lib/strelka/websocketserver/routing.rb
|
83
|
+
spec/constants.rb
|
78
84
|
spec/data/error.tmpl
|
79
85
|
spec/data/forms/2_images.form
|
80
86
|
spec/data/forms/singleupload.form
|
@@ -87,8 +93,7 @@ spec/data/forms/testform_multivalue.form
|
|
87
93
|
spec/data/forms/testform_truncated_metadata.form
|
88
94
|
spec/data/layout.tmpl
|
89
95
|
spec/data/main.tmpl
|
90
|
-
spec/
|
91
|
-
spec/lib/helpers.rb
|
96
|
+
spec/helpers.rb
|
92
97
|
spec/strelka/app/auth_spec.rb
|
93
98
|
spec/strelka/app/errors_spec.rb
|
94
99
|
spec/strelka/app/filters_spec.rb
|
@@ -104,6 +109,7 @@ spec/strelka/authprovider/hostaccess_spec.rb
|
|
104
109
|
spec/strelka/authprovider_spec.rb
|
105
110
|
spec/strelka/cookie_spec.rb
|
106
111
|
spec/strelka/cookieset_spec.rb
|
112
|
+
spec/strelka/discovery_spec.rb
|
107
113
|
spec/strelka/exceptions_spec.rb
|
108
114
|
spec/strelka/httprequest/acceptparams_spec.rb
|
109
115
|
spec/strelka/httprequest/auth_spec.rb
|
@@ -123,4 +129,6 @@ spec/strelka/router_spec.rb
|
|
123
129
|
spec/strelka/session/db_spec.rb
|
124
130
|
spec/strelka/session/default_spec.rb
|
125
131
|
spec/strelka/session_spec.rb
|
132
|
+
spec/strelka/websocketserver/routing_spec.rb
|
133
|
+
spec/strelka/websocketserver_spec.rb
|
126
134
|
spec/strelka_spec.rb
|
data/Plugins.rdoc
CHANGED
@@ -58,8 +58,8 @@ applications can use it like so:
|
|
58
58
|
== Load Order
|
59
59
|
|
60
60
|
The request is passed through plugins sequentually. You can control where in
|
61
|
-
the chain your plugin belongs, by using the <tt>
|
62
|
-
<tt>
|
61
|
+
the chain your plugin belongs, by using the <tt>run_outside</tt> and
|
62
|
+
<tt>run_inside</tt> methods. Both methods accept a comma separated list of other
|
63
63
|
plugin names.
|
64
64
|
|
65
65
|
In this example case, we want the logger to log the request before the other
|
@@ -71,7 +71,7 @@ core plugins run, so any errors still make it out to the log.
|
|
71
71
|
module Strelka::App::DBLogger
|
72
72
|
extend Strelka::Plugin
|
73
73
|
|
74
|
-
|
74
|
+
run_outside :auth,
|
75
75
|
:filters,
|
76
76
|
:negotiation,
|
77
77
|
:parameters,
|
@@ -125,7 +125,7 @@ Here's the complete plugin.
|
|
125
125
|
module Strelka::App::DBLogger
|
126
126
|
extend Strelka::Plugin
|
127
127
|
|
128
|
-
|
128
|
+
run_outside :auth,
|
129
129
|
:filters,
|
130
130
|
:negotiation,
|
131
131
|
:parameters,
|
data/README.rdoc
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
= Strelka (Стрелка)
|
2
2
|
|
3
3
|
home :: http://deveiate.org/projects/Strelka
|
4
|
-
code :: http://
|
4
|
+
code :: http://bitbucket.org/ged/Strelka
|
5
5
|
github :: https://github.com/ged/strelka
|
6
6
|
docs :: http://deveiate.org/code/strelka
|
7
7
|
|
@@ -182,7 +182,7 @@ Support for sending partial responses via the Chunked encoding.
|
|
182
182
|
== Contributing
|
183
183
|
|
184
184
|
You can check out the current development source with Mercurial via its
|
185
|
-
{project page}[http://
|
185
|
+
{project page}[http://bitbucket.org/ged/Strelka]. Or if you prefer Git, via
|
186
186
|
{its Github mirror}[https://github.com/ged/strelka].
|
187
187
|
|
188
188
|
After checking out the source, run:
|
@@ -195,7 +195,7 @@ and generate the API documentation.
|
|
195
195
|
|
196
196
|
== License
|
197
197
|
|
198
|
-
Copyright (c) 2011-
|
198
|
+
Copyright (c) 2011-2013, Michael Granger and Mahlon E. Smith
|
199
199
|
All rights reserved.
|
200
200
|
|
201
201
|
Redistribution and use in source and binary forms, with or without
|
data/Rakefile
CHANGED
@@ -11,6 +11,7 @@ end
|
|
11
11
|
Hoe.plugin :mercurial
|
12
12
|
Hoe.plugin :signing
|
13
13
|
Hoe.plugin :deveiate
|
14
|
+
Hoe.plugin :bundler
|
14
15
|
|
15
16
|
Hoe.plugins.delete :rubyforge
|
16
17
|
|
@@ -27,19 +28,19 @@ hoespec = Hoe.spec 'strelka' do
|
|
27
28
|
self.dependency 'highline', '~> 1.6'
|
28
29
|
self.dependency 'inversion', '~> 0.12'
|
29
30
|
self.dependency 'loggability', '~> 0.6'
|
30
|
-
self.dependency 'mongrel2', '~> 0.
|
31
|
+
self.dependency 'mongrel2', '~> 0.40'
|
31
32
|
self.dependency 'pluggability', '~> 0.2'
|
32
33
|
self.dependency 'sysexits', '~> 1.1'
|
33
34
|
self.dependency 'trollop', '~> 2.0'
|
34
35
|
self.dependency 'uuidtools', '~> 2.1'
|
35
36
|
self.dependency 'safe_yaml', '~> 0.9'
|
36
37
|
|
37
|
-
self.dependency 'hoe-deveiate', '~> 0.
|
38
|
-
self.dependency '
|
38
|
+
self.dependency 'hoe-deveiate', '~> 0.3', :developer
|
39
|
+
self.dependency 'hoe-bundler', '~> 1.2', :developer
|
39
40
|
self.dependency 'simplecov', '~> 0.7', :developer
|
40
41
|
self.dependency 'rdoc-generator-fivefish', '~> 0.2', :developer
|
41
42
|
|
42
|
-
self.
|
43
|
+
self.license "BSD"
|
43
44
|
self.spec_extras[:rdoc_options] = [
|
44
45
|
'-t', 'Strelka Web Application Toolkit',
|
45
46
|
'-w', '4',
|
data/bin/strelka
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
# vim: set nosta noet ts=4 sw=4:
|
3
3
|
|
4
4
|
require 'strelka'
|
5
|
+
require 'strelka/discovery'
|
6
|
+
|
5
7
|
require 'trollop'
|
6
8
|
require 'highline'
|
7
9
|
require 'loggability'
|
@@ -211,7 +213,7 @@ class Strelka::CLICommand
|
|
211
213
|
# Set the datadir override if it's given
|
212
214
|
if self.options.datadir
|
213
215
|
self.log.debug "Using data dir option: %s" % [ self.options.datadir ]
|
214
|
-
Strelka::
|
216
|
+
Strelka::Discovery.local_data_dirs = Pathname( self.options.datadir )
|
215
217
|
end
|
216
218
|
|
217
219
|
# Include a 'lib' directory if there is one
|
@@ -266,7 +268,7 @@ class Strelka::CLICommand
|
|
266
268
|
|
267
269
|
self.load_additional_requires
|
268
270
|
|
269
|
-
paths = Strelka::
|
271
|
+
paths = Strelka::Discovery.discover_paths
|
270
272
|
if paths.empty?
|
271
273
|
message "None found."
|
272
274
|
else
|
@@ -297,14 +299,21 @@ class Strelka::CLICommand
|
|
297
299
|
def start_command( *args )
|
298
300
|
appname = args.pop
|
299
301
|
gemname = args.pop
|
300
|
-
path
|
302
|
+
path = nil
|
303
|
+
|
304
|
+
if File.exist?( appname )
|
305
|
+
header "Starting %s." % [ appname ]
|
306
|
+
path = appname
|
307
|
+
else
|
308
|
+
path, gemname = Strelka::Discovery.find( appname, gemname )
|
301
309
|
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
310
|
+
header "Starting the %s app%s" % [
|
311
|
+
appname,
|
312
|
+
gemname == '' ? '' : " from the #{gemname} gem"
|
313
|
+
]
|
314
|
+
end
|
306
315
|
|
307
|
-
apps = Strelka::
|
316
|
+
apps = Strelka::Discovery.load( path )
|
308
317
|
Strelka.load_config( self.options.config ) if self.options.config
|
309
318
|
self.log.debug " loaded: %p" % [ apps ]
|
310
319
|
|
@@ -328,13 +337,13 @@ class Strelka::CLICommand
|
|
328
337
|
discovery_name = gemname || ''
|
329
338
|
|
330
339
|
header "Dumping config for %s" % [ gemname || 'local apps' ]
|
331
|
-
discovered_apps = Strelka::
|
340
|
+
discovered_apps = Strelka::Discovery.discover_paths
|
332
341
|
|
333
342
|
raise ArgumentError, "No apps discovered" unless discovered_apps.key?( discovery_name )
|
334
343
|
|
335
344
|
discovered_apps[ discovery_name ].each do |apppath|
|
336
345
|
message " loading %s (%s)" % [ apppath, apppath.basename('.rb') ]
|
337
|
-
Strelka::
|
346
|
+
Strelka::Discovery.load( apppath )
|
338
347
|
end
|
339
348
|
|
340
349
|
self.load_additional_requires
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
# -*- ruby -*-
|
2
|
+
#encoding: utf-8
|
2
3
|
|
3
4
|
# <%= XIF %> (top-level documentation)
|
4
5
|
module <%= klass %>
|
@@ -7,7 +8,7 @@ module <%= klass %>
|
|
7
8
|
VERS<%# this is just here so Hoe doesn't see this constant %>ION = '0.0.1'
|
8
9
|
|
9
10
|
# Version-control revision constant
|
10
|
-
REVISION = %q$Revision:
|
11
|
+
REVISION = %q$Revision: ffc16e8412df $
|
11
12
|
|
12
13
|
end # module <%= klass %>
|
13
14
|
|
data/examples/apps/hello-world
CHANGED
@@ -0,0 +1,69 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
require 'strelka/websocketserver'
|
5
|
+
|
6
|
+
|
7
|
+
# An example of a Strelka WebSocketServer that echoes back whatever (non-control) frames you send
|
8
|
+
# it.
|
9
|
+
class WebSocketChatServer < Strelka::WebSocketServer
|
10
|
+
include Mongrel2::WebSocket::Constants
|
11
|
+
|
12
|
+
|
13
|
+
### Set up the user registry.
|
14
|
+
def initialize( * )
|
15
|
+
super
|
16
|
+
@users = {}
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
#
|
21
|
+
# Heartbeat plugin
|
22
|
+
#
|
23
|
+
plugin :heartbeat
|
24
|
+
|
25
|
+
heartbeat_rate 5.0
|
26
|
+
idle_timeout 15.0
|
27
|
+
|
28
|
+
|
29
|
+
# Make a new user slot for sockets when they start up.
|
30
|
+
on_handshake do |frame|
|
31
|
+
super
|
32
|
+
@users[ frame.socket_id ] = nil
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
# When a text frame comes in (or is assembled from :continuation frames), parse it as JSON
|
37
|
+
# and decide what to do based on its contents.
|
38
|
+
on_text do |frame|
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
# Handle close frames
|
45
|
+
on_close do |frame|
|
46
|
+
|
47
|
+
username = self.users.delete( frame.socket_id )
|
48
|
+
self.broadcast_notice( "#{username} disconnected." ) if username
|
49
|
+
|
50
|
+
# There will still be a connection slot if this close originated with
|
51
|
+
# the client. In that case, reply with the ACK CLOSE frame
|
52
|
+
self.conn.reply( frame.response(:close) ) if
|
53
|
+
self.connections.delete( [frame.sender_id, frame.conn_id] )
|
54
|
+
|
55
|
+
self.conn.reply_close( frame )
|
56
|
+
return nil
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
end # class RequestDumper
|
61
|
+
|
62
|
+
Loggability.level = $DEBUG||$VERBOSE ? :debug : :info
|
63
|
+
Loggability.format_as( :color ) if $stdin.tty?
|
64
|
+
|
65
|
+
# Point to the config database, which will cause the handler to use
|
66
|
+
# its ID to look up its own socket info.
|
67
|
+
Mongrel2::Config.configure( :configdb => 'examples.sqlite' )
|
68
|
+
WebSocketEchoServer.run( 'ws-echo' )
|
69
|
+
|
@@ -0,0 +1,61 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
require 'strelka/websocketserver'
|
5
|
+
|
6
|
+
|
7
|
+
# An example of a Strelka WebSocketServer that echoes back whatever (non-control) frames you send
|
8
|
+
# it.
|
9
|
+
class WebSocketEchoServer < Strelka::WebSocketServer
|
10
|
+
|
11
|
+
# Application ID
|
12
|
+
ID = 'ws-echo'
|
13
|
+
|
14
|
+
#
|
15
|
+
# Heartbeat plugin
|
16
|
+
#
|
17
|
+
# plugin :heartbeat
|
18
|
+
#
|
19
|
+
# heartbeat_rate 5.0
|
20
|
+
# idle_timeout 15.0
|
21
|
+
|
22
|
+
|
23
|
+
#
|
24
|
+
# Routing
|
25
|
+
#
|
26
|
+
|
27
|
+
plugin :routing
|
28
|
+
|
29
|
+
# Handle TEXT, BINARY, and CONTINUATION frames by replying with an echo of the
|
30
|
+
# same data. Fragmented frames get echoed back as-is without any reassembly.
|
31
|
+
on_text do |frame|
|
32
|
+
self.log.info "Echoing data frame: %p" % [ frame ]
|
33
|
+
|
34
|
+
# Make the response frame
|
35
|
+
response = frame.response
|
36
|
+
response.fin = frame.fin?
|
37
|
+
IO.copy_stream( frame.payload, response.payload )
|
38
|
+
|
39
|
+
return response
|
40
|
+
end
|
41
|
+
alias_method :handle_binary_frame, :on_text_frame
|
42
|
+
alias_method :handle_continuation_frame, :on_text_frame
|
43
|
+
|
44
|
+
|
45
|
+
# Handle close frames
|
46
|
+
on_close do |frame|
|
47
|
+
|
48
|
+
# There will still be a connection slot if this close originated with
|
49
|
+
# the client. In that case, reply with the ACK CLOSE frame
|
50
|
+
self.conn.reply( frame.response(:close) ) if
|
51
|
+
self.connections.delete( [frame.sender_id, frame.conn_id] )
|
52
|
+
|
53
|
+
self.conn.reply_close( frame )
|
54
|
+
return nil
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
end # class RequestDumper
|
59
|
+
|
60
|
+
Encoding.default_internal = Encoding::UTF_8
|
61
|
+
WebSocketEchoServer.run if __FILE__ == $0
|
data/examples/gen-config.rb
CHANGED
@@ -17,17 +17,17 @@ server 'examples' do
|
|
17
17
|
name 'Strelka Examples'
|
18
18
|
default_host 'localhost'
|
19
19
|
|
20
|
-
access_log '
|
21
|
-
error_log '
|
22
|
-
|
23
|
-
pid_file '/run/mongrel2.pid'
|
20
|
+
access_log 'logs/access.log'
|
21
|
+
error_log 'logs/error.log'
|
22
|
+
pid_file 'run/mongrel2.pid'
|
24
23
|
|
24
|
+
chroot ''
|
25
25
|
bind_addr '0.0.0.0'
|
26
26
|
port 8113
|
27
27
|
|
28
28
|
host 'localhost' do
|
29
29
|
|
30
|
-
route '/', directory( '
|
30
|
+
route '/', directory( 'static/', 'examples.html', 'text/html' )
|
31
31
|
|
32
32
|
# Handlers
|
33
33
|
route '/hello', handler( 'tcp://127.0.0.1:9900', 'hello-world' )
|
@@ -45,6 +45,7 @@ setting "zeromq.threads", 1
|
|
45
45
|
|
46
46
|
setting 'limits.content_length', 8096
|
47
47
|
setting 'upload.temp_store', 'var/uploads/mongrel2.upload.XXXXXX'
|
48
|
+
setting 'server.daemonize', false
|
48
49
|
|
49
50
|
mkdir_p 'var/uploads'
|
50
51
|
mkdir_p 'run'
|
data/lib/strelka/app/auth.rb
CHANGED
@@ -234,8 +234,8 @@ module Strelka::App::Auth
|
|
234
234
|
config_key :auth
|
235
235
|
|
236
236
|
# Plugins API -- Set up load order
|
237
|
-
|
238
|
-
|
237
|
+
run_outside :routing, :restresources
|
238
|
+
run_inside :templating, :errors, :sessions
|
239
239
|
|
240
240
|
|
241
241
|
# The name of the default plugin to use for authentication
|