strelka 0.0.1.pre.185 → 0.0.1.pre.187

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,30 @@
1
+ 2012-04-11 Mahlon E. Smith <mahlon@martini.nu>
2
+
3
+ * lib/strelka/app/auth.rb, lib/strelka/app/errors.rb,
4
+ lib/strelka/app/filters.rb, lib/strelka/app/negotiation.rb,
5
+ lib/strelka/app/plugins.rb, lib/strelka/app/restresources.rb,
6
+ lib/strelka/app/sessions.rb, lib/strelka/app/templating.rb,
7
+ lib/strelka/mixins.rb, spec/strelka/app/auth_spec.rb,
8
+ spec/strelka/app/errors_spec.rb, spec/strelka/app/filters_spec.rb,
9
+ spec/strelka/app/negotiation_spec.rb,
10
+ spec/strelka/app/parameters_spec.rb,
11
+ spec/strelka/app/restresources_spec.rb,
12
+ spec/strelka/app/sessions_spec.rb,
13
+ spec/strelka/app/templating_spec.rb, spec/strelka/mixins_spec.rb:
14
+ Add inheritance support to plugins.
15
+
16
+ Currently, this is done manually by defining an inherited hook in
17
+ each plugin's ClassMethods, but we'll likely try to find some way to
18
+ automate it or at least refacter it into a declarative or two.
19
+ [4217deb1952c] [tip]
20
+
1
21
  2012-04-11 Michael Granger <ged@FaerieMUD.org>
2
22
 
23
+ * IDEAS.rdoc, Manifest.txt, bin/leash, bin/strelka, lib/strelka.rb,
24
+ lib/strelka/app.rb, lib/strelka/constants.rb:
25
+ Rename bin/leash to bin/strelka and allow overriding the DATADIR.
26
+ [195b7937f42a]
27
+
3
28
  * Rakefile, lib/strelka/app.rb, lib/strelka/app/auth.rb,
4
29
  lib/strelka/app/errors.rb, lib/strelka/app/filters.rb,
5
30
  lib/strelka/app/negotiation.rb, lib/strelka/app/parameters.rb,
@@ -10,21 +35,23 @@
10
35
  spec/strelka/app/restresources_spec.rb,
11
36
  spec/strelka/app/routing_spec.rb:
12
37
  Fixing specs broken by the deferred plugins change. Ugh, I suck.
13
- [d762ebcce3a6] [tip]
38
+ [d762ebcce3a6]
14
39
 
15
40
  * Merging with ssh://hg@deveiate.org/Strelka@8f1c27819e70
16
41
  [5fcd76455aad]
17
42
 
18
- * Manifest.txt:
19
- Updating the manifest
20
- [35165b3d01cc]
21
-
22
43
  2012-04-11 Mahlon E. Smith <mahlon@martini.nu>
23
44
 
24
45
  * lib/strelka/session/default.rb:
25
46
  Use the built-in securerandom method for obtaining a hex value.
26
47
  [8f1c27819e70]
27
48
 
49
+ 2012-04-11 Michael Granger <ged@FaerieMUD.org>
50
+
51
+ * Manifest.txt:
52
+ Updating the manifest
53
+ [35165b3d01cc]
54
+
28
55
  2012-04-10 Michael Granger <ged@FaerieMUD.org>
29
56
 
30
57
  * lib/strelka/app/auth.rb, lib/strelka/app/parameters.rb,
@@ -35,7 +62,7 @@
35
62
  spec/strelka/paramvalidator_spec.rb:
36
63
  Rework the paramvalidator and parameters plugin to allow per-request
37
64
  overrides
38
- [e7393474988b]
65
+ [e7393474988b] [github/master]
39
66
 
40
67
  * bin/leash, examples/apps/auth-demo, examples/apps/auth-demo2,
41
68
  examples/apps/sessions-demo, examples/auth-demo.rb, examples/auth-
@@ -95,22 +122,6 @@
95
122
  Add the ChangeLog to the ignorefile
96
123
  [cc8c30d38652]
97
124
 
98
- * lib/strelka/app/templating.rb:
99
- Add API docs to the :templating plugin module
100
- [3c160d996320]
101
-
102
- * README.rdoc:
103
- Add more URLs
104
- [060962556bd1]
105
-
106
- * Rakefile:
107
- Oops. Fix typo
108
- [5a8aa207860b]
109
-
110
- * .rvm.gems, Rakefile:
111
- Update dependencies
112
- [787e523777d1]
113
-
114
125
  2012-04-06 Mahlon E. Smith <mahlon@martini.nu>
115
126
 
116
127
  * lib/strelka/app/sessions.rb, lib/strelka/cookie.rb,
@@ -128,6 +139,24 @@
128
139
  Add a persistent DB session store, using sequel.
129
140
  [99f3c3f5d6ca]
130
141
 
142
+ 2012-04-06 Michael Granger <ged@FaerieMUD.org>
143
+
144
+ * lib/strelka/app/templating.rb:
145
+ Add API docs to the :templating plugin module
146
+ [3c160d996320]
147
+
148
+ * README.rdoc:
149
+ Add more URLs
150
+ [060962556bd1]
151
+
152
+ * Rakefile:
153
+ Oops. Fix typo
154
+ [5a8aa207860b]
155
+
156
+ * .rvm.gems, Rakefile:
157
+ Update dependencies
158
+ [787e523777d1]
159
+
131
160
  2012-04-04 Michael Granger <ged@FaerieMUD.org>
132
161
 
133
162
  * manual/src/tutorial.page:
@@ -183,7 +212,7 @@
183
212
  * examples/auth-demo.rb, lib/strelka/app/auth.rb,
184
213
  lib/strelka/authprovider.rb, spec/strelka/app/auth_spec.rb:
185
214
  Merging with accidentally-committed auth patch on Github
186
- [3025b5711352] [github/master]
215
+ [3025b5711352]
187
216
 
188
217
  2012-03-20 Michael Granger <ged@FaerieMUD.org>
189
218
 
data/Rakefile CHANGED
@@ -49,19 +49,6 @@ ENV['VERSION'] ||= hoespec.spec.version.to_s
49
49
  # Ensure the specs pass before checking in
50
50
  task 'hg:precheckin' => [ :check_history, :check_manifest, :spec ]
51
51
 
52
- ### Make the ChangeLog update if the repo has changed since it was last built
53
- file '.hg/branch'
54
- file 'ChangeLog' => '.hg/branch' do |task|
55
- $stderr.puts "Updating the changelog..."
56
- content = make_changelog()
57
- File.open( task.name, 'w', 0644 ) do |fh|
58
- fh.print( content )
59
- end
60
- end
61
-
62
- # Rebuild the ChangeLog immediately before release
63
- task :prerelease => 'ChangeLog'
64
-
65
52
 
66
53
  desc "Build a coverage report"
67
54
  task :coverage do
@@ -253,7 +253,7 @@ module Strelka::App::Auth
253
253
  module ClassMethods
254
254
 
255
255
  @auth_provider = nil
256
- @authz_callback = nil
256
+ @authz_callback = nil
257
257
  @positive_auth_criteria = {}
258
258
  @negative_auth_criteria = {}
259
259
 
@@ -262,14 +262,25 @@ module Strelka::App::Auth
262
262
  attr_reader :positive_auth_criteria, :negative_auth_criteria
263
263
 
264
264
 
265
+ ### Extension callback -- add instance variables to extending objects.
266
+ def inherited( subclass )
267
+ super
268
+ subclass.instance_variable_set( :@auth_provider, @auth_provider )
269
+ subclass.instance_variable_set( :@authz_callback, @authz_callback.dup ) if @authz_callback
270
+ subclass.instance_variable_set( :@positive_auth_criteria, @positive_auth_criteria.dup )
271
+ subclass.instance_variable_set( :@negative_auth_criteria, @negative_auth_criteria.dup )
272
+ end
273
+
274
+
265
275
  ### Get/set the authentication type.
266
276
  def auth_provider( type=nil )
267
277
  if type
268
278
  @auth_provider = Strelka::AuthProvider.get_subclass( type )
269
- elsif type.nil?
270
- @auth_provider ||= Strelka::AuthProvider.get_subclass( DEFAULT_AUTH_PROVIDER )
271
279
  end
272
280
 
281
+ Strelka.log.debug "Auth provider %p" % [ @auth_provider ]
282
+ @auth_provider ||= Strelka::AuthProvider.get_subclass( DEFAULT_AUTH_PROVIDER )
283
+ Strelka.log.debug "Auth provider %p" % [ @auth_provider ]
273
284
  return @auth_provider
274
285
  end
275
286
 
@@ -53,6 +53,13 @@ module Strelka::App::Errors
53
53
  attr_reader :status_handlers
54
54
 
55
55
 
56
+ ### Extension callback -- add instance variables to extending objects.
57
+ def inherited( subclass )
58
+ super
59
+ subclass.instance_variable_set( :@status_handlers, @status_handlers.dup )
60
+ end
61
+
62
+
56
63
  ### Register a callback for responses whose status code is within the specified
57
64
  ### +range+. Range can either be a single integer HTTP status code, or a Range
58
65
  ### of the same (e.g., 400..499) for all statuses with that range.
@@ -23,6 +23,19 @@ module Strelka::App::Filters
23
23
  attr_reader :filters
24
24
 
25
25
 
26
+ ### Extension callback -- add instance variables to extending objects.
27
+ def inherited( subclass )
28
+ super
29
+
30
+ sub_filters = {
31
+ :request => self.filters[:request].dup,
32
+ :response => self.filters[:response].dup,
33
+ :both => self.filters[:both].dup
34
+ }
35
+ subclass.instance_variable_set( :@filters, sub_filters )
36
+ end
37
+
38
+
26
39
  ### Get/set the router class to use for mapping requests to handlers to +newclass.
27
40
  def filter( which=:both, &block )
28
41
  which = which.to_sym
@@ -58,6 +58,14 @@ module Strelka::App::Negotiation
58
58
  attr_reader :transform_names
59
59
 
60
60
 
61
+ ### Extension callback -- add instance variables to extending objects.
62
+ def inherited( subclass )
63
+ super
64
+ subclass.instance_variable_set( :@content_type_transforms, @content_type_transforms.dup )
65
+ subclass.instance_variable_set( :@transform_names, @transform_names.dup )
66
+ end
67
+
68
+
61
69
  ### Define a new media-type associated with the specified +name+ and +mimetype+. Responses
62
70
  ### whose requests accept content of the given +mimetype+ will pass their response to the
63
71
  ### specified +transform_block+, which should re-write the response's entity body if it can
@@ -203,12 +203,7 @@ class Strelka::App
203
203
  ival = cm_mod.instance_variable_get( ivar )
204
204
 
205
205
  # Don't duplicate modules/classes or immediates
206
- case ival
207
- when Module, TrueClass, FalseClass, Symbol, Numeric, NilClass
208
- instance_variable_set( ivar, ival )
209
- else
210
- instance_variable_set( ivar, ival.dup )
211
- end
206
+ instance_variable_set( ivar, Strelka::DataUtilities.deep_copy(ival) )
212
207
  end
213
208
  end
214
209
  end
@@ -70,13 +70,13 @@ module Strelka::App::RestResources
70
70
  @resource_verbs = Hash.new {|h,k| h[k] = Set.new }
71
71
 
72
72
  # Global options
73
- @global_options = DEFAULTS.dup
73
+ @service_options = DEFAULTS.dup
74
74
 
75
75
  # The list of REST routes assigned to Sequel::Model objects
76
76
  attr_reader :resource_verbs
77
77
 
78
- # The global resource options hash
79
- attr_reader :global_options
78
+ # The global service options hash
79
+ attr_reader :service_options
80
80
 
81
81
 
82
82
  ### Extension callback -- overridden to also install dependencies.
@@ -96,9 +96,21 @@ module Strelka::App::RestResources
96
96
  end
97
97
 
98
98
 
99
+ ### Inheritance callback -- copy plugin data to inheriting subclasses.
100
+ def inherited( subclass )
101
+ super
102
+
103
+ verbs_copy = Strelka::DataUtilities.deep_copy( self.resource_verbs )
104
+ subclass.instance_variable_set( :@resource_verbs, verbs_copy )
105
+
106
+ opts_copy = Strelka::DataUtilities.deep_copy( self.service_options )
107
+ subclass.instance_variable_set( :@service_options, opts_copy )
108
+ end
109
+
110
+
99
111
  ### Set the prefix for all following resource routes to +route+.
100
112
  def resource_prefix( route )
101
- self.global_options[ :prefix ] = route
113
+ self.service_options[ :prefix ] = route
102
114
  end
103
115
 
104
116
 
@@ -106,7 +118,7 @@ module Strelka::App::RestResources
106
118
  ### and returns a Sequel::Dataset)
107
119
  def resource( rsrcobj, options={} )
108
120
  Strelka.log.debug "Adding REST resource for %p" % [ rsrcobj ]
109
- options = self.global_options.merge( options )
121
+ options = self.service_options.merge( options )
110
122
 
111
123
  # Figure out what the resource name is, and make the route from it
112
124
  name = options[:name] || rsrcobj.implicit_table_name
@@ -106,6 +106,14 @@ module Strelka::App::Sessions
106
106
  # application
107
107
  @session_namespace = nil
108
108
 
109
+
110
+ ### Extension callback -- add instance variables to extending objects.
111
+ def inherited( subclass )
112
+ super
113
+ subclass.instance_variable_set( :@session_namespace, @session_namespace )
114
+ end
115
+
116
+
109
117
  ### Get/set the key that will determine which namespace in the session object
110
118
  ### the application will see.
111
119
  def session_namespace( new_namespace=nil )
@@ -105,6 +105,14 @@ module Strelka::App::Templating
105
105
  attr_accessor :layout_template
106
106
 
107
107
 
108
+ ### Extension callback -- add instance variables to extending objects.
109
+ def inherited( subclass )
110
+ super
111
+ subclass.instance_variable_set( :@template_map, @template_map.dup )
112
+ subclass.instance_variable_set( :@layout_template, @layout_template.dup )
113
+ end
114
+
115
+
108
116
  ### Get/set the templates declared for the App.
109
117
  def templates( newhash=nil )
110
118
  if newhash
@@ -278,6 +278,7 @@ module Strelka
278
278
 
279
279
  when Hash
280
280
  newhash = {}
281
+ newhash.default_proc = obj.default_proc if obj.default_proc
281
282
  obj.each do |k,v|
282
283
  newhash[ deep_copy(k) ] = deep_copy( v )
283
284
  end
@@ -116,6 +116,22 @@ describe Strelka::App::Auth do
116
116
  req.authenticated_user.should == 'anonymous'
117
117
  end
118
118
 
119
+ it "has its auth config inherited by subclasses" do
120
+ @app.class_eval do
121
+ auth_provider :hostaccess
122
+ authz_callback { true }
123
+ end
124
+ subclass = Class.new( @app )
125
+
126
+ subclass.auth_provider.should == @app.auth_provider
127
+ subclass.authz_callback.should == @app.authz_callback
128
+ subclass.positive_auth_criteria.should == @app.positive_auth_criteria
129
+ subclass.positive_auth_criteria.should_not equal( @app.positive_auth_criteria )
130
+ subclass.negative_auth_criteria.should == @app.negative_auth_criteria
131
+ subclass.negative_auth_criteria.should_not equal( @app.negative_auth_criteria )
132
+ end
133
+
134
+
119
135
  context "that has negative auth criteria for the root" do
120
136
 
121
137
  before( :each ) do
@@ -50,6 +50,15 @@ describe Strelka::App::Errors do
50
50
  end
51
51
  end
52
52
 
53
+ it "has its auth config inherited by subclasses" do
54
+ @app.on_status HTTP::OK do
55
+ 'blap'
56
+ end
57
+ subclass = Class.new( @app )
58
+ subclass.status_handlers.should == @app.status_handlers
59
+ subclass.status_handlers.should_not equal( @app.status_handlers )
60
+ end
61
+
53
62
  it "doesn't alter normal responses" do
54
63
  @app.class_eval do
55
64
  get do |req|
@@ -52,6 +52,18 @@ describe Strelka::App::Filters do
52
52
  [ @app, @app.filters.object_id * 2 ]
53
53
  end
54
54
 
55
+ it "has its filters config inherited by subclasses" do
56
+ @app.filter :request do |req|
57
+ req.notes['blap'] = true
58
+ end
59
+ subclass = Class.new( @app )
60
+
61
+ subclass.filters.should == @app.filters
62
+ subclass.filters.should_not equal( @app.filters )
63
+ subclass.filters[:request].should_not equal( @app.filters[:request] )
64
+ subclass.filters[:response].should_not equal( @app.filters[:response] )
65
+ subclass.filters[:both].should_not equal( @app.filters[:both] )
66
+ end
55
67
 
56
68
  it "has a Hash of filters" do
57
69
  @app.filters.should be_a( Hash )
@@ -54,6 +54,18 @@ describe Strelka::App::Negotiation do
54
54
  end
55
55
 
56
56
 
57
+ it "has its config inherited by subclasses" do
58
+ @app.add_content_type :text, 'text/plain' do
59
+ "It's all text now, baby"
60
+ end
61
+ subclass = Class.new( @app )
62
+
63
+ subclass.transform_names.should == @app.transform_names
64
+ subclass.transform_names.should_not equal( @app.transform_names )
65
+ subclass.content_type_transforms.should == @app.content_type_transforms
66
+ subclass.content_type_transforms.should_not equal( @app.content_type_transforms )
67
+ end
68
+
57
69
  it "gets requests that have been extended with content-negotiation" do
58
70
  req = @request_factory.get( '/service/user/estark' )
59
71
  @app.new.handle( req )
@@ -52,6 +52,14 @@ describe Strelka::App::Parameters do
52
52
  @app = nil
53
53
  end
54
54
 
55
+ it "has its config inherited by subclasses" do
56
+ @app.param :string
57
+ subclass = Class.new( @app )
58
+
59
+ subclass.paramvalidator.param_names.should == @app.paramvalidator.param_names
60
+ subclass.paramvalidator.should_not equal( @app.paramvalidator )
61
+ end
62
+
55
63
  it "has a ParamValidator" do
56
64
  @app.paramvalidator.should be_a( Strelka::ParamValidator )
57
65
  end
@@ -393,6 +393,29 @@ describe Strelka::App::RestResources do
393
393
 
394
394
  end # route behaviors
395
395
 
396
+
397
+ describe "supports inheritance" do
398
+
399
+ subject do
400
+ @app.resource( Mongrel2::Config::Server )
401
+ Class.new( @app )
402
+ end
403
+
404
+
405
+ it "has its config inherited by subclass" do
406
+ subject.service_options.should == @app.service_options
407
+ subject.service_options.should_not be( @app.service_options )
408
+ end
409
+
410
+ it "has its metadata inherited by subclasses" do
411
+ subject.resource_verbs.should have( 1 ).member
412
+ subject.resource_verbs.should include( 'servers' )
413
+ subject.resource_verbs[ 'servers' ].
414
+ should include( :OPTIONS, :GET, :HEAD, :POST, :PUT, :DELETE )
415
+ end
416
+
417
+ end # supports inheritance
418
+
396
419
  end
397
420
 
398
421
  end
@@ -88,6 +88,12 @@ describe Strelka::App::Sessions do
88
88
  end
89
89
  end
90
90
 
91
+ it "has its config inherited by subclasses" do
92
+ @app.session_namespace :indian_gurbles
93
+ subclass = Class.new( @app )
94
+
95
+ subclass.session_namespace.should == @app.session_namespace
96
+ end
91
97
 
92
98
  it "has a default session key that's the same as its appid" do
93
99
  @app.session_namespace.should == @app.default_appid
@@ -54,6 +54,17 @@ describe Strelka::App::Templating do
54
54
  end
55
55
 
56
56
 
57
+ it "has its config inherited by subclasses" do
58
+ @app.templates :text => '/tmp/blorp'
59
+ @app.layout 'layout.tmpl'
60
+ subclass = Class.new( @app )
61
+
62
+ subclass.template_map.should == @app.template_map
63
+ subclass.template_map.should_not equal( @app.template_map )
64
+ subclass.layout_template.should == @app.layout_template
65
+ subclass.layout_template.should_not equal( @app.layout_template )
66
+ end
67
+
57
68
  it "has a Hash of templates" do
58
69
  @app.templates.should be_a( Hash )
59
70
  end
@@ -8,6 +8,7 @@ BEGIN {
8
8
  $LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
9
9
  }
10
10
 
11
+ require 'set'
11
12
  require 'rspec'
12
13
  require 'spec/lib/helpers'
13
14
  require 'strelka/mixins'
@@ -219,5 +220,117 @@ describe Strelka, "mixins" do
219
220
 
220
221
  end
221
222
 
223
+
224
+ describe Strelka::DataUtilities do
225
+
226
+ it "doesn't try to dup immediate objects" do
227
+ Strelka::DataUtilities.deep_copy( nil ).should be( nil )
228
+ Strelka::DataUtilities.deep_copy( 112 ).should be( 112 )
229
+ Strelka::DataUtilities.deep_copy( true ).should be( true )
230
+ Strelka::DataUtilities.deep_copy( false ).should be( false )
231
+ Strelka::DataUtilities.deep_copy( :a_symbol ).should be( :a_symbol )
232
+ end
233
+
234
+ it "makes distinct copies of arrays and their members" do
235
+ original = [ 'foom', Set.new([ 1,2 ]), :a_symbol ]
236
+
237
+ copy = Strelka::DataUtilities.deep_copy( original )
238
+
239
+ copy.should == original
240
+ copy.should_not be( original )
241
+ copy[0].should == original[0]
242
+ copy[0].should_not be( original[0] )
243
+ copy[1].should == original[1]
244
+ copy[1].should_not be( original[1] )
245
+ copy[2].should == original[2]
246
+ copy[2].should be( original[2] ) # Immediate
247
+ end
248
+
249
+ it "makes recursive copies of deeply-nested Arrays" do
250
+ original = [ 1, [ 2, 3, [4], 5], 6, [7, [8, 9], 0] ]
251
+
252
+ copy = Strelka::DataUtilities.deep_copy( original )
253
+
254
+ copy.should == original
255
+ copy.should_not be( original )
256
+ copy[1].should_not be( original[1] )
257
+ copy[1][2].should_not be( original[1][2] )
258
+ copy[3].should_not be( original[3] )
259
+ copy[3][1].should_not be( original[3][1] )
260
+ end
261
+
262
+ it "makes distinct copies of Hashes and their members" do
263
+ original = {
264
+ :a => 1,
265
+ 'b' => 2,
266
+ 3 => 'c',
267
+ }
268
+
269
+ copy = Strelka::DataUtilities.deep_copy( original )
270
+
271
+ copy.should == original
272
+ copy.should_not be( original )
273
+ copy[:a].should == 1
274
+ copy.key( 2 ).should == 'b'
275
+ copy.key( 2 ).should_not be( original.key(2) )
276
+ copy[3].should == 'c'
277
+ copy[3].should_not be( original[3] )
278
+ end
279
+
280
+ it "makes distinct copies of deeply-nested Hashes" do
281
+ original = {
282
+ :a => {
283
+ :b => {
284
+ :c => 'd',
285
+ :e => 'f',
286
+ },
287
+ :g => 'h',
288
+ },
289
+ :i => 'j',
290
+ }
291
+
292
+ copy = Strelka::DataUtilities.deep_copy( original )
293
+
294
+ copy.should == original
295
+ copy[:a][:b][:c].should == 'd'
296
+ copy[:a][:b][:c].should_not be( original[:a][:b][:c] )
297
+ copy[:a][:b][:e].should == 'f'
298
+ copy[:a][:b][:e].should_not be( original[:a][:b][:e] )
299
+ copy[:a][:g].should == 'h'
300
+ copy[:a][:g].should_not be( original[:a][:g] )
301
+ copy[:i].should == 'j'
302
+ copy[:i].should_not be( original[:i] )
303
+ end
304
+
305
+ it "copies the default proc of copied Hashes" do
306
+ original = Hash.new {|h,k| h[ k ] = Set.new }
307
+
308
+ copy = Strelka::DataUtilities.deep_copy( original )
309
+
310
+ copy.default_proc.should == original.default_proc
311
+ end
312
+
313
+ it "preserves taintedness of copied objects" do
314
+ original = Object.new
315
+ original.taint
316
+
317
+ copy = Strelka::DataUtilities.deep_copy( original )
318
+
319
+ copy.should_not be( original )
320
+ copy.should be_tainted()
321
+ end
322
+
323
+ it "preserves frozen-ness of copied objects" do
324
+ original = Object.new
325
+ original.freeze
326
+
327
+ copy = Strelka::DataUtilities.deep_copy( original )
328
+
329
+ copy.should_not be( original )
330
+ copy.should be_frozen()
331
+ end
332
+
333
+ end
334
+
222
335
  end
223
336
 
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.185
4
+ version: 0.0.1.pre.187
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-11 00:00:00.000000000 Z
39
+ date: 2012-04-12 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: &70305412738440 !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: *70305412738440
57
52
  - !ruby/object:Gem::Dependency
58
53
  name: highline
59
- requirement: !ruby/object:Gem::Requirement
54
+ requirement: &70305412737980 !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: *70305412737980
73
63
  - !ruby/object:Gem::Dependency
74
64
  name: sysexits
75
- requirement: !ruby/object:Gem::Requirement
65
+ requirement: &70305412737520 !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: *70305412737520
89
74
  - !ruby/object:Gem::Dependency
90
75
  name: formvalidator
91
- requirement: !ruby/object:Gem::Requirement
76
+ requirement: &70305412737060 !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: *70305412737060
105
85
  - !ruby/object:Gem::Dependency
106
86
  name: inversion
107
- requirement: !ruby/object:Gem::Requirement
87
+ requirement: &70305412736540 !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: *70305412736540
121
96
  - !ruby/object:Gem::Dependency
122
97
  name: mongrel2
123
- requirement: !ruby/object:Gem::Requirement
98
+ requirement: &70305412736020 !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: *70305412736020
137
107
  - !ruby/object:Gem::Dependency
138
108
  name: uuidtools
139
- requirement: !ruby/object:Gem::Requirement
109
+ requirement: &70305412735580 !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: *70305412735580
153
118
  - !ruby/object:Gem::Dependency
154
119
  name: configurability
155
- requirement: !ruby/object:Gem::Requirement
120
+ requirement: &70305412734980 !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: *70305412734980
169
129
  - !ruby/object:Gem::Dependency
170
130
  name: pluginfactory
171
- requirement: !ruby/object:Gem::Requirement
131
+ requirement: &70305412734060 !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: *70305412734060
185
140
  - !ruby/object:Gem::Dependency
186
141
  name: hoe-mercurial
187
- requirement: !ruby/object:Gem::Requirement
142
+ requirement: &70305412733240 !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: *70305412733240
201
151
  - !ruby/object:Gem::Dependency
202
152
  name: hoe-manualgen
203
- requirement: !ruby/object:Gem::Requirement
153
+ requirement: &70305412732720 !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: *70305412732720
217
162
  - !ruby/object:Gem::Dependency
218
163
  name: hoe-highline
219
- requirement: !ruby/object:Gem::Requirement
164
+ requirement: &70305412732180 !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: *70305412732180
233
173
  - !ruby/object:Gem::Dependency
234
174
  name: rdoc
235
- requirement: !ruby/object:Gem::Requirement
175
+ requirement: &70305412731580 !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: *70305412731580
249
184
  - !ruby/object:Gem::Dependency
250
185
  name: hoe-deveiate
251
- requirement: !ruby/object:Gem::Requirement
186
+ requirement: &70305412730800 !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: *70305412730800
265
195
  - !ruby/object:Gem::Dependency
266
196
  name: simplecov
267
- requirement: !ruby/object:Gem::Requirement
197
+ requirement: &70305412745860 !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: *70305412745860
281
206
  - !ruby/object:Gem::Dependency
282
207
  name: hoe
283
- requirement: !ruby/object:Gem::Requirement
208
+ requirement: &70305412745420 !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: *70305412745420
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.
@@ -442,7 +362,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
442
362
  version: '0'
443
363
  requirements: []
444
364
  rubyforge_project: strelka
445
- rubygems_version: 1.8.21
365
+ rubygems_version: 1.8.16
446
366
  signing_key:
447
367
  specification_version: 3
448
368
  summary: Strelka is a framework for creating and deploying Mongrel2 web applications
metadata.gz.sig CHANGED
Binary file