strelka 0.0.1.pre.194 → 0.0.1.pre.199

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/ChangeLog CHANGED
@@ -1,5 +1,24 @@
1
+ 2012-04-19 Michael Granger <ged@FaerieMUD.org>
2
+
3
+ * lib/strelka/websocketserver.rb:
4
+ Adding a websocket service base class
5
+ [149dae18de58] [qbase, qtip, tip, websocketservice.patch]
6
+
7
+ * lib/strelka/plugins.rb:
8
+ Moving application stack dump function to the PluginLoader mixin
9
+ [3c35f0dd2089] [qparent]
10
+
1
11
  2012-04-18 Michael Granger <ged@FaerieMUD.org>
2
12
 
13
+ * examples/gen-config.rb, lib/strelka/plugins.rb,
14
+ spec/strelka/plugins_spec.rb:
15
+ Fix plugin loading, add a spec for coverage.
16
+ [0b6ed1f75d7b]
17
+
18
+ * Manifest.txt:
19
+ Updated the manifest
20
+ [0233fbbfabd9]
21
+
3
22
  * examples/apps/ws-echo, experiments/reflective-module.rb,
4
23
  lib/strelka/app.rb, lib/strelka/app/auth.rb,
5
24
  lib/strelka/app/errors.rb, lib/strelka/app/filters.rb,
@@ -29,7 +48,7 @@
29
48
 
30
49
  * Strelka::App::Plugin is now Strelka::Plugin
31
50
  * Strelka::App::Plugins is now Strelka::PluginLoader
32
- [ea4c4358a943] [tip]
51
+ [ea4c4358a943] [github/master]
33
52
 
34
53
  2012-04-16 Mahlon E. Smith <mahlon@martini.nu>
35
54
 
@@ -64,7 +83,7 @@
64
83
  spec/strelka/app/routing_spec.rb:
65
84
  Add Router#routerclass to subclasses. nil guard for
66
85
  layout_templates.
67
- [279f2399ad4a] [github/master]
86
+ [279f2399ad4a]
68
87
 
69
88
  * Rakefile:
70
89
  Remove outdated Rakefile cruft.
@@ -112,16 +131,18 @@
112
131
  * Merging with ssh://hg@deveiate.org/Strelka@8f1c27819e70
113
132
  [5fcd76455aad]
114
133
 
115
- * Manifest.txt:
116
- Updating the manifest
117
- [35165b3d01cc]
118
-
119
134
  2012-04-11 Mahlon E. Smith <mahlon@martini.nu>
120
135
 
121
136
  * lib/strelka/session/default.rb:
122
137
  Use the built-in securerandom method for obtaining a hex value.
123
138
  [8f1c27819e70]
124
139
 
140
+ 2012-04-11 Michael Granger <ged@FaerieMUD.org>
141
+
142
+ * Manifest.txt:
143
+ Updating the manifest
144
+ [35165b3d01cc]
145
+
125
146
  2012-04-10 Michael Granger <ged@FaerieMUD.org>
126
147
 
127
148
  * lib/strelka/app/auth.rb, lib/strelka/app/parameters.rb,
@@ -192,22 +213,6 @@
192
213
  Add the ChangeLog to the ignorefile
193
214
  [cc8c30d38652]
194
215
 
195
- * lib/strelka/app/templating.rb:
196
- Add API docs to the :templating plugin module
197
- [3c160d996320]
198
-
199
- * README.rdoc:
200
- Add more URLs
201
- [060962556bd1]
202
-
203
- * Rakefile:
204
- Oops. Fix typo
205
- [5a8aa207860b]
206
-
207
- * .rvm.gems, Rakefile:
208
- Update dependencies
209
- [787e523777d1]
210
-
211
216
  2012-04-06 Mahlon E. Smith <mahlon@martini.nu>
212
217
 
213
218
  * lib/strelka/app/sessions.rb, lib/strelka/cookie.rb,
@@ -225,6 +230,24 @@
225
230
  Add a persistent DB session store, using sequel.
226
231
  [99f3c3f5d6ca]
227
232
 
233
+ 2012-04-06 Michael Granger <ged@FaerieMUD.org>
234
+
235
+ * lib/strelka/app/templating.rb:
236
+ Add API docs to the :templating plugin module
237
+ [3c160d996320]
238
+
239
+ * README.rdoc:
240
+ Add more URLs
241
+ [060962556bd1]
242
+
243
+ * Rakefile:
244
+ Oops. Fix typo
245
+ [5a8aa207860b]
246
+
247
+ * .rvm.gems, Rakefile:
248
+ Update dependencies
249
+ [787e523777d1]
250
+
228
251
  2012-04-04 Michael Granger <ged@FaerieMUD.org>
229
252
 
230
253
  * manual/src/tutorial.page:
data/bin/strelka CHANGED
@@ -197,8 +197,18 @@ class Strelka::CLICommand
197
197
  cmd_method = nil
198
198
 
199
199
  # Set the datadir override if it's given
200
- Strelka.datadir = Pathname( options.datadir ) if self.options.datadir
200
+ if self.options.datadir
201
+ self.log.debug "Using data dir option: %s" % [ self.options.datadir ]
202
+ Strelka.datadir = Pathname( self.options.datadir )
203
+ elsif File.directory?( 'data' ) && subdir = Dir[ 'data/*' ].first
204
+ self.log.debug "Using local data dir: %s" % [ subdir ]
205
+ Strelka.datadir = subdir
206
+ end
207
+
208
+ # Include a 'lib' directory if there is one
209
+ $LOAD_PATH.unshift( 'lib' ) if File.directory?( 'lib' )
201
210
 
211
+ # Run the command
202
212
  begin
203
213
  cmd_method = self.method( "#{command}_command" )
204
214
  rescue NameError => err
@@ -252,7 +262,12 @@ class Strelka::CLICommand
252
262
  paths.each do |gemname, paths|
253
263
  message "\n"
254
264
 
255
- subheader "#{gemname}:"
265
+ if gemname == ''
266
+ subheader "Local: "
267
+ else
268
+ subheader "Gem: #{gemname}"
269
+ end
270
+
256
271
  filenames = paths.map {|path| path.basename.to_s }
257
272
  list( filenames )
258
273
  end
@@ -271,7 +286,10 @@ class Strelka::CLICommand
271
286
  def start_command( *args )
272
287
  path, appname, gemname = self.find_specified_app( *args )
273
288
 
274
- header "Starting the %s app from the %s gem" % [ appname, gemname ]
289
+ header "Starting the %s app%s" % [
290
+ appname,
291
+ gemname == '' ? '' : " the #{gemname} gem"
292
+ ]
275
293
  fork do
276
294
  self.log.debug " in the child."
277
295
  Strelka.load_config( self.options.config ) if self.options.config
@@ -8,15 +8,50 @@ require 'strelka/app' unless defined?( Strelka::App )
8
8
 
9
9
  # Custom error-handling plugin for Strelka::App.
10
10
  #
11
- # == Examples
11
+ # plugin :errors
12
12
  #
13
- # Handle statuses via a callback:
13
+ # # Handle only status 400 errors
14
+ # on_status HTTP::BAD_REQUEST do |res, status_info|
15
+ # # Do something on 400 errors
16
+ # end
17
+ #
18
+ # # Handle any other error in the 4xx range
19
+ # on_status 400..499 do |res, status_info|
20
+ # # Do something on 4xx errors
21
+ # end
22
+ #
23
+ # If you have the <tt>:templating</tt> plugin loaded, you can substitute a
24
+ # Symbol that corresponds with one of the declared templates instead:
25
+ #
26
+ # class MyApp < Strelka::App
27
+ # plugins :errors, :templating
28
+ #
29
+ # layout 'layout.tmpl'
30
+ # templates :missing => 'errors/missing.tmpl'
31
+ #
32
+ # # Load the 'missing' template, wrap it up in the layout
33
+ # # template and render that as the body of the 404
34
+ # # response
35
+ # on_status HTTP::NOT_FOUND, :missing
36
+ #
37
+ # end # class MyApp
38
+ #
39
+ # The template can access the status info hash via the +:status_info+ note
40
+ # on the request or response object:
41
+ #
42
+ # <!-- error.tmpl -->
43
+ # Sorry, there was a <?call request.notes[:status_info][:status] ?> error:
44
+ # <?escape request.notes[:status_info][:message] ?>.
45
+ #
46
+ # If you want to do something application-specific for an error, but still use
47
+ # the default error-handling, just call finish_with again with the status info
48
+ # from your status handler:
14
49
  #
15
50
  # class MyApp < Strelka::App
16
51
  # plugins :errors
17
52
  #
18
53
  # # Send an email when an app is going to return a 500 error
19
- # on_status HTTP::SERVER_ERROR do |res, status|
54
+ # on_status HTTP::SERVER_ERROR do |res, info|
20
55
  # require 'mail'
21
56
  # Mail.deliver do
22
57
  # from 'app@example.com'
@@ -26,15 +61,20 @@ require 'strelka/app' unless defined?( Strelka::App )
26
61
  # body "Server error while running %p [%s]: %s" %
27
62
  # [ self.class, self.conn, status.message ]
28
63
  # end
64
+ #
65
+ # # Finish the transaction
66
+ # finish_with( info )
29
67
  # end
30
68
  #
31
69
  # def handle( req )
32
- # finish_with( HTTP::SERVER_ERROR, "Oops, that doesn't exist on this server." )
70
+ # finish_with( HTTP::SERVER_ERROR, "Ack! Something bad happened." )
33
71
  # end
34
72
  #
35
73
  # end # class MyApp
36
74
  #
37
- # See the documentation for ClassMethods.on_status for more details.
75
+ # See the documentation for ClassMethods.on_status for more details on the
76
+ # status-handler block.
77
+ #
38
78
  module Strelka::App::Errors
39
79
  extend Strelka::Plugin
40
80
 
@@ -64,16 +104,6 @@ module Strelka::App::Errors
64
104
  ### +range+. Range can either be a single integer HTTP status code, or a Range
65
105
  ### of the same (e.g., 400..499) for all statuses with that range.
66
106
  ###
67
- ### # Handle only status 400 errors
68
- ### on_status HTTP::BAD_REQUEST do |res, status|
69
- ### # Do something on 400 errors
70
- ### end
71
- ###
72
- ### # Handle any other error in the 4xx range
73
- ### on_status 400..499 do |res, status|
74
- ### # Do something on 4xx errors
75
- ### end
76
- ###
77
107
  ### If no +range+ is specified, any of the HTTP error statuses will invoke
78
108
  ### the callback.
79
109
  ###
@@ -84,20 +114,6 @@ module Strelka::App::Errors
84
114
  ### [+:status+] the HTTP status code that was passed to Strelka::App#finish_with
85
115
  ### [+:message+] the message string that was passed to Strelka::App#finish_with
86
116
  ###
87
- ### If you have the <tt>:templating</tt> plugin loaded, you can substitute a
88
- ### Symbol that corresponds with one of the declared templates instead:
89
- #### With the templating plugin, you can also handle it via a custom template.
90
- ###
91
- ### class MyApp < Strelka::App
92
- ### plugins :errors, :templating
93
- ###
94
- ### layout 'layout.tmpl'
95
- ### templates :missing => 'errors/missing.tmpl'
96
- ###
97
- ### on_status HTTP::NOT_FOUND, :missing
98
- ###
99
- ### end # class MyApp
100
- ###
101
117
  def on_status( range=DEFAULT_HANDLER_STATUS_RANGE, template=nil, &block )
102
118
  range = Range.new( range, range ) unless range.is_a?( Range )
103
119
  methodname = "for_status_%s" % [ range.begin, range.end ].uniq.join('_to_')
data/lib/strelka/app.rb CHANGED
@@ -79,8 +79,10 @@ class Strelka::App < Mongrel2::Handler
79
79
  ### Return a Hash of Strelka app files as Pathname objects from installed gems,
80
80
  ### keyed by gemspec name .
81
81
  def self::discover_paths
82
+ Strelka.log.debug "Local paths: %s" % [ Strelka.datadir + APP_GLOB_PATTERN ]
83
+
82
84
  appfiles = {
83
- 'strelka' => Pathname.glob( Strelka.datadir + APP_GLOB_PATTERN )
85
+ '' => Pathname.glob( Strelka.datadir + APP_GLOB_PATTERN )
84
86
  }
85
87
 
86
88
  # Find all the gems that depend on Strelka
@@ -117,7 +119,7 @@ class Strelka::App < Mongrel2::Handler
117
119
  Strelka.log.debug "Loading apps from %d discovered paths" % [ app_paths.length ]
118
120
  app_paths.each do |gemname, paths|
119
121
  Strelka.log.debug " loading gem %s" % [ gemname ]
120
- gem( gemname ) unless gemname == 'strelka'
122
+ gem( gemname ) unless gemname == ''
121
123
 
122
124
  Strelka.log.debug " loading apps from %s: %d handlers" % [ gemname, paths.length ]
123
125
  paths.each do |path|
@@ -10,12 +10,14 @@ require 'mongrel2/httprequest'
10
10
  require 'strelka' unless defined?( Strelka )
11
11
  require 'strelka/httpresponse'
12
12
  require 'strelka/cookieset'
13
+ require 'strelka/mixins'
13
14
 
14
15
  # An HTTP request class.
15
16
  class Strelka::HTTPRequest < Mongrel2::HTTPRequest
16
17
  include Strelka::Loggable,
17
18
  Strelka::Constants,
18
- Strelka::ResponseHelpers
19
+ Strelka::ResponseHelpers,
20
+ Strelka::DataUtilities
19
21
 
20
22
  # Set Mongrel2 to use Strelka's request class for HTTP requests
21
23
  register_request_type( self, *HTTP::RFC2616_VERBS )
@@ -53,7 +55,8 @@ class Strelka::HTTPRequest < Mongrel2::HTTPRequest
53
55
  attr_writer :params
54
56
 
55
57
  # A Hash that plugins can use to pass data amongst themselves. The missing-key
56
- # callback is set to auto-create nested sub-hashes.
58
+ # callback is set to auto-create nested sub-hashes. If you create an HTTPResponse
59
+ # via #response, the response's notes will be shared with its request.
57
60
  attr_reader :notes
58
61
 
59
62
 
@@ -206,10 +209,4 @@ class Strelka::HTTPRequest < Mongrel2::HTTPRequest
206
209
  end
207
210
 
208
211
 
209
- ### Create and return a Hash that will auto-vivify any values it is missing with
210
- ### another auto-vivifying Hash.
211
- def autovivify( hash, key )
212
- hash[ key ] = Hash.new( &method(:autovivify) )
213
- end
214
-
215
212
  end # class Strelka::HTTPRequest
@@ -9,7 +9,8 @@ require 'strelka/cookieset'
9
9
  # An HTTP response class.
10
10
  class Strelka::HTTPResponse < Mongrel2::HTTPResponse
11
11
  include Strelka::Loggable,
12
- Strelka::Constants
12
+ Strelka::Constants,
13
+ Strelka::DataUtilities
13
14
 
14
15
 
15
16
  # Pattern for matching a 'charset' parameter in a media-type string, such as the
@@ -22,6 +23,7 @@ class Strelka::HTTPResponse < Mongrel2::HTTPResponse
22
23
  @charset = nil
23
24
  @languages = []
24
25
  @encodings = []
26
+ @notes = Hash.new( &method(:autovivify) )
25
27
  @cookies = nil
26
28
 
27
29
  super
@@ -53,6 +55,11 @@ class Strelka::HTTPResponse < Mongrel2::HTTPResponse
53
55
  # client. Defaults to the empty Array.
54
56
  attr_accessor :languages
55
57
 
58
+ # A auto-vivifying nested Hash that plugins can use to pass data amongst themselves.
59
+ # The notes hash is shared between the request and response objects if
60
+ # the request is set on the response with #request=.
61
+ attr_reader :notes
62
+
56
63
 
57
64
  ### Overridden to add charset, encodings, and languages to outgoing
58
65
  ### headers if any of them are set.
@@ -86,6 +93,12 @@ class Strelka::HTTPResponse < Mongrel2::HTTPResponse
86
93
  end
87
94
 
88
95
 
96
+ ### Set the request object associated with this response to +request+.
97
+ def request=( request )
98
+ super
99
+ @notes = request.notes
100
+ end
101
+
89
102
 
90
103
  #########
91
104
  protected
@@ -289,6 +289,13 @@ module Strelka
289
289
  end
290
290
  end
291
291
 
292
+
293
+ ### Create and return a Hash that will auto-vivify any values it is missing with
294
+ ### another auto-vivifying Hash.
295
+ def autovivify( hash, key )
296
+ hash[ key ] = Hash.new( &Strelka::DataUtilities.method(:autovivify) )
297
+ end
298
+
292
299
  end # module DataUtilities
293
300
 
294
301
 
@@ -341,8 +348,18 @@ module Strelka
341
348
  ### http_status code immediately. The specified +message+ will be logged,
342
349
  ### and will be included in any message that is returned as part of the
343
350
  ### response. The +headers+ hash will be used to set response headers.
344
- def finish_with( http_status, message, headers={} )
345
- status_info = { :status => http_status, :message => message, :headers => headers }
351
+ ### As a shortcut, you can call #finish_with again with the Hash that it
352
+ ### builds to re-throw it.
353
+ def finish_with( http_status, message=nil, headers={} )
354
+ status_info = nil
355
+
356
+ if http_status.is_a?( Hash ) && http_status.key?(:status)
357
+ status_info = http_status
358
+ else
359
+ message ||= HTTP::STATUS_NAME[ http_status ]
360
+ status_info = { :status => http_status, :message => message, :headers => headers }
361
+ end
362
+
346
363
  throw :finish, status_info
347
364
  end
348
365
 
@@ -257,6 +257,20 @@ module Strelka
257
257
  self.plugins_installed_from = caller( 1 ).first
258
258
  end
259
259
 
260
+
261
+
262
+ ### Output the application stack into the logfile.
263
+ def dump_application_stack
264
+ stack = self.class.ancestors.
265
+ reverse.
266
+ drop_while {|mod| mod != Strelka::PluginLoader }.
267
+ select {|mod| mod.respond_to?(:plugin_name) }.
268
+ collect {|mod| mod.plugin_name }.
269
+ reverse
270
+
271
+ self.log.info "Application stack: request -> %s" % [ stack.join(" -> ") ]
272
+ end
273
+
260
274
  end # module PluginLoader
261
275
 
262
276
  end # class Strelka
data/lib/strelka.rb CHANGED
@@ -21,7 +21,7 @@ module Strelka
21
21
  VERSION = '0.0.1'
22
22
 
23
23
  # Version-control revision constant
24
- REVISION = %q$Revision: 195b7937f42a $
24
+ REVISION = %q$Revision: c3e9ce4035b6 $
25
25
 
26
26
 
27
27
  require 'strelka/logging'
@@ -51,9 +51,15 @@ module Strelka
51
51
  ##
52
52
  # The Pathname of the directory that will be searched for default applications,
53
53
  # config, etc.
54
- singleton_attr_accessor :datadir
54
+ singleton_attr_reader :datadir
55
+
56
+ ### Set the local data directory to +dir+.
57
+ def self::datadir=( dir )
58
+ @datadir = Pathname( dir )
59
+ end
55
60
  self.datadir = DEFAULT_DATADIR
56
61
 
62
+
57
63
  require 'strelka/app'
58
64
  require 'strelka/httprequest'
59
65
  require 'strelka/httpresponse'
@@ -88,10 +88,10 @@ describe Strelka::App::Filters do
88
88
  before( :each ) do
89
89
  @app.class_eval do
90
90
  filter do |reqres|
91
- if reqres.respond_to?( :notes )
92
- reqres.notes[:test] = 'filtered notes'
91
+ if reqres.is_a?( Strelka::HTTPRequest )
92
+ reqres.notes[:saw][:request] = true
93
93
  else
94
- reqres.body = 'filtered body'
94
+ reqres.notes[:saw][:response] = true
95
95
  end
96
96
  end
97
97
  end
@@ -117,8 +117,8 @@ describe Strelka::App::Filters do
117
117
 
118
118
  res = @app.new.handle( req )
119
119
 
120
- req.notes[:test].should == 'filtered notes'
121
- res.body.should == 'filtered body'
120
+ req.notes[:saw][:request].should be_true()
121
+ res.notes[:saw][:response].should be_true()
122
122
  end
123
123
 
124
124
  end
@@ -128,10 +128,10 @@ describe Strelka::App::Filters do
128
128
  before( :each ) do
129
129
  @app.class_eval do
130
130
  filter( :request ) do |reqres|
131
- if reqres.respond_to?( :notes )
132
- reqres.notes[:test] = 'filtered notes'
131
+ if reqres.is_a?( Strelka::HTTPRequest )
132
+ reqres.notes[:saw][:request] = true
133
133
  else
134
- reqres.body = 'filtered body'
134
+ reqres.notes[:saw][:response] = true
135
135
  end
136
136
  end
137
137
  end
@@ -157,8 +157,8 @@ describe Strelka::App::Filters do
157
157
 
158
158
  res = @app.new.handle( req )
159
159
 
160
- req.notes[:test].should == 'filtered notes'
161
- res.body.should_not == 'filtered body'
160
+ req.notes[:saw][:request].should be_true()
161
+ res.notes[:saw][:response].should be_empty()
162
162
  end
163
163
 
164
164
  end
@@ -168,10 +168,10 @@ describe Strelka::App::Filters do
168
168
  before( :each ) do
169
169
  @app.class_eval do
170
170
  filter( :response ) do |reqres|
171
- if reqres.respond_to?( :notes )
172
- reqres.notes[:test] = 'filtered notes'
171
+ if reqres.is_a?( Strelka::HTTPRequest )
172
+ reqres.notes[:saw][:request] = true
173
173
  else
174
- reqres.body = 'filtered body'
174
+ reqres.notes[:saw][:response] = true
175
175
  end
176
176
  end
177
177
  end
@@ -197,8 +197,8 @@ describe Strelka::App::Filters do
197
197
 
198
198
  res = @app.new.handle( req )
199
199
 
200
- req.notes[:test].should == {}
201
- res.body.should == 'filtered body'
200
+ req.notes[:saw][:request].should be_empty()
201
+ res.notes[:saw][:response].should be_true()
202
202
  end
203
203
 
204
204
  end
@@ -25,7 +25,8 @@ describe Strelka::HTTPResponse do
25
25
  end
26
26
 
27
27
  before( :each ) do
28
- @res = @request_factory.get( '/glossary/reduct' ).response
28
+ @req = @request_factory.get( '/glossary/reduct' )
29
+ @res = @req.response
29
30
  end
30
31
 
31
32
  after( :all ) do
@@ -116,12 +117,17 @@ describe Strelka::HTTPResponse do
116
117
  @res.header_data.should =~ /set-cookie: foom=chuckufarly/i
117
118
  end
118
119
 
119
- it "allows cookies to appended" do
120
+ it "allows cookies to be appended" do
120
121
  @res.cookies << Strelka::Cookie.new( 'session', '64a3a92eb7403a8199301e03e8b83810' )
121
122
  @res.cookies << Strelka::Cookie.new( 'cn', '18', :expires => '+1d' )
122
123
  @res.header_data.should =~ /set-cookie: session=64a3a92eb7403a8199301e03e8b83810/i
123
124
  @res.header_data.should =~ /set-cookie: cn=18; expires=/i
124
125
  end
125
126
 
127
+
128
+ it "shares a 'notes' Hash with its associated request" do
129
+ @res.notes.should be( @req.notes )
130
+ end
131
+
126
132
  end
127
133
 
data.tar.gz.sig CHANGED
Binary file
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.194
4
+ version: 0.0.1.pre.199
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -36,11 +36,11 @@ cert_chain:
36
36
  YUhDS0xaZFNLai9SSHVUT3QrZ2JsUmV4OEZBaDhOZUEKY21saFhlNDZwWk5K
37
37
  Z1dLYnhaYWg4NWpJang5NWhSOHZPSStOQU01aUg5a09xSzEzRHJ4YWNUS1Bo
38
38
  cWo1UGp3RgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
39
- date: 2012-04-18 00:00:00.000000000 Z
39
+ date: 2012-04-20 00:00:00.000000000 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: trollop
43
- requirement: !ruby/object:Gem::Requirement
43
+ requirement: &70346770348920 !ruby/object:Gem::Requirement
44
44
  none: false
45
45
  requirements:
46
46
  - - ~>
@@ -48,15 +48,10 @@ dependencies:
48
48
  version: '1.16'
49
49
  type: :runtime
50
50
  prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
54
- - - ~>
55
- - !ruby/object:Gem::Version
56
- version: '1.16'
51
+ version_requirements: *70346770348920
57
52
  - !ruby/object:Gem::Dependency
58
53
  name: highline
59
- requirement: !ruby/object:Gem::Requirement
54
+ requirement: &70346770348380 !ruby/object:Gem::Requirement
60
55
  none: false
61
56
  requirements:
62
57
  - - ~>
@@ -64,15 +59,10 @@ dependencies:
64
59
  version: '1.6'
65
60
  type: :runtime
66
61
  prerelease: false
67
- version_requirements: !ruby/object:Gem::Requirement
68
- none: false
69
- requirements:
70
- - - ~>
71
- - !ruby/object:Gem::Version
72
- version: '1.6'
62
+ version_requirements: *70346770348380
73
63
  - !ruby/object:Gem::Dependency
74
64
  name: sysexits
75
- requirement: !ruby/object:Gem::Requirement
65
+ requirement: &70346770347880 !ruby/object:Gem::Requirement
76
66
  none: false
77
67
  requirements:
78
68
  - - ~>
@@ -80,15 +70,10 @@ dependencies:
80
70
  version: '1.0'
81
71
  type: :runtime
82
72
  prerelease: false
83
- version_requirements: !ruby/object:Gem::Requirement
84
- none: false
85
- requirements:
86
- - - ~>
87
- - !ruby/object:Gem::Version
88
- version: '1.0'
73
+ version_requirements: *70346770347880
89
74
  - !ruby/object:Gem::Dependency
90
75
  name: formvalidator
91
- requirement: !ruby/object:Gem::Requirement
76
+ requirement: &70346770347340 !ruby/object:Gem::Requirement
92
77
  none: false
93
78
  requirements:
94
79
  - - ~>
@@ -96,15 +81,10 @@ dependencies:
96
81
  version: '0.1'
97
82
  type: :runtime
98
83
  prerelease: false
99
- version_requirements: !ruby/object:Gem::Requirement
100
- none: false
101
- requirements:
102
- - - ~>
103
- - !ruby/object:Gem::Version
104
- version: '0.1'
84
+ version_requirements: *70346770347340
105
85
  - !ruby/object:Gem::Dependency
106
86
  name: inversion
107
- requirement: !ruby/object:Gem::Requirement
87
+ requirement: &70346770346760 !ruby/object:Gem::Requirement
108
88
  none: false
109
89
  requirements:
110
90
  - - ~>
@@ -112,15 +92,10 @@ dependencies:
112
92
  version: '0.8'
113
93
  type: :runtime
114
94
  prerelease: false
115
- version_requirements: !ruby/object:Gem::Requirement
116
- none: false
117
- requirements:
118
- - - ~>
119
- - !ruby/object:Gem::Version
120
- version: '0.8'
95
+ version_requirements: *70346770346760
121
96
  - !ruby/object:Gem::Dependency
122
97
  name: mongrel2
123
- requirement: !ruby/object:Gem::Requirement
98
+ requirement: &70346770346280 !ruby/object:Gem::Requirement
124
99
  none: false
125
100
  requirements:
126
101
  - - ~>
@@ -128,15 +103,10 @@ dependencies:
128
103
  version: '0.20'
129
104
  type: :runtime
130
105
  prerelease: false
131
- version_requirements: !ruby/object:Gem::Requirement
132
- none: false
133
- requirements:
134
- - - ~>
135
- - !ruby/object:Gem::Version
136
- version: '0.20'
106
+ version_requirements: *70346770346280
137
107
  - !ruby/object:Gem::Dependency
138
108
  name: uuidtools
139
- requirement: !ruby/object:Gem::Requirement
109
+ requirement: &70346770345820 !ruby/object:Gem::Requirement
140
110
  none: false
141
111
  requirements:
142
112
  - - ~>
@@ -144,15 +114,10 @@ dependencies:
144
114
  version: '2.1'
145
115
  type: :runtime
146
116
  prerelease: false
147
- version_requirements: !ruby/object:Gem::Requirement
148
- none: false
149
- requirements:
150
- - - ~>
151
- - !ruby/object:Gem::Version
152
- version: '2.1'
117
+ version_requirements: *70346770345820
153
118
  - !ruby/object:Gem::Dependency
154
119
  name: configurability
155
- requirement: !ruby/object:Gem::Requirement
120
+ requirement: &70346899262780 !ruby/object:Gem::Requirement
156
121
  none: false
157
122
  requirements:
158
123
  - - ~>
@@ -160,15 +125,10 @@ dependencies:
160
125
  version: '1.0'
161
126
  type: :runtime
162
127
  prerelease: false
163
- version_requirements: !ruby/object:Gem::Requirement
164
- none: false
165
- requirements:
166
- - - ~>
167
- - !ruby/object:Gem::Version
168
- version: '1.0'
128
+ version_requirements: *70346899262780
169
129
  - !ruby/object:Gem::Dependency
170
130
  name: pluginfactory
171
- requirement: !ruby/object:Gem::Requirement
131
+ requirement: &70346899262200 !ruby/object:Gem::Requirement
172
132
  none: false
173
133
  requirements:
174
134
  - - ~>
@@ -176,15 +136,10 @@ dependencies:
176
136
  version: '1.0'
177
137
  type: :runtime
178
138
  prerelease: false
179
- version_requirements: !ruby/object:Gem::Requirement
180
- none: false
181
- requirements:
182
- - - ~>
183
- - !ruby/object:Gem::Version
184
- version: '1.0'
139
+ version_requirements: *70346899262200
185
140
  - !ruby/object:Gem::Dependency
186
141
  name: hoe-mercurial
187
- requirement: !ruby/object:Gem::Requirement
142
+ requirement: &70346899261640 !ruby/object:Gem::Requirement
188
143
  none: false
189
144
  requirements:
190
145
  - - ~>
@@ -192,15 +147,10 @@ dependencies:
192
147
  version: 1.4.0
193
148
  type: :development
194
149
  prerelease: false
195
- version_requirements: !ruby/object:Gem::Requirement
196
- none: false
197
- requirements:
198
- - - ~>
199
- - !ruby/object:Gem::Version
200
- version: 1.4.0
150
+ version_requirements: *70346899261640
201
151
  - !ruby/object:Gem::Dependency
202
152
  name: hoe-manualgen
203
- requirement: !ruby/object:Gem::Requirement
153
+ requirement: &70346899261120 !ruby/object:Gem::Requirement
204
154
  none: false
205
155
  requirements:
206
156
  - - ~>
@@ -208,15 +158,10 @@ dependencies:
208
158
  version: 0.3.0
209
159
  type: :development
210
160
  prerelease: false
211
- version_requirements: !ruby/object:Gem::Requirement
212
- none: false
213
- requirements:
214
- - - ~>
215
- - !ruby/object:Gem::Version
216
- version: 0.3.0
161
+ version_requirements: *70346899261120
217
162
  - !ruby/object:Gem::Dependency
218
163
  name: hoe-highline
219
- requirement: !ruby/object:Gem::Requirement
164
+ requirement: &70346899260640 !ruby/object:Gem::Requirement
220
165
  none: false
221
166
  requirements:
222
167
  - - ~>
@@ -224,15 +169,10 @@ dependencies:
224
169
  version: 0.1.0
225
170
  type: :development
226
171
  prerelease: false
227
- version_requirements: !ruby/object:Gem::Requirement
228
- none: false
229
- requirements:
230
- - - ~>
231
- - !ruby/object:Gem::Version
232
- version: 0.1.0
172
+ version_requirements: *70346899260640
233
173
  - !ruby/object:Gem::Dependency
234
174
  name: rdoc
235
- requirement: !ruby/object:Gem::Requirement
175
+ requirement: &70346899260100 !ruby/object:Gem::Requirement
236
176
  none: false
237
177
  requirements:
238
178
  - - ~>
@@ -240,15 +180,10 @@ dependencies:
240
180
  version: '3.10'
241
181
  type: :development
242
182
  prerelease: false
243
- version_requirements: !ruby/object:Gem::Requirement
244
- none: false
245
- requirements:
246
- - - ~>
247
- - !ruby/object:Gem::Version
248
- version: '3.10'
183
+ version_requirements: *70346899260100
249
184
  - !ruby/object:Gem::Dependency
250
185
  name: hoe-deveiate
251
- requirement: !ruby/object:Gem::Requirement
186
+ requirement: &70346899259600 !ruby/object:Gem::Requirement
252
187
  none: false
253
188
  requirements:
254
189
  - - ~>
@@ -256,15 +191,10 @@ dependencies:
256
191
  version: '0.1'
257
192
  type: :development
258
193
  prerelease: false
259
- version_requirements: !ruby/object:Gem::Requirement
260
- none: false
261
- requirements:
262
- - - ~>
263
- - !ruby/object:Gem::Version
264
- version: '0.1'
194
+ version_requirements: *70346899259600
265
195
  - !ruby/object:Gem::Dependency
266
196
  name: simplecov
267
- requirement: !ruby/object:Gem::Requirement
197
+ requirement: &70346899259040 !ruby/object:Gem::Requirement
268
198
  none: false
269
199
  requirements:
270
200
  - - ~>
@@ -272,15 +202,10 @@ dependencies:
272
202
  version: '0.6'
273
203
  type: :development
274
204
  prerelease: false
275
- version_requirements: !ruby/object:Gem::Requirement
276
- none: false
277
- requirements:
278
- - - ~>
279
- - !ruby/object:Gem::Version
280
- version: '0.6'
205
+ version_requirements: *70346899259040
281
206
  - !ruby/object:Gem::Dependency
282
207
  name: hoe
283
- requirement: !ruby/object:Gem::Requirement
208
+ requirement: &70346899258540 !ruby/object:Gem::Requirement
284
209
  none: false
285
210
  requirements:
286
211
  - - ~>
@@ -288,12 +213,7 @@ dependencies:
288
213
  version: '3.0'
289
214
  type: :development
290
215
  prerelease: false
291
- version_requirements: !ruby/object:Gem::Requirement
292
- none: false
293
- requirements:
294
- - - ~>
295
- - !ruby/object:Gem::Version
296
- version: '3.0'
216
+ version_requirements: *70346899258540
297
217
  description: ! 'Strelka is a framework for creating and deploying Mongrel2 web applications
298
218
 
299
219
  in Ruby, and for managing a Mongrel2 cluster.
@@ -444,7 +364,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
444
364
  version: '0'
445
365
  requirements: []
446
366
  rubyforge_project: strelka
447
- rubygems_version: 1.8.21
367
+ rubygems_version: 1.8.16
448
368
  signing_key:
449
369
  specification_version: 3
450
370
  summary: Strelka is a framework for creating and deploying Mongrel2 web applications
metadata.gz.sig CHANGED
Binary file