strelka 0.0.1.pre.309 → 0.0.1.pre.314

Sign up to get free protection for your applications and to get access to all the features.
Files changed (8) hide show
  1. data.tar.gz.sig +0 -0
  2. data/ChangeLog +20 -1
  3. data/Deploying.rdoc +64 -55
  4. data/Plugins.rdoc +160 -185
  5. data/README.rdoc +3 -3
  6. data/Rakefile +5 -1
  7. metadata +7 -5
  8. metadata.gz.sig +0 -0
data.tar.gz.sig CHANGED
Binary file
data/ChangeLog CHANGED
@@ -1,9 +1,28 @@
1
+ 2012-09-26 Michael B. Hix <mhix@laika.com>
2
+
3
+ * Deploying.rdoc:
4
+ Convert Deploying.rdoc.
5
+ [97e69307bb0c] [tip]
6
+
7
+ * Branch merge.
8
+ [06f595677069]
9
+
10
+ * Plugins.rdoc:
11
+ Plugins.rdoc corrections.
12
+ [2be9f81193f0]
13
+
14
+ 2012-09-25 Michael B. Hix <mhix@laika.com>
15
+
16
+ * Plugins.rdoc:
17
+ Plugins.rdoc conversion.
18
+ [c5ee423330e3]
19
+
1
20
  2012-09-25 Michael Granger <ged@FaerieMUD.org>
2
21
 
3
22
  * lib/strelka/constants.rb, lib/strelka/cookie.rb,
4
23
  lib/strelka/exceptions.rb, spec/strelka/cookie_spec.rb:
5
24
  Updating Strelka::Cookie to adhere to rfc6265
6
- [04568539aa83] [tip]
25
+ [04568539aa83]
7
26
 
8
27
  2012-09-21 Michael Granger <ged@FaerieMUD.org>
9
28
 
data/Deploying.rdoc CHANGED
@@ -1,80 +1,89 @@
1
- ---
2
- title: Deploying a Strelka App
3
- layout: default
4
- index: 4
5
- filters:
6
- - erb
7
- - links
8
- - examples
9
- - textile
10
- ---
1
+ = Deploying
11
2
 
12
- h2. <%= page.config['title'] %>
3
+ == Deploying a Strelka App
13
4
 
14
- <div id="auto-toc"></div>
5
+ Strelka uses the Rubygems plugin system to find and load applications. You don't
6
+ need to necessarily package them up this way if you've already got a deployment
7
+ strategy in mind, but the rest of this manual assumes you will be.
15
8
 
16
- Strelka uses the Rubygems plugin system to find and load applications. You don't need to necessarily package them up this way if you've already got a deployment strategy in mind, but the rest of this manual assumes you will be.
9
+ A Strelka app plugin:
17
10
 
18
- ** Include their static content and the apps themselves in their data dir
19
- ** Include any library code in lib/
20
- * These instructions use Hoe, but you don't need to necessarily use that
11
+ * Includes its static content and the apps themselves in its datadir.
12
+ * Includes library code under <tt>lib/</tt>.
21
13
 
22
- h3. Setting up the Project
14
+ These instructions use Hoe[http://docs.seattlerb.org/hoe/], but you don't need
15
+ to necessarily use it.
23
16
 
24
- First you'll need to create the project layout. It should look something like this:
25
17
 
26
- !images/project-layout.png(Example project layout screenshot)!
18
+ == Setting up the Project
27
19
 
28
- The data directory should contain your apps, templates, and any static content your app requires in a directory with the same name as your gem. Strelka's runtime environment will look for them there, though most of them can be configured to look elsewhere. The presence of an @apps@ subdirectory is what Strelka looks for when searching for installed application gems.
20
+ First you'll need to create the project layout. It should look something like
21
+ this:
29
22
 
30
- The rest of the gem is "pretty standard":http://chneukirchen.github.com/rps/: Your applications' reusable code should be under @lib/@ and @ext/@ directories, and tests or specs under @test/@ and @spec/@, respectively.
23
+ https://bitbucket.org/ged/strelka/raw/97e69307bb0c/manual/resources/images/project-layout.png
31
24
 
32
- h4. Easy Setup with Hoe
25
+ The data directory should contain your apps, templates, and any static content
26
+ your app requires in a directory with the same name as your gem. Strelka's
27
+ runtime environment will look for them there, though most of them can be
28
+ configured to look elsewhere. The presence of an <tt>apps</tt> subdirectory is
29
+ what Strelka looks for when searching for installed application gems.
33
30
 
34
- Hoe is a Rake helper that provides tasks for setting up and maintaining a project. It comes with a tool called 'sow' that generates a project based on a template directory. Strelka includes a Hoe project template in its @contrib/hoetemplate@ directory. If you copy that directory into @~/.hoe_template@:
31
+ The rest of the gem is {pretty standard}[http://chneukirchen.github.com/rps/].
32
+ Your applications' reusable code should be under <tt>lib/</tt> and <tt>ext/</tt>
33
+ directories, and tests or specs under <tt>test/</tt> and <tt>spec/</tt>,
34
+ respectively.
35
35
 
36
- bc. $ sow #(run once to set up the template directory if you don't have one)
37
- $ cp -r contrib/hoetemplate ~/.hoe_template/strelka
36
+ === Easy Setup with Hoe
38
37
 
39
- you can generate a new project like so:
38
+ Hoe is a Rake helper that provides tasks for setting up and maintaining a
39
+ project. It comes with a tool called 'sow' that generates a project based on a
40
+ template directory. Strelka includes a Hoe project template in its
41
+ <tt>contrib/hoetemplate</tt> directory. If you copy that directory into
42
+ <tt>~/.hoe_template</tt>:
40
43
 
41
- bc.. $ sow -s strelka GoodDoggie
42
- erb: .autotest.erb
43
- erb: History.rdoc.erb
44
- erb: Manifest.txt.erb
45
- erb: README.rdoc.erb
46
- erb: Rakefile.erb
47
- erb: data/good_doggie/apps/file_name_app
48
- erb: data/good_doggie/templates/layout.tmpl.erb
49
- erb: data/good_doggie/templates/top.tmpl.erb
50
- erb: lib/file_name.rb.erb
51
- erb: spec/file_name_spec.rb.erb
44
+ $ sow #(run once to set up the template directory if you don't have one)
45
+ $ cp -r contrib/hoetemplate ~/.hoe_template/strelka
52
46
 
53
- ... done, now go fix all occurrences of 'FIX':
47
+ You can generate a new project like so:
54
48
 
55
- GoodDoggie/data/good_doggie/apps/good_doggie_app:10: ID = 'FIX' # (set the app id of the main application)
56
- GoodDoggie/data/good_doggie/templates/layout.tmpl:5: FIX (application title)
57
- GoodDoggie/data/good_doggie/templates/layout.tmpl:9: <!-- FIX (set up the main layout template) -->
58
- GoodDoggie/data/good_doggie/templates/top.tmpl:1:<!-- FIX (set up the main content template) -->
59
- GoodDoggie/lib/good_doggie.rb:3:# FIX (top-level documentation)
60
- GoodDoggie/Rakefile:17: self.developer 'FIX', 'FIX' # (name, email)
61
- GoodDoggie/README.rdoc:3:* FIX (url)
62
- GoodDoggie/README.rdoc:7:FIX (describe your package)
63
- GoodDoggie/README.rdoc:15:Copyright (c) 2011, FIX
49
+ $ sow -s strelka GoodDoggie
50
+ erb: .autotest.erb
51
+ erb: History.rdoc.erb
52
+ erb: Manifest.txt.erb
53
+ erb: README.rdoc.erb
54
+ erb: Rakefile.erb
55
+ erb: data/good_doggie/apps/file_name_app
56
+ erb: data/good_doggie/templates/layout.tmpl.erb
57
+ erb: data/good_doggie/templates/top.tmpl.erb
58
+ erb: lib/file_name.rb.erb
59
+ erb: spec/file_name_spec.rb.erb
64
60
 
65
- p. Now just fix all the "FIX" items.
61
+ ... done, now go fix all occurrences of 'FIX':
66
62
 
67
- Strelka looks for handler apps in the 'apps' subdirectory of your gem's datadir, so in our example, the app is @GoodDoggie/data/good_doggie/apps/good_doggie_app@:
63
+ GoodDoggie/data/good_doggie/apps/good_doggie_app:10: ID = 'FIX' # (set the app id of the main application)
64
+ GoodDoggie/data/good_doggie/templates/layout.tmpl:5: FIX (application title)
65
+ GoodDoggie/data/good_doggie/templates/layout.tmpl:9: <!-- FIX (set up the main layout template) -->
66
+ GoodDoggie/data/good_doggie/templates/top.tmpl:1:<!-- FIX (set up the main content template) -->
67
+ GoodDoggie/lib/good_doggie.rb:3:# FIX (top-level documentation)
68
+ GoodDoggie/Rakefile:17: self.developer 'FIX', 'FIX' # (name, email)
69
+ GoodDoggie/README.rdoc:3:* FIX (url)
70
+ GoodDoggie/README.rdoc:7:FIX (describe your package)
71
+ GoodDoggie/README.rdoc:15:Copyright (c) 2011, FIX
68
72
 
69
- bc.. # The main GoodDoggie application
70
- class GoodDoggie::Application < Strelka::App
73
+ Now just fix all the <tt>'FIX'</tt> items.
71
74
 
72
- # Uncomment this if you need an appid other than
73
- # 'gooddoggie-application'.
74
- #ID = 'FIX' # (set the app id of the main application)
75
+ Strelka looks for handler apps in the 'apps' subdirectory of your gem's datadir.
75
76
 
77
+ For example, in <tt>GoodDoggie/data/good_doggie/apps/good_doggie_app</tt>:
76
78
 
77
- p. The End
79
+ # The main GoodDoggie application
80
+ class GoodDoggie::Application < Strelka::App
81
+
82
+ # Uncomment this if you need an appid other than
83
+ # 'gooddoggie-application'.
84
+ #ID = 'FIX' # (set the app id of the main application)
85
+
86
+ The End
78
87
 
79
88
 
80
89
 
data/Plugins.rdoc CHANGED
@@ -1,201 +1,176 @@
1
- ---
2
- title: Write Your Own Strelka Plugin
3
- layout: default
4
- index: 5
5
- filters:
6
- - erb
7
- - api
8
- - links
9
- - examples
10
- - textile
11
- ---
12
-
13
- h2. <%= page.config['title'] %>
14
-
15
- <div id="auto-toc"></div>
16
-
17
- h3. Overview
18
-
19
- Because Mongrel2 makes it easy to have discrete handler processes
20
- managing different URI routes, you'll quickly find benefit from
1
+ = Write Your Own Strelka Plugin
2
+
3
+ == Overview
4
+
5
+ Because Mongrel2[http://mongrel2.org/] makes it easy to have discrete handler
6
+ processes managing different URI routes, you'll quickly find benefit from
21
7
  refactoring common code into reusable components.
22
8
 
23
- As mentioned in the <?link "tutorial":Strelka Tutorial ?> section,
24
- Strelka breaks out functionality into a set of core plugins that allow
25
- you to cherry pick the capabilities you need. It's easy to create your
26
- own plugins for optional loading of shared behavior into any number of
27
- handlers.
9
+ As mentioned in the {Strelka Tutorial}[rdoc-ref:Tutorial] section, Strelka
10
+ breaks out functionality into a set of core plugins that allow you to cherry
11
+ pick the capabilities you need. It's easy to create your own plugins for
12
+ optional loading of shared behavior into any number of handlers.
28
13
 
29
- This page is a walkthrough for creating an example Strelka plugin that
30
- logs all HTTP accesses to a "SQLite":http://www.sqlite.org/ database.
14
+ This page is a walkthrough for creating an example Strelka plugin that logs all
15
+ HTTP accesses to a SQLite[http://www.sqlite.org/] database.
31
16
 
32
- h3. The Basics
33
17
 
34
- A Strelka plugin is just a module under the <?api Strelka::App ?>
35
- namespace that is extended by the <?api Strelka::Plugin ?> class.
36
- Once extended, the plugin participates in the @request@ -> @response@
37
- lifecycle, and is able to alter it via hooks. The plugin only
38
- participates for handlers that load it via the @plugin@ declarative.
18
+ == The Basics
19
+
20
+ A Strelka plugin is just a module under the Strelka::App namespace that is
21
+ extended by the Strelka::Plugin class. Once extended, the plugin participates in
22
+ the <tt>request</tt> -> <tt>response</tt> lifecycle, and is able to alter it via
23
+ hooks. The plugin only participates for handlers that load it via the
24
+ <tt>plugin</tt> declarative.
39
25
 
40
26
  Lets start by creating and naming an empty plugin. We'll call it
41
- @dblogger@.
27
+ <tt>dblogger</tt>.
42
28
 
43
- <?example { lang: Ruby, caption: "A no-op plugin" } ?>
44
- require 'strelka'
45
- require 'strelka/app'
29
+ require 'strelka'
30
+ require 'strelka/app'
46
31
 
47
- module Strelka::App::DBLogger
48
- extend Strelka::Plugin
49
- end
50
- <?end example ?>
32
+ module Strelka::App::DBLogger
33
+ extend Strelka::Plugin
34
+ end
51
35
 
52
- It's important to save the plugin under a path that Strelka can
53
- locate it. It can go anywhere in your @$LOAD_PATH@, but should be under a
54
- @lib/strelka/app@ subdirectory, and the filename should match the class.
36
+ It's important to save the plugin under a path that Strelka can locate it. It
37
+ can go anywhere in your <tt>$LOAD_PATH</tt>, but should be under a
38
+ <tt>lib/strelka/app</tt> subdirectory, and the filename should match the class.
55
39
 
56
- We'll save this to @lib/strelka/app/dblogger.rb@, and Strelka
40
+ We'll save this to <tt>lib/strelka/app/dblogger.rb</tt>, and Strelka
57
41
  applications can use it like so:
58
42
 
59
- <?example { lang: Ruby, caption: "Using the dblogger plugin" } ?>
60
- require 'strelka'
61
-
62
- class ExampleApplication < Strelka::App
63
- plugins :routing, :dblogger
64
-
65
- get do |req|
66
- res = req.response
67
- res.content_type = 'text/plain'
68
- return res.body << "Hi! I'll be logged!"
69
- end
70
- end
71
-
72
- ExampleApplication.run
73
- <?end example ?>
74
-
75
-
76
- h3. Load Order
77
-
78
- The request is passed through plugins sequentually. You can control
79
- where in the chain your plugin belongs, by using the @run_before@ and
80
- @run_after@ methods. Both methods accept a comma separated list of
81
- other plugin names.
82
-
83
- In this example case, we want the logger to log the request before the
84
- other core plugins run, so any errors still make it out to the log.
85
-
86
- <?example { lang: Ruby, caption: "Adding load order" } ?>
87
- require 'strelka'
88
- require 'strelka/app'
89
-
90
- module Strelka::App::DBLogger
91
- extend Strelka::Plugin
92
-
93
- run_before \
94
- :auth,
95
- :filters,
96
- :negotiation,
97
- :parameters,
98
- :routing,
99
- :sessions,
100
- :templating
101
-
102
- end
103
- <?end example ?>
104
-
105
- h3. Hooks
106
-
107
- There are three primary extension points you can override in your
108
- plugin. All hooks absolutely require you to @super@ at some point, so
109
- the request/response chain passes through your plugin.
110
-
111
- <dl>
112
- <dt>fixup_request</dt>
113
- <dd>
114
- Make any changes to the @request@ that are necessary before handling it and
115
- return it. This is an alternate extension-point for plugins that
116
- wish to modify or replace the request before the request cycle is
117
- started.
118
- </dd>
119
- <dt>handle_request</dt>
120
- <dd>
121
- Handle the request and return a @response@. This is the main extension-point
122
- for the plugin system. Without being overridden or extended by plugins, this
123
- method just returns the default Mongrel2 response.
124
- </dd>
125
- <dt>fixup_response</dt>
126
- <dd>
127
- Make any changes to the @response@ that are necessary before handing it to
128
- Mongrel and return it. This is an alternate extension-point for plugins that
129
- wish to modify or replace the response after the whole request cycle is
130
- completed.
131
- </dd>
132
- </dl>
133
-
134
- For our logging purposes, we want to hook the @fixup_response@ method.
135
- We won't be altering the response itself, but just reading attributes
136
- from it and squirreling them away. (Most notably, the @response@ has
137
- access to the @request@ object, and visa versa.) You can find more detail
138
- for these hooks in the API documentation for <?api Strelka::App ?>.
43
+ require 'strelka'
139
44
 
140
- Here's the complete plugin.
45
+ class ExampleApplication < Strelka::App
46
+ plugins :routing, :dblogger
47
+
48
+ get do |req|
49
+ res = req.response
50
+ res.content_type = 'text/plain'
51
+ return res.body << "Hi! I'll be logged!"
52
+ end
53
+ end
54
+
55
+ ExampleApplication.run
56
+
57
+
58
+ == Load Order
59
+
60
+ The request is passed through plugins sequentually. You can control where in
61
+ the chain your plugin belongs, by using the <tt>run_before</tt> and
62
+ <tt>run_after</tt> methods. Both methods accept a comma separated list of other
63
+ plugin names.
64
+
65
+ In this example case, we want the logger to log the request before the other
66
+ core plugins run, so any errors still make it out to the log.
67
+
68
+ require 'strelka'
69
+ require 'strelka/app'
70
+
71
+ module Strelka::App::DBLogger
72
+ extend Strelka::Plugin
73
+
74
+ run_before :auth,
75
+ :filters,
76
+ :negotiation,
77
+ :parameters,
78
+ :routing,
79
+ :sessions,
80
+ :templating
81
+
82
+ end
141
83
 
142
- <?example { lang: Ruby, caption: "A basic DBLogger plugin" } ?>
143
- require 'strelka'
144
- require 'strelka/app'
145
- require 'sequel'
146
-
147
- module Strelka::App::DBLogger
148
- extend Strelka::Plugin
149
-
150
- run_before \
151
- :auth,
152
- :filters,
153
- :negotiation,
154
- :parameters,
155
- :routing,
156
- :sessions,
157
- :templating
158
-
159
- def initialize( * )
160
- super
161
-
162
- @db = Sequel.sqlite( '////tmp/strelka_access.db' )
163
- @db.create_table( :log ) do
164
- timestamptz :date, :null => false
165
- varchar :agent, :size => 255
166
- varchar :remote_ip, :null => false
167
- smallint :status
168
- varchar :method, :size => 8, :null => false
169
- varchar :path, :size => 255
170
- varchar :query, :size => 255
171
- varchar :referer, :size => 255
172
- end unless @db.table_exists?( :log )
173
- end
174
-
175
- attr_reader :db
176
-
177
- def fixup_response( response )
178
- request = response.request
179
-
180
- self.log.debug self.db[ :log ].insert(
181
- :date => Time.now.to_s,
182
- :agent => request.headers.user_agent,
183
- :remote_ip => request.remote_ip.to_s,
184
- :status => response.status,
185
- :method => request.verb.to_s,
186
- :path => request.uri.path,
187
- :query => request.uri.query,
188
- :referer => request.headers.referer
189
- )
190
-
191
- super
192
- end
193
- end
194
- <?end example ?>
195
-
196
- Handler startup creates the database and the logging schema, and
197
- every request performs an @insert@ with the data we're after. There's
198
- plenty of room for improvement here (configurable db location, prepared
199
- statements), but hopefully that gives you a first-round idea of how easy
200
- it is to add pluggable functionality to Strelka.
201
84
 
85
+ == Hooks
86
+
87
+ There are three primary extension points you can override in your plugin. All
88
+ hooks absolutely require you to <tt>super</tt> at some point, so the
89
+ request/response chain passes through your plugin.
90
+
91
+ [\fixup_request]
92
+
93
+ Make any changes to the <tt>request</tt> that are necessary before handling
94
+ it and return it. This is an alternate extension-point for plugins that wish
95
+ to modify or replace the request before the request cycle is started.
96
+
97
+ [\handle_request]
98
+
99
+ Handle the <tt>request</tt> and return a <tt>response</tt>. This is the main
100
+ extension-point for the plugin system. Without being overridden or extended
101
+ by plugins, this method just returns the default Mongrel2 response.
102
+
103
+ [\fixup_response]
104
+
105
+ Make any changes to the <tt>response</tt> that are necessary before handing
106
+ it to Mongrel and return it. This is an alternate extension- point for
107
+ plugins that wish to modify or replace the response after the whole request
108
+ cycle is completed.
109
+
110
+
111
+ == Completing the Example
112
+
113
+ For our logging purposes, we want to hook the <tt>fixup_response</tt> method. We
114
+ won't be altering the response itself, but just reading attributes from it and
115
+ squirreling them away. Most notably, the <tt>response</tt> has access to the
116
+ <tt>response</tt> object, and visa versa. You can find more detail for these
117
+ hooks in the API documentation for Strelka::App.
118
+
119
+ Here's the complete plugin.
120
+
121
+ require 'strelka'
122
+ require 'strelka/app'
123
+ require 'sequel'
124
+
125
+ module Strelka::App::DBLogger
126
+ extend Strelka::Plugin
127
+
128
+ run_before :auth,
129
+ :filters,
130
+ :negotiation,
131
+ :parameters,
132
+ :routing,
133
+ :sessions,
134
+ :templating
135
+
136
+ def initialize( * )
137
+ super
138
+
139
+ @db = Sequel.sqlite( '////tmp/strelka_access.db' )
140
+ @db.create_table( :log ) do
141
+ timestamptz :date, :null => false
142
+ varchar :agent, :size => 255
143
+ varchar :remote_ip, :null => false
144
+ smallint :status
145
+ varchar :method, :size => 8, :null => false
146
+ varchar :path, :size => 255
147
+ varchar :query, :size => 255
148
+ varchar :referer, :size => 255
149
+ end unless @db.table_exists?( :log )
150
+ end
151
+
152
+ attr_reader :db
153
+
154
+ def fixup_response( response )
155
+ request = response.request
156
+
157
+ self.log.debug self.db[ :log ].insert(
158
+ :date => Time.now.to_s,
159
+ :agent => request.headers.user_agent,
160
+ :remote_ip => request.remote_ip.to_s,
161
+ :status => response.status,
162
+ :method => request.verb.to_s,
163
+ :path => request.uri.path,
164
+ :query => request.uri.query,
165
+ :referer => request.headers.referer
166
+ )
167
+
168
+ super
169
+ end
170
+ end
171
+
172
+ Handler startup creates the database and the logging schema, and every request
173
+ performs an <tt>insert</tt> with the data we're after. There's plenty of room
174
+ for improvement here (configurable db location, prepared statements), but
175
+ hopefully that gives you a first-round idea of how easy it is to add pluggable
176
+ functionality to Strelka.
data/README.rdoc CHANGED
@@ -9,10 +9,10 @@ docs :: http://deveiate.org/code/strelka
9
9
  == Description
10
10
 
11
11
  Strelka is a framework for creating and deploying
12
- "Mongrel2":http://mongrel2.org/ web applications in Ruby.
12
+ Mongrel2[http://mongrel2.org/] web applications in Ruby.
13
13
 
14
- It's named after a lesser known "Russian
15
- cosmonaut":http://en.wikipedia.org/wiki/Strelka_(dog)#Belka_and_Strelka who was
14
+ It's named after a lesser known {Russian
15
+ cosmonaut}[http://en.wikipedia.org/wiki/Strelka_(dog)#Belka_and_Strelka] who was
16
16
  one of the first canine space travelers to orbit the Earth and return alive.
17
17
  Her name means "little arrow".
18
18
 
data/Rakefile CHANGED
@@ -39,7 +39,11 @@ hoespec = Hoe.spec 'strelka' do
39
39
  self.dependency 'simplecov', '~> 0.6', :developer
40
40
 
41
41
  self.spec_extras[:licenses] = ["BSD"]
42
- self.spec_extras[:rdoc_options] = ['-f', 'fivefish', '-t', 'Strelka Web Application Toolkit']
42
+ self.spec_extras[:rdoc_options] = [
43
+ '-f', 'fivefish',
44
+ '-t', 'Strelka Web Application Toolkit',
45
+ '-w', '4',
46
+ ]
43
47
  self.require_ruby_version( '>=1.9.2' )
44
48
  self.hg_sign_tags = true if self.respond_to?( :hg_sign_tags= )
45
49
  self.check_history_on_release = true if self.respond_to?( :check_history_on_release= )
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strelka
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.pre.309
4
+ version: 0.0.1.pre.314
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -328,12 +328,12 @@ dependencies:
328
328
  version: '3.0'
329
329
  description: ! 'Strelka is a framework for creating and deploying
330
330
 
331
- "Mongrel2":http://mongrel2.org/ web applications in Ruby.
331
+ Mongrel2[http://mongrel2.org/] web applications in Ruby.
332
332
 
333
333
 
334
- It''s named after a lesser known "Russian
334
+ It''s named after a lesser known {Russian
335
335
 
336
- cosmonaut":http://en.wikipedia.org/wiki/Strelka_(dog)#Belka_and_Strelka who was
336
+ cosmonaut}[http://en.wikipedia.org/wiki/Strelka_(dog)#Belka_and_Strelka] who was
337
337
 
338
338
  one of the first canine space travelers to orbit the Earth and return alive.
339
339
 
@@ -486,6 +486,8 @@ rdoc_options:
486
486
  - fivefish
487
487
  - -t
488
488
  - Strelka Web Application Toolkit
489
+ - -w
490
+ - '4'
489
491
  require_paths:
490
492
  - lib
491
493
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -505,6 +507,6 @@ rubyforge_project: strelka
505
507
  rubygems_version: 1.8.24
506
508
  signing_key:
507
509
  specification_version: 3
508
- summary: Strelka is a framework for creating and deploying "Mongrel2":http://mongrel2.org/
510
+ summary: Strelka is a framework for creating and deploying Mongrel2[http://mongrel2.org/]
509
511
  web applications in Ruby
510
512
  test_files: []
metadata.gz.sig CHANGED
Binary file