rubysl-cgi-session 1.0.0 → 2.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: be8113d5777dcd44f19953df53b5930ced231f2a
4
- data.tar.gz: ae27543b310806b0b8eaca6657b8058d9d5d8b12
3
+ metadata.gz: 4789df406231c3e8a7bfa32f2f03bbcd88016c0b
4
+ data.tar.gz: 93dcf411efbe9cb4ed3177fb1a6265ee5a643b09
5
5
  SHA512:
6
- metadata.gz: 2a60a0678b8889e13337d81ceac3215d7bb85894c3ddf3725af681ae167f91865e830ba2de81a33888985151c089446f795597276dd2e70dc8ede4085cf1fadc
7
- data.tar.gz: 630f5f071410e7a963567fa319fa561cccdb2b91726529468a900411061354ce661ba55804dbb09f83d40a9587332e68db049c49b31ecb505f2e61c55ff4e708
6
+ metadata.gz: c2cc342d9538cd0d82d5441082d8d4d19f307bb269728ffa068fd192dd0622750f06c50893a8b47b5a262a742248bc3cb98e9c98a388efe1b6374ed354074b7e
7
+ data.tar.gz: 4114b261866635d2c6d540d18da5c7f6f04db324028aea4338869b4eb742374b8d7d3c1b33b28f67c18cc5b5e11880f7e9924e1b5df786d089d4ea53963699cd
data/.gitignore CHANGED
@@ -15,4 +15,3 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
- .rbx
data/.travis.yml CHANGED
@@ -1,8 +1,7 @@
1
1
  language: ruby
2
- before_install:
3
- - gem update --system
4
- - gem --version
5
- - gem install rubysl-bundler
6
- script: bundle exec mspec spec
2
+ env:
3
+ - RUBYLIB=lib
4
+ script: bundle exec mspec
7
5
  rvm:
8
- - rbx-nightly-18mode
6
+ - 1.9.3
7
+ - rbx-nightly-19mode
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # RubySL::Cgi::Session
1
+ # Rubysl::Cgi::Session
2
2
 
3
3
  TODO: Write a gem description
4
4
 
@@ -24,6 +24,6 @@ TODO: Write usage instructions here
24
24
 
25
25
  1. Fork it
26
26
  2. Create your feature branch (`git checkout -b my-new-feature`)
27
- 3. Commit your changes (`git commit -am 'Added some feature'`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
28
  4. Push to the branch (`git push origin my-new-feature`)
29
29
  5. Create new Pull Request
data/Rakefile CHANGED
@@ -1,2 +1 @@
1
- #!/usr/bin/env rake
2
1
  require "bundler/gem_tasks"
@@ -2,7 +2,7 @@
2
2
  # cgi/session/pstore.rb - persistent storage of marshalled session data
3
3
  #
4
4
  # Documentation: William Webber (william@williamwebber.com)
5
- #
5
+ #
6
6
  # == Overview
7
7
  #
8
8
  # This file provides the CGI::Session::PStore class, which builds
@@ -29,7 +29,7 @@ class CGI
29
29
  # created. The session id must only contain alphanumeric
30
30
  # characters; automatically generated session ids observe
31
31
  # this requirement.
32
- #
32
+ #
33
33
  # +option+ is a hash of options for the initializer. The
34
34
  # following options are recognised:
35
35
  #
@@ -43,55 +43,55 @@ class CGI
43
43
  # This session's PStore file will be created if it does
44
44
  # not exist, or opened if it does.
45
45
  def initialize(session, option={})
46
- dir = option['tmpdir'] || Dir::tmpdir
47
- prefix = option['prefix'] || ''
48
- id = session.session_id
46
+ dir = option['tmpdir'] || Dir::tmpdir
47
+ prefix = option['prefix'] || ''
48
+ id = session.session_id
49
49
  require 'digest/md5'
50
50
  md5 = Digest::MD5.hexdigest(id)[0,16]
51
- path = dir+"/"+prefix+md5
52
- path.untaint
53
- if File::exist?(path)
54
- @hash = nil
55
- else
51
+ path = dir+"/"+prefix+md5
52
+ path.untaint
53
+ if File::exist?(path)
54
+ @hash = nil
55
+ else
56
56
  unless session.new_session
57
57
  raise CGI::Session::NoSession, "uninitialized session"
58
58
  end
59
- @hash = {}
60
- end
61
- @p = ::PStore.new(path)
62
- @p.transaction do |p|
63
- File.chmod(0600, p.path)
64
- end
59
+ @hash = {}
60
+ end
61
+ @p = ::PStore.new(path)
62
+ @p.transaction do |p|
63
+ File.chmod(0600, p.path)
64
+ end
65
65
  end
66
66
 
67
67
  # Restore session state from the session's PStore file.
68
68
  #
69
69
  # Returns the session state as a hash.
70
70
  def restore
71
- unless @hash
72
- @p.transaction do
73
- @hash = @p['hash'] || {}
74
- end
75
- end
76
- @hash
71
+ unless @hash
72
+ @p.transaction do
73
+ @hash = @p['hash'] || {}
74
+ end
75
+ end
76
+ @hash
77
77
  end
78
78
 
79
79
  # Save session state to the session's PStore file.
80
- def update
81
- @p.transaction do
82
- @p['hash'] = @hash
83
- end
80
+ def update
81
+ @p.transaction do
82
+ @p['hash'] = @hash
83
+ end
84
84
  end
85
85
 
86
86
  # Update and close the session's PStore file.
87
87
  def close
88
- update
88
+ update
89
89
  end
90
90
 
91
91
  # Close and delete the session's PStore file.
92
92
  def delete
93
- path = @p.path
94
- File::unlink path
93
+ path = @p.path
94
+ File::unlink path
95
95
  end
96
96
 
97
97
  end
@@ -8,28 +8,22 @@
8
8
  # Author: Yukihiro "Matz" Matsumoto
9
9
  #
10
10
  # Documentation: William Webber (william@williamwebber.com)
11
- #
12
- # == Overview
13
- #
14
- # This file provides the +CGI::Session+ class, which provides session
15
- # support for CGI scripts. A session is a sequence of HTTP requests
16
- # and responses linked together and associated with a single client.
17
- # Information associated with the session is stored
18
- # on the server between requests. A session id is passed between client
19
- # and server with every request and response, transparently
20
- # to the user. This adds state information to the otherwise stateless
21
- # HTTP request/response protocol.
22
- #
23
- # See the documentation to the +CGI::Session+ class for more details
24
- # and examples of usage. See cgi.rb for the +CGI+ class itself.
25
11
 
26
12
  require 'cgi'
27
13
  require 'tmpdir'
28
14
 
29
15
  class CGI
30
16
 
31
- # Class representing an HTTP session. See documentation for the file
32
- # cgi/session.rb for an introduction to HTTP sessions.
17
+ # == Overview
18
+ #
19
+ # This file provides the CGI::Session class, which provides session
20
+ # support for CGI scripts. A session is a sequence of HTTP requests
21
+ # and responses linked together and associated with a single client.
22
+ # Information associated with the session is stored
23
+ # on the server between requests. A session id is passed between client
24
+ # and server with every request and response, transparently
25
+ # to the user. This adds state information to the otherwise stateless
26
+ # HTTP request/response protocol.
33
27
  #
34
28
  # == Lifecycle
35
29
  #
@@ -47,7 +41,7 @@ class CGI
47
41
  # == Setting and retrieving session data.
48
42
  #
49
43
  # The Session class associates data with a session as key-value pairs.
50
- # This data can be set and retrieved by indexing the Session instance
44
+ # This data can be set and retrieved by indexing the Session instance
51
45
  # using '[]', much the same as hashes (although other hash methods
52
46
  # are not supported).
53
47
  #
@@ -60,21 +54,21 @@ class CGI
60
54
  #
61
55
  # == Storing session state
62
56
  #
63
- # The caller can specify what form of storage to use for the session's
57
+ # The caller can specify what form of storage to use for the session's
64
58
  # data with the +database_manager+ option to CGI::Session::new. The
65
59
  # following storage classes are provided as part of the standard library:
66
60
  #
67
- # CGI::Session::FileStore:: stores data as plain text in a flat file. Only
68
- # works with String data. This is the default
61
+ # CGI::Session::FileStore:: stores data as plain text in a flat file. Only
62
+ # works with String data. This is the default
69
63
  # storage type.
70
- # CGI::Session::MemoryStore:: stores data in an in-memory hash. The data
71
- # only persists for as long as the current ruby
64
+ # CGI::Session::MemoryStore:: stores data in an in-memory hash. The data
65
+ # only persists for as long as the current ruby
72
66
  # interpreter instance does.
73
67
  # CGI::Session::PStore:: stores data in Marshalled format. Provided by
74
- # cgi/session/pstore.rb. Supports data of any type,
68
+ # cgi/session/pstore.rb. Supports data of any type,
75
69
  # and provides file-locking and transaction support.
76
70
  #
77
- # Custom storage types can also be created by defining a class with
71
+ # Custom storage types can also be created by defining a class with
78
72
  # the following methods:
79
73
  #
80
74
  # new(session, options)
@@ -99,14 +93,14 @@ class CGI
99
93
  # The simplest way to do this is via cookies. The CGI::Session class
100
94
  # provides transparent support for session id communication via cookies
101
95
  # if the client has cookies enabled.
102
- #
96
+ #
103
97
  # If the client has cookies disabled, the session id must be included
104
98
  # as a parameter of all requests sent by the client to the server. The
105
99
  # CGI::Session class in conjunction with the CGI class will transparently
106
100
  # add the session id as a hidden input field to all forms generated
107
101
  # using the CGI#form() HTML generation method. No built-in support is
108
102
  # provided for other mechanisms, such as URL re-writing. The caller is
109
- # responsible for extracting the session id from the session_id
103
+ # responsible for extracting the session id from the session_id
110
104
  # attribute and manually encoding it in URLs and adding it as a hidden
111
105
  # input to HTML forms created by other mechanisms. Also, session expiry
112
106
  # is not automatically handled.
@@ -124,10 +118,10 @@ class CGI
124
118
  # session = CGI::Session.new(cgi,
125
119
  # 'database_manager' => CGI::Session::PStore, # use PStore
126
120
  # 'session_key' => '_rb_sess_id', # custom session key
127
- # 'session_expires' => Time.now + 30 * 60, # 30 minute timeout
121
+ # 'session_expires' => Time.now + 30 * 60, # 30 minute timeout
128
122
  # 'prefix' => 'pstore_sid_') # PStore option
129
123
  # if cgi.has_key?('user_name') and cgi['user_name'] != ''
130
- # # coerce to String: cgi[] returns the
124
+ # # coerce to String: cgi[] returns the
131
125
  # # string-like CGI::QueryExtension::Value
132
126
  # session['user_name'] = cgi['user_name'].to_s
133
127
  # elsif !session['user_name']
@@ -143,11 +137,11 @@ class CGI
143
137
  # cgi = CGI.new("html4")
144
138
  #
145
139
  # # We make sure to delete an old session if one exists,
146
- # # not just to free resources, but to prevent the session
140
+ # # not just to free resources, but to prevent the session
147
141
  # # from being maliciously hijacked later on.
148
142
  # begin
149
- # session = CGI::Session.new(cgi, 'new_session' => false)
150
- # session.delete
143
+ # session = CGI::Session.new(cgi, 'new_session' => false)
144
+ # session.delete
151
145
  # rescue ArgumentError # if no old session
152
146
  # end
153
147
  # session = CGI::Session.new(cgi, 'new_session' => true)
@@ -163,7 +157,7 @@ class CGI
163
157
 
164
158
  def Session::callback(dbman) #:nodoc:
165
159
  Proc.new{
166
- dbman[0].close unless dbman.empty?
160
+ dbman[0].close unless dbman.empty?
167
161
  }
168
162
  end
169
163
 
@@ -172,7 +166,7 @@ class CGI
172
166
  # The session id is an MD5 hash based upon the time,
173
167
  # a random number, and a constant string. This routine
174
168
  # is used internally for automatically generated
175
- # session ids.
169
+ # session ids.
176
170
  def create_new_id
177
171
  require 'securerandom'
178
172
  begin
@@ -205,7 +199,7 @@ class CGI
205
199
  # it is retrieved from the +session_key+ parameter
206
200
  # of the request, or automatically generated for
207
201
  # a new session.
208
- # new_session:: if true, force creation of a new session. If not set,
202
+ # new_session:: if true, force creation of a new session. If not set,
209
203
  # a new session is only created if none currently
210
204
  # exists. If false, a new session is never created,
211
205
  # and if none currently exists and the +session_id+
@@ -220,7 +214,7 @@ class CGI
220
214
  # The following options are also recognised, but only apply if the
221
215
  # session id is stored in a cookie.
222
216
  #
223
- # session_expires:: the time the current session expires, as a
217
+ # session_expires:: the time the current session expires, as a
224
218
  # +Time+ object. If not set, the session will terminate
225
219
  # when the user's browser is closed.
226
220
  # session_domain:: the hostname domain for which this session is valid.
@@ -232,10 +226,10 @@ class CGI
232
226
  # +option+ is also passed on to the session storage class initializer; see
233
227
  # the documentation for each session storage class for the options
234
228
  # they support.
235
- #
229
+ #
236
230
  # The retrieved or created session is automatically added to +request+
237
231
  # as a cookie, and also to its +output_hidden+ table, which is used
238
- # to add hidden input elements to forms.
232
+ # to add hidden input elements to forms.
239
233
  #
240
234
  # *WARNING* the +output_hidden+
241
235
  # fields are surrounded by a <fieldset> tag in HTML 4 generation, which
@@ -253,26 +247,26 @@ class CGI
253
247
  session_key = option['session_key'] || '_session_id'
254
248
  session_id = option['session_id']
255
249
  unless session_id
256
- if option['new_session']
257
- session_id = create_new_id
258
- @new_session = true
259
- end
250
+ if option['new_session']
251
+ session_id = create_new_id
252
+ @new_session = true
253
+ end
260
254
  end
261
255
  unless session_id
262
- if request.key?(session_key)
263
- session_id = request[session_key]
264
- session_id = session_id.read if session_id.respond_to?(:read)
265
- end
266
- unless session_id
267
- session_id, = request.cookies[session_key]
268
- end
269
- unless session_id
270
- unless option.fetch('new_session', true)
271
- raise ArgumentError, "session_key `%s' should be supplied"%session_key
272
- end
273
- session_id = create_new_id
274
- @new_session = true
275
- end
256
+ if request.key?(session_key)
257
+ session_id = request[session_key]
258
+ session_id = session_id.read if session_id.respond_to?(:read)
259
+ end
260
+ unless session_id
261
+ session_id, = request.cookies[session_key]
262
+ end
263
+ unless session_id
264
+ unless option.fetch('new_session', true)
265
+ raise ArgumentError, "session_key `%s' should be supplied"%session_key
266
+ end
267
+ session_id = create_new_id
268
+ @new_session = true
269
+ end
276
270
  end
277
271
  @session_id = session_id
278
272
  dbman = option['database_manager'] || FileStore
@@ -283,24 +277,25 @@ class CGI
283
277
  raise ArgumentError, "invalid session_id `%s'"%session_id
284
278
  end
285
279
  session_id = @session_id = create_new_id unless session_id
286
- @new_session = true
280
+ @new_session=true
287
281
  retry
288
282
  end
289
283
  request.instance_eval do
290
- @output_hidden = {session_key => session_id} unless option['no_hidden']
291
- @output_cookies = [
284
+ @output_hidden = {session_key => session_id} unless option['no_hidden']
285
+ @output_cookies = [
292
286
  Cookie::new("name" => session_key,
293
- "value" => session_id,
294
- "expires" => option['session_expires'],
295
- "domain" => option['session_domain'],
296
- "secure" => option['session_secure'],
297
- "path" => if option['session_path'] then
298
- option['session_path']
299
- elsif ENV["SCRIPT_NAME"] then
300
- File::dirname(ENV["SCRIPT_NAME"])
301
- else
302
- ""
303
- end)
287
+ "value" => session_id,
288
+ "expires" => option['session_expires'],
289
+ "domain" => option['session_domain'],
290
+ "secure" => option['session_secure'],
291
+ "path" =>
292
+ if option['session_path']
293
+ option['session_path']
294
+ elsif ENV["SCRIPT_NAME"]
295
+ File::dirname(ENV["SCRIPT_NAME"])
296
+ else
297
+ ""
298
+ end)
304
299
  ] unless option['no_cookies']
305
300
  end
306
301
  @dbprot = [@dbman]
@@ -313,7 +308,7 @@ class CGI
313
308
  @data[key]
314
309
  end
315
310
 
316
- # Set the session date for key +key+.
311
+ # Set the session data for key +key+.
317
312
  def []=(key, val)
318
313
  @write_lock ||= true
319
314
  @data ||= @dbman.restore
@@ -322,11 +317,11 @@ class CGI
322
317
 
323
318
  # Store session data on the server. For some session storage types,
324
319
  # this is a no-op.
325
- def update
320
+ def update
326
321
  @dbman.update
327
322
  end
328
323
 
329
- # Store session data on the server and close the session storage.
324
+ # Store session data on the server and close the session storage.
330
325
  # For some session storage types, this is a no-op.
331
326
  def close
332
327
  @dbman.close
@@ -358,7 +353,7 @@ class CGI
358
353
  # created. The session id must only contain alphanumeric
359
354
  # characters; automatically generated session ids observe
360
355
  # this requirement.
361
- #
356
+ #
362
357
  # +option+ is a hash of options for the initializer. The
363
358
  # following options are recognised:
364
359
  #
@@ -367,7 +362,7 @@ class CGI
367
362
  # on Unix systems).
368
363
  # prefix:: the prefix to add to the session id when generating
369
364
  # the filename for this session's FileStore file.
370
- # Defaults to the empty string.
365
+ # Defaults to "cgi_sid_".
371
366
  # suffix:: the prefix to add to the session id when generating
372
367
  # the filename for this session's FileStore file.
373
368
  # Defaults to the empty string.
@@ -375,56 +370,56 @@ class CGI
375
370
  # This session's FileStore file will be created if it does
376
371
  # not exist, or opened if it does.
377
372
  def initialize(session, option={})
378
- dir = option['tmpdir'] || Dir::tmpdir
379
- prefix = option['prefix'] || ''
380
- suffix = option['suffix'] || ''
381
- id = session.session_id
373
+ dir = option['tmpdir'] || Dir::tmpdir
374
+ prefix = option['prefix'] || 'cgi_sid_'
375
+ suffix = option['suffix'] || ''
376
+ id = session.session_id
382
377
  require 'digest/md5'
383
378
  md5 = Digest::MD5.hexdigest(id)[0,16]
384
- @path = dir+"/"+prefix+md5+suffix
385
- if File::exist? @path
386
- @hash = nil
387
- else
379
+ @path = dir+"/"+prefix+md5+suffix
380
+ if File::exist? @path
381
+ @hash = nil
382
+ else
388
383
  unless session.new_session
389
384
  raise CGI::Session::NoSession, "uninitialized session"
390
385
  end
391
- @hash = {}
392
- end
386
+ @hash = {}
387
+ end
393
388
  end
394
389
 
395
390
  # Restore session state from the session's FileStore file.
396
391
  #
397
392
  # Returns the session state as a hash.
398
393
  def restore
399
- unless @hash
400
- @hash = {}
394
+ unless @hash
395
+ @hash = {}
401
396
  begin
402
397
  lockf = File.open(@path+".lock", "r")
403
398
  lockf.flock File::LOCK_SH
404
- f = File.open(@path, 'r')
405
- for line in f
406
- line.chomp!
407
- k, v = line.split('=',2)
408
- @hash[CGI::unescape(k)] = CGI::unescape(v)
409
- end
399
+ f = File.open(@path, 'r')
400
+ for line in f
401
+ line.chomp!
402
+ k, v = line.split('=',2)
403
+ @hash[CGI::unescape(k)] = Marshal.restore(CGI::unescape(v))
404
+ end
410
405
  ensure
411
- f.close unless f.nil?
406
+ f.close unless f.nil?
412
407
  lockf.close if lockf
413
408
  end
414
- end
415
- @hash
409
+ end
410
+ @hash
416
411
  end
417
412
 
418
413
  # Save session state to the session's FileStore file.
419
414
  def update
420
- return unless @hash
415
+ return unless @hash
421
416
  begin
422
417
  lockf = File.open(@path+".lock", File::CREAT|File::RDWR, 0600)
423
- lockf.flock File::LOCK_EX
418
+ lockf.flock File::LOCK_EX
424
419
  f = File.open(@path+".new", File::CREAT|File::TRUNC|File::WRONLY, 0600)
425
- for k,v in @hash
426
- f.printf "%s=%s\n", CGI::escape(k), CGI::escape(String(v))
427
- end
420
+ for k,v in @hash
421
+ f.printf "%s=%s\n", CGI::escape(k), CGI::escape(String(Marshal.dump(v)))
422
+ end
428
423
  f.close
429
424
  File.rename @path+".new", @path
430
425
  ensure
@@ -435,22 +430,21 @@ class CGI
435
430
 
436
431
  # Update and close the session's FileStore file.
437
432
  def close
438
- update
433
+ update
439
434
  end
440
435
 
441
436
  # Close and delete the session's FileStore file.
442
437
  def delete
443
438
  File::unlink @path+".lock" rescue nil
444
439
  File::unlink @path+".new" rescue nil
445
- File::unlink @path
446
- rescue Errno::ENOENT
440
+ File::unlink @path rescue Errno::ENOENT
447
441
  end
448
442
  end
449
443
 
450
444
  # In-memory session storage class.
451
445
  #
452
446
  # Implements session storage as a global in-memory hash. Session
453
- # data will only persist for as long as the ruby interpreter
447
+ # data will only persist for as long as the ruby interpreter
454
448
  # instance does.
455
449
  class MemoryStore
456
450
  GLOBAL_HASH_TABLE = {} #:nodoc:
@@ -461,7 +455,7 @@ class CGI
461
455
  # +option+ is a list of initialisation options. None are
462
456
  # currently recognised.
463
457
  def initialize(session, option=nil)
464
- @session_id = session.session_id
458
+ @session_id = session.session_id
465
459
  unless GLOBAL_HASH_TABLE.key?(@session_id)
466
460
  unless session.new_session
467
461
  raise CGI::Session::NoSession, "uninitialized session"
@@ -474,26 +468,63 @@ class CGI
474
468
  #
475
469
  # Returns session data as a hash.
476
470
  def restore
477
- GLOBAL_HASH_TABLE[@session_id]
471
+ GLOBAL_HASH_TABLE[@session_id]
472
+ end
473
+
474
+ # Update session state.
475
+ #
476
+ # A no-op.
477
+ def update
478
+ # don't need to update; hash is shared
479
+ end
480
+
481
+ # Close session storage.
482
+ #
483
+ # A no-op.
484
+ def close
485
+ # don't need to close
486
+ end
487
+
488
+ # Delete the session state.
489
+ def delete
490
+ GLOBAL_HASH_TABLE.delete(@session_id)
491
+ end
492
+ end
493
+
494
+ # Dummy session storage class.
495
+ #
496
+ # Implements session storage place holder. No actual storage
497
+ # will be done.
498
+ class NullStore
499
+ # Create a new NullStore instance.
500
+ #
501
+ # +session+ is the session this instance is associated with.
502
+ # +option+ is a list of initialisation options. None are
503
+ # currently recognised.
504
+ def initialize(session, option=nil)
505
+ end
506
+
507
+ # Restore (empty) session state.
508
+ def restore
509
+ {}
478
510
  end
479
511
 
480
512
  # Update session state.
481
513
  #
482
514
  # A no-op.
483
515
  def update
484
- # don't need to update; hash is shared
485
516
  end
486
517
 
487
518
  # Close session storage.
488
519
  #
489
520
  # A no-op.
490
521
  def close
491
- # don't need to close
492
522
  end
493
523
 
494
524
  # Delete the session state.
525
+ #
526
+ # A no-op.
495
527
  def delete
496
- GLOBAL_HASH_TABLE.delete(@session_id)
497
528
  end
498
529
  end
499
530
  end
@@ -1,7 +1,7 @@
1
1
  module RubySL
2
2
  module CGI
3
3
  module Session
4
- VERSION = "1.0.0"
4
+ VERSION = "2.0.0"
5
5
  end
6
6
  end
7
7
  end
@@ -19,5 +19,4 @@ Gem::Specification.new do |spec|
19
19
  spec.add_development_dependency "bundler", "~> 1.3"
20
20
  spec.add_development_dependency "rake", "~> 10.0"
21
21
  spec.add_development_dependency "mspec", "~> 1.5"
22
- spec.add_development_dependency "rubysl-prettyprint", "~> 1.0"
23
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubysl-cgi-session
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Shirai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-25 00:00:00.000000000 Z
11
+ date: 2013-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.5'
55
- - !ruby/object:Gem::Dependency
56
- name: rubysl-prettyprint
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: '1.0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ~>
67
- - !ruby/object:Gem::Version
68
- version: '1.0'
69
55
  description: Ruby standard library cgi-session.
70
56
  email:
71
57
  - brixen@gmail.com