juno 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. data/.travis.yml +5 -1
  2. data/Gemfile +27 -21
  3. data/README.md +41 -2
  4. data/Rakefile +3 -3
  5. data/juno.gemspec +12 -12
  6. data/lib/juno.rb +4 -4
  7. data/lib/juno/adapters/couch.rb +1 -1
  8. data/lib/juno/adapters/datamapper.rb +1 -1
  9. data/lib/juno/adapters/dbm.rb +1 -1
  10. data/lib/juno/adapters/file.rb +1 -1
  11. data/lib/juno/adapters/fog.rb +1 -1
  12. data/lib/juno/adapters/gdbm.rb +1 -1
  13. data/lib/juno/adapters/localmemcache.rb +1 -1
  14. data/lib/juno/adapters/pstore.rb +1 -1
  15. data/lib/juno/adapters/redis.rb +3 -2
  16. data/lib/juno/adapters/sdbm.rb +1 -1
  17. data/lib/juno/adapters/sequel.rb +1 -1
  18. data/lib/juno/adapters/sqlite.rb +1 -1
  19. data/lib/juno/adapters/tokyocabinet.rb +1 -1
  20. data/lib/juno/builder.rb +10 -0
  21. data/lib/juno/cache.rb +1 -0
  22. data/lib/juno/expires.rb +1 -1
  23. data/lib/juno/proxy.rb +2 -0
  24. data/lib/juno/stack.rb +1 -0
  25. data/lib/juno/transformer.rb +34 -18
  26. data/lib/juno/version.rb +1 -1
  27. data/lib/rack/cache/juno.rb +93 -0
  28. data/lib/rack/session/juno.rb +63 -0
  29. data/spec/generate.rb +41 -2
  30. data/spec/{adapter_activerecord_spec.rb → juno/adapter_activerecord_spec.rb} +0 -0
  31. data/spec/{adapter_cassandra_spec.rb → juno/adapter_cassandra_spec.rb} +0 -0
  32. data/spec/{adapter_couch_spec.rb → juno/adapter_couch_spec.rb} +0 -0
  33. data/spec/{adapter_datamapper_spec.rb → juno/adapter_datamapper_spec.rb} +0 -0
  34. data/spec/{adapter_dbm_spec.rb → juno/adapter_dbm_spec.rb} +0 -0
  35. data/spec/{adapter_file_spec.rb → juno/adapter_file_spec.rb} +0 -0
  36. data/spec/{adapter_fog_spec.rb → juno/adapter_fog_spec.rb} +0 -0
  37. data/spec/{adapter_gdbm_spec.rb → juno/adapter_gdbm_spec.rb} +0 -0
  38. data/spec/{adapter_localmemcache_spec.rb → juno/adapter_localmemcache_spec.rb} +0 -0
  39. data/spec/{adapter_lruhash_spec.rb → juno/adapter_lruhash_spec.rb} +0 -0
  40. data/spec/{adapter_memcached_dalli_spec.rb → juno/adapter_memcached_dalli_spec.rb} +0 -0
  41. data/spec/{adapter_memcached_native_spec.rb → juno/adapter_memcached_native_spec.rb} +0 -0
  42. data/spec/{adapter_memcached_spec.rb → juno/adapter_memcached_spec.rb} +0 -0
  43. data/spec/{adapter_memory_spec.rb → juno/adapter_memory_spec.rb} +0 -0
  44. data/spec/{adapter_mongo_spec.rb → juno/adapter_mongo_spec.rb} +0 -0
  45. data/spec/{adapter_pstore_spec.rb → juno/adapter_pstore_spec.rb} +0 -0
  46. data/spec/{adapter_redis_spec.rb → juno/adapter_redis_spec.rb} +0 -0
  47. data/spec/{adapter_riak_spec.rb → juno/adapter_riak_spec.rb} +0 -0
  48. data/spec/{adapter_sdbm_spec.rb → juno/adapter_sdbm_spec.rb} +0 -0
  49. data/spec/{adapter_sequel_spec.rb → juno/adapter_sequel_spec.rb} +0 -0
  50. data/spec/{adapter_sqlite_spec.rb → juno/adapter_sqlite_spec.rb} +0 -0
  51. data/spec/{adapter_tokyocabinet_bdb_spec.rb → juno/adapter_tokyocabinet_bdb_spec.rb} +0 -0
  52. data/spec/{adapter_tokyocabinet_hdb_spec.rb → juno/adapter_tokyocabinet_hdb_spec.rb} +0 -0
  53. data/spec/{adapter_yaml_spec.rb → juno/adapter_yaml_spec.rb} +0 -0
  54. data/spec/{cache_file_memory_spec.rb → juno/cache_file_memory_spec.rb} +0 -0
  55. data/spec/{cache_memory_null_spec.rb → juno/cache_memory_null_spec.rb} +0 -0
  56. data/spec/{expires_file_spec.rb → juno/expires_file_spec.rb} +0 -0
  57. data/spec/{expires_memory_spec.rb → juno/expires_memory_spec.rb} +0 -0
  58. data/spec/{lock_spec.rb → juno/lock_spec.rb} +0 -0
  59. data/spec/{null_adapter_spec.rb → juno/null_adapter_spec.rb} +0 -0
  60. data/spec/{proxy_expires_memory_spec.rb → juno/proxy_expires_memory_spec.rb} +0 -0
  61. data/spec/{proxy_redis_spec.rb → juno/proxy_redis_spec.rb} +0 -0
  62. data/spec/{simple_activerecord_spec.rb → juno/simple_activerecord_spec.rb} +0 -0
  63. data/spec/{simple_activerecord_with_expires_spec.rb → juno/simple_activerecord_with_expires_spec.rb} +0 -0
  64. data/spec/{simple_cassandra_spec.rb → juno/simple_cassandra_spec.rb} +0 -0
  65. data/spec/{simple_couch_spec.rb → juno/simple_couch_spec.rb} +0 -0
  66. data/spec/{simple_couch_with_expires_spec.rb → juno/simple_couch_with_expires_spec.rb} +0 -0
  67. data/spec/{simple_datamapper_spec.rb → juno/simple_datamapper_spec.rb} +0 -0
  68. data/spec/{simple_datamapper_with_expires_spec.rb → juno/simple_datamapper_with_expires_spec.rb} +0 -0
  69. data/spec/{simple_datamapper_with_repository_spec.rb → juno/simple_datamapper_with_repository_spec.rb} +0 -0
  70. data/spec/{simple_dbm_spec.rb → juno/simple_dbm_spec.rb} +0 -0
  71. data/spec/{simple_dbm_with_expires_spec.rb → juno/simple_dbm_with_expires_spec.rb} +0 -0
  72. data/spec/{simple_file_spec.rb → juno/simple_file_spec.rb} +0 -0
  73. data/spec/{simple_file_with_expires_spec.rb → juno/simple_file_with_expires_spec.rb} +0 -0
  74. data/spec/{simple_fog_spec.rb → juno/simple_fog_spec.rb} +0 -0
  75. data/spec/{simple_fog_with_expires_spec.rb → juno/simple_fog_with_expires_spec.rb} +0 -0
  76. data/spec/{simple_gdbm_spec.rb → juno/simple_gdbm_spec.rb} +0 -0
  77. data/spec/{simple_gdbm_with_expires_spec.rb → juno/simple_gdbm_with_expires_spec.rb} +0 -0
  78. data/spec/{simple_hashfile_spec.rb → juno/simple_hashfile_spec.rb} +0 -0
  79. data/spec/{simple_hashfile_with_expires_spec.rb → juno/simple_hashfile_with_expires_spec.rb} +0 -0
  80. data/spec/{simple_localmemcache_spec.rb → juno/simple_localmemcache_spec.rb} +0 -0
  81. data/spec/{simple_localmemcache_with_expires_spec.rb → juno/simple_localmemcache_with_expires_spec.rb} +0 -0
  82. data/spec/{simple_lruhash_spec.rb → juno/simple_lruhash_spec.rb} +0 -0
  83. data/spec/{simple_lruhash_with_expires_spec.rb → juno/simple_lruhash_with_expires_spec.rb} +0 -0
  84. data/spec/{simple_memcached_dalli_spec.rb → juno/simple_memcached_dalli_spec.rb} +0 -0
  85. data/spec/{simple_memcached_native_spec.rb → juno/simple_memcached_native_spec.rb} +0 -0
  86. data/spec/{simple_memcached_spec.rb → juno/simple_memcached_spec.rb} +0 -0
  87. data/spec/{simple_memory_spec.rb → juno/simple_memory_spec.rb} +0 -0
  88. data/spec/{simple_memory_with_expires_spec.rb → juno/simple_memory_with_expires_spec.rb} +0 -0
  89. data/spec/{simple_mongo_spec.rb → juno/simple_mongo_spec.rb} +0 -0
  90. data/spec/{simple_mongo_with_expires_spec.rb → juno/simple_mongo_with_expires_spec.rb} +0 -0
  91. data/spec/{simple_null_spec.rb → juno/simple_null_spec.rb} +0 -0
  92. data/spec/{simple_pstore_spec.rb → juno/simple_pstore_spec.rb} +0 -0
  93. data/spec/{simple_pstore_with_expires_spec.rb → juno/simple_pstore_with_expires_spec.rb} +0 -0
  94. data/spec/{simple_redis_spec.rb → juno/simple_redis_spec.rb} +0 -0
  95. data/spec/{simple_riak_spec.rb → juno/simple_riak_spec.rb} +0 -0
  96. data/spec/{simple_riak_with_expires_spec.rb → juno/simple_riak_with_expires_spec.rb} +0 -0
  97. data/spec/{simple_sdbm_spec.rb → juno/simple_sdbm_spec.rb} +0 -0
  98. data/spec/{simple_sdbm_with_expires_spec.rb → juno/simple_sdbm_with_expires_spec.rb} +0 -0
  99. data/spec/{simple_sequel_spec.rb → juno/simple_sequel_spec.rb} +0 -0
  100. data/spec/{simple_sequel_with_expires_spec.rb → juno/simple_sequel_with_expires_spec.rb} +0 -0
  101. data/spec/{simple_sqlite_spec.rb → juno/simple_sqlite_spec.rb} +0 -0
  102. data/spec/{simple_sqlite_with_expires_spec.rb → juno/simple_sqlite_with_expires_spec.rb} +0 -0
  103. data/spec/{simple_tokyocabinet_spec.rb → juno/simple_tokyocabinet_spec.rb} +0 -0
  104. data/spec/{simple_tokyocabinet_with_expires_spec.rb → juno/simple_tokyocabinet_with_expires_spec.rb} +0 -0
  105. data/spec/{simple_yaml_spec.rb → juno/simple_yaml_spec.rb} +0 -0
  106. data/spec/{simple_yaml_with_expires_spec.rb → juno/simple_yaml_with_expires_spec.rb} +0 -0
  107. data/spec/{stack_file_memory_spec.rb → juno/stack_file_memory_spec.rb} +0 -0
  108. data/spec/{stack_memory_file_spec.rb → juno/stack_memory_file_spec.rb} +0 -0
  109. data/spec/{transformer_bencode_spec.rb → juno/transformer_bencode_spec.rb} +0 -0
  110. data/spec/{transformer_bert_spec.rb → juno/transformer_bert_spec.rb} +0 -0
  111. data/spec/{transformer_bson_spec.rb → juno/transformer_bson_spec.rb} +0 -0
  112. data/spec/{transformer_compress_spec.rb → juno/transformer_compress_spec.rb} +0 -0
  113. data/spec/{transformer_json_spec.rb → juno/transformer_json_spec.rb} +0 -0
  114. data/spec/juno/transformer_lzma_spec.rb +22 -0
  115. data/spec/juno/transformer_lzo_spec.rb +22 -0
  116. data/spec/{transformer_marshal_base64_spec.rb → juno/transformer_marshal_base64_spec.rb} +0 -0
  117. data/spec/{transformer_marshal_escape_spec.rb → juno/transformer_marshal_escape_spec.rb} +0 -0
  118. data/spec/{transformer_marshal_md5_spec.rb → juno/transformer_marshal_md5_spec.rb} +0 -0
  119. data/spec/{transformer_marshal_md5_spread_spec.rb → juno/transformer_marshal_md5_spread_spec.rb} +0 -0
  120. data/spec/juno/transformer_marshal_prefix_spec.rb +41 -0
  121. data/spec/{transformer_marshal_uuencode_spec.rb → juno/transformer_marshal_uuencode_spec.rb} +0 -0
  122. data/spec/{transformer_msgpack_spec.rb → juno/transformer_msgpack_spec.rb} +0 -0
  123. data/spec/{transformer_ox_spec.rb → juno/transformer_ox_spec.rb} +0 -0
  124. data/spec/juno/transformer_quicklz_spec.rb +22 -0
  125. data/spec/juno/transformer_snappy_spec.rb +22 -0
  126. data/spec/{transformer_tnet_spec.rb → juno/transformer_tnet_spec.rb} +0 -0
  127. data/spec/{transformer_yaml_spec.rb → juno/transformer_yaml_spec.rb} +0 -0
  128. data/spec/rack/cache_juno_spec.rb +355 -0
  129. data/spec/rack/session_juno_spec.rb +305 -0
  130. metadata +206 -190
@@ -0,0 +1,305 @@
1
+ require 'rack/session/juno'
2
+ require 'rack/lint'
3
+ require 'rack/mock'
4
+ require 'thread'
5
+
6
+ describe Rack::Session::Juno do
7
+ session_key = Rack::Session::Juno::DEFAULT_OPTIONS[:key]
8
+ session_match = /#{session_key}=([0-9a-fA-F]+);/
9
+ incrementor = lambda do |env|
10
+ env["rack.session"]["counter"] ||= 0
11
+ env["rack.session"]["counter"] += 1
12
+ Rack::Response.new(env["rack.session"].inspect).to_a
13
+ end
14
+ drop_session = Rack::Lint.new(proc do |env|
15
+ env['rack.session.options'][:drop] = true
16
+ incrementor.call(env)
17
+ end)
18
+ renew_session = Rack::Lint.new(proc do |env|
19
+ env['rack.session.options'][:renew] = true
20
+ incrementor.call(env)
21
+ end)
22
+ defer_session = Rack::Lint.new(proc do |env|
23
+ env['rack.session.options'][:defer] = true
24
+ incrementor.call(env)
25
+ end)
26
+ skip_session = Rack::Lint.new(proc do |env|
27
+ env['rack.session.options'][:skip] = true
28
+ incrementor.call(env)
29
+ end)
30
+ incrementor = Rack::Lint.new(incrementor)
31
+
32
+ it 'supports different constructors' do
33
+ Rack::Session::Juno.new(incrementor, :store => :Memory)
34
+ Rack::Session::Juno.new(incrementor, :store => Juno.new(:Memory, :expires => true))
35
+ Rack::Session::Juno.new(incrementor) do
36
+ use :Expires
37
+ adapter :Memory
38
+ end
39
+ end
40
+
41
+ it "creates a new cookie" do
42
+ pool = Rack::Session::Juno.new(incrementor, :store => :Memory)
43
+ res = Rack::MockRequest.new(pool).get("/")
44
+ res["Set-Cookie"].should include("#{session_key}=")
45
+ res.body.should == '{"counter"=>1}'
46
+ end
47
+
48
+ it "determines session from a cookie" do
49
+ pool = Rack::Session::Juno.new(incrementor, :store => :Memory)
50
+ req = Rack::MockRequest.new(pool)
51
+ res = req.get("/")
52
+ cookie = res["Set-Cookie"]
53
+ req.get("/", "HTTP_COOKIE" => cookie).
54
+ body.should == '{"counter"=>2}'
55
+ req.get("/", "HTTP_COOKIE" => cookie).
56
+ body.should == '{"counter"=>3}'
57
+ end
58
+
59
+ it "determines session only from a cookie by default" do
60
+ pool = Rack::Session::Juno.new(incrementor, :store => :Memory)
61
+ req = Rack::MockRequest.new(pool)
62
+ res = req.get("/")
63
+ sid = res["Set-Cookie"][session_match, 1]
64
+ req.get("/?rack.session=#{sid}").
65
+ body.should == '{"counter"=>1}'
66
+ req.get("/?rack.session=#{sid}").
67
+ body.should == '{"counter"=>1}'
68
+ end
69
+
70
+ it "determines session from params" do
71
+ pool = Rack::Session::Juno.new(incrementor, :cookie_only => false, :store => :Memory)
72
+ req = Rack::MockRequest.new(pool)
73
+ res = req.get("/")
74
+ sid = res["Set-Cookie"][session_match, 1]
75
+ req.get("/?rack.session=#{sid}").
76
+ body.should == '{"counter"=>2}'
77
+ req.get("/?rack.session=#{sid}").
78
+ body.should == '{"counter"=>3}'
79
+ end
80
+
81
+ it "survives nonexistant cookies" do
82
+ bad_cookie = "rack.session=blarghfasel"
83
+ pool = Rack::Session::Juno.new(incrementor, :store => :Memory)
84
+ res = Rack::MockRequest.new(pool).
85
+ get("/", "HTTP_COOKIE" => bad_cookie)
86
+ res.body.should == '{"counter"=>1}'
87
+ cookie = res["Set-Cookie"][session_match]
88
+ cookie.should_not match(/#{bad_cookie}/)
89
+ end
90
+
91
+ it "maintains freshness" do
92
+ pool = Rack::Session::Juno.new(incrementor, :expire_after => 3, :store => :Memory)
93
+ res = Rack::MockRequest.new(pool).get('/')
94
+ res.body.should include '"counter"=>1'
95
+ cookie = res["Set-Cookie"]
96
+ res = Rack::MockRequest.new(pool).get('/', "HTTP_COOKIE" => cookie)
97
+ res["Set-Cookie"].should == cookie
98
+ res.body.should include '"counter"=>2'
99
+ puts 'Sleeping to expire session' if $DEBUG
100
+ sleep 4
101
+ res = Rack::MockRequest.new(pool).get('/', "HTTP_COOKIE" => cookie)
102
+ res["Set-Cookie"].should_not == cookie
103
+ res.body.should include '"counter"=>1'
104
+ end
105
+
106
+ it "does not send the same session id if it did not change" do
107
+ pool = Rack::Session::Juno.new(incrementor, :store => :Memory)
108
+ req = Rack::MockRequest.new(pool)
109
+
110
+ res0 = req.get("/")
111
+ cookie = res0["Set-Cookie"][session_match]
112
+ res0.body.should == '{"counter"=>1}'
113
+
114
+ res1 = req.get("/", "HTTP_COOKIE" => cookie)
115
+ res1["Set-Cookie"].should be_nil
116
+ res1.body.should == '{"counter"=>2}'
117
+
118
+ res2 = req.get("/", "HTTP_COOKIE" => cookie)
119
+ res2["Set-Cookie"].should be_nil
120
+ res2.body.should == '{"counter"=>3}'
121
+ end
122
+
123
+ it "deletes cookies with :drop option" do
124
+ pool = Rack::Session::Juno.new(incrementor, :store => :Memory)
125
+ req = Rack::MockRequest.new(pool)
126
+ drop = Rack::Utils::Context.new(pool, drop_session)
127
+ dreq = Rack::MockRequest.new(drop)
128
+
129
+ res1 = req.get("/")
130
+ session = (cookie = res1["Set-Cookie"])[session_match]
131
+ res1.body.should == '{"counter"=>1}'
132
+
133
+ res2 = dreq.get("/", "HTTP_COOKIE" => cookie)
134
+ res2["Set-Cookie"].should == nil
135
+ res2.body.should == '{"counter"=>2}'
136
+
137
+ res3 = req.get("/", "HTTP_COOKIE" => cookie)
138
+ res3["Set-Cookie"][session_match].should_not == session
139
+ res3.body.should == '{"counter"=>1}'
140
+ end
141
+
142
+ it "provides new session id with :renew option" do
143
+ pool = Rack::Session::Juno.new(incrementor, :store => :Memory)
144
+ req = Rack::MockRequest.new(pool)
145
+ renew = Rack::Utils::Context.new(pool, renew_session)
146
+ rreq = Rack::MockRequest.new(renew)
147
+
148
+ res1 = req.get("/")
149
+ session = (cookie = res1["Set-Cookie"])[session_match]
150
+ res1.body.should == '{"counter"=>1}'
151
+
152
+ res2 = rreq.get("/", "HTTP_COOKIE" => cookie)
153
+ new_cookie = res2["Set-Cookie"]
154
+ new_session = new_cookie[session_match]
155
+ new_session.should_not == session
156
+ res2.body.should == '{"counter"=>2}'
157
+
158
+ res3 = req.get("/", "HTTP_COOKIE" => new_cookie)
159
+ res3.body.should == '{"counter"=>3}'
160
+
161
+ # Old cookie was deleted
162
+ res4 = req.get("/", "HTTP_COOKIE" => cookie)
163
+ res4.body.should == '{"counter"=>1}'
164
+ end
165
+
166
+ it "omits cookie with :defer option but still updates the state" do
167
+ pool = Rack::Session::Juno.new(incrementor, :store => :Memory)
168
+ count = Rack::Utils::Context.new(pool, incrementor)
169
+ defer = Rack::Utils::Context.new(pool, defer_session)
170
+ dreq = Rack::MockRequest.new(defer)
171
+ creq = Rack::MockRequest.new(count)
172
+
173
+ res0 = dreq.get("/")
174
+ res0["Set-Cookie"].should == nil
175
+ res0.body.should == '{"counter"=>1}'
176
+
177
+ res0 = creq.get("/")
178
+ res1 = dreq.get("/", "HTTP_COOKIE" => res0["Set-Cookie"])
179
+ res1.body.should == '{"counter"=>2}'
180
+ res2 = dreq.get("/", "HTTP_COOKIE" => res0["Set-Cookie"])
181
+ res2.body.should == '{"counter"=>3}'
182
+ end
183
+
184
+ it "omits cookie and state update with :skip option" do
185
+ pool = Rack::Session::Juno.new(incrementor, :store => :Memory)
186
+ count = Rack::Utils::Context.new(pool, incrementor)
187
+ skip = Rack::Utils::Context.new(pool, skip_session)
188
+ sreq = Rack::MockRequest.new(skip)
189
+ creq = Rack::MockRequest.new(count)
190
+
191
+ res0 = sreq.get("/")
192
+ res0["Set-Cookie"].should == nil
193
+ res0.body.should == '{"counter"=>1}'
194
+
195
+ res0 = creq.get("/")
196
+ res1 = sreq.get("/", "HTTP_COOKIE" => res0["Set-Cookie"])
197
+ res1.body.should == '{"counter"=>2}'
198
+ res2 = sreq.get("/", "HTTP_COOKIE" => res0["Set-Cookie"])
199
+ res2.body.should == '{"counter"=>2}'
200
+ end
201
+
202
+ it "updates deep hashes correctly" do
203
+ hash_check = proc do |env|
204
+ session = env['rack.session']
205
+ unless session.include? 'test'
206
+ session.update :a => :b, :c => { :d => :e },
207
+ :f => { :g => { :h => :i} }, 'test' => true
208
+ else
209
+ session[:f][:g][:h] = :j
210
+ end
211
+ [200, {}, [session.inspect]]
212
+ end
213
+ pool = Rack::Session::Juno.new(hash_check, :store => :Memory)
214
+ req = Rack::MockRequest.new(pool)
215
+
216
+ res0 = req.get("/")
217
+ session_id = (cookie = res0["Set-Cookie"])[session_match, 1]
218
+ ses0 = pool.pool[session_id]
219
+
220
+ req.get("/", "HTTP_COOKIE" => cookie)
221
+ ses1 = pool.pool[session_id]
222
+
223
+ ses1.should_not == ses0
224
+ end
225
+
226
+ # anyone know how to do this better?
227
+ it "cleanly merges sessions when multithreaded" do
228
+ unless $DEBUG
229
+ 1.should == 1 # fake assertion to appease the mighty bacon
230
+ next
231
+ end
232
+ warn 'Running multithread test for Session::Memcache'
233
+ pool = Rack::Session::Juno.new(incrementor, :store => :Memory)
234
+ req = Rack::MockRequest.new(pool)
235
+
236
+ res = req.get('/')
237
+ res.body.should == '{"counter"=>1}'
238
+ cookie = res["Set-Cookie"]
239
+ session_id = cookie[session_match, 1]
240
+
241
+ delta_incrementor = lambda do |env|
242
+ # emulate disconjoinment of threading
243
+ env['rack.session'] = env['rack.session'].dup
244
+ Thread.stop
245
+ env['rack.session'][(Time.now.usec*rand).to_i] = true
246
+ incrementor.call(env)
247
+ end
248
+ tses = Rack::Utils::Context.new pool, delta_incrementor
249
+ treq = Rack::MockRequest.new(tses)
250
+ tnum = rand(7).to_i+5
251
+ r = Array.new(tnum) do
252
+ Thread.new(treq) do |run|
253
+ run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true)
254
+ end
255
+ end.reverse.map{|t| t.run.join.value }
256
+ r.each do |request|
257
+ request['Set-Cookie'].should == cookie
258
+ request.body.should include '"counter"=>2'
259
+ end
260
+
261
+ session = pool.pool[session_id]
262
+ session.size.should == tnum+1 # counter
263
+ session['counter'].should == 2 # meeeh
264
+
265
+ tnum = rand(7).to_i+5
266
+ r = Array.new(tnum) do |i|
267
+ app = Rack::Utils::Context.new pool, time_delta
268
+ req = Rack::MockRequest.new app
269
+ Thread.new(req) do |run|
270
+ run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true)
271
+ end
272
+ end.reverse.map{|t| t.run.join.value }
273
+ r.each do |request|
274
+ request['Set-Cookie'].should == cookie
275
+ request.body.should include '"counter"=>3'
276
+ end
277
+
278
+ session = pool.pool[session_id]
279
+ session.size.should.be tnum+1
280
+ session['counter'].should.be 3
281
+
282
+ drop_counter = proc do |env|
283
+ env['rack.session'].delete 'counter'
284
+ env['rack.session']['foo'] = 'bar'
285
+ [200, {'Content-Type'=>'text/plain'}, env['rack.session'].inspect]
286
+ end
287
+ tses = Rack::Utils::Context.new pool, drop_counter
288
+ treq = Rack::MockRequest.new(tses)
289
+ tnum = rand(7).to_i+5
290
+ r = Array.new(tnum) do
291
+ Thread.new(treq) do |run|
292
+ run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true)
293
+ end
294
+ end.reverse.map{|t| t.run.join.value }
295
+ r.each do |request|
296
+ request['Set-Cookie'].should == cookie
297
+ request.body.should include '"foo"=>"bar"'
298
+ end
299
+
300
+ session = pool.pool[session_id]
301
+ session.size.should.be r.size+1
302
+ session['counter'].should.be.nil?
303
+ session['foo'].should == 'bar'
304
+ end
305
+ end
metadata CHANGED
@@ -1,23 +1,23 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: juno
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
+ - Daniel Mendler
8
9
  - Yehuda Katz
9
10
  - Derek Kastner
10
- - Daniel Mendler
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-12-08 00:00:00.000000000 Z
14
+ date: 2012-12-10 00:00:00.000000000 Z
15
15
  dependencies: []
16
16
  description: A unified interface to key/value stores (moneta replacement)
17
17
  email:
18
+ - mail@daniel-mendler.de
18
19
  - wycats@gmail.com
19
20
  - dkastner@gmail.com
20
- - mail@daniel-mendler.de
21
21
  executables: []
22
22
  extensions: []
23
23
  extra_rdoc_files:
@@ -69,102 +69,111 @@ files:
69
69
  - lib/juno/stack.rb
70
70
  - lib/juno/transformer.rb
71
71
  - lib/juno/version.rb
72
- - spec/adapter_activerecord_spec.rb
73
- - spec/adapter_cassandra_spec.rb
74
- - spec/adapter_couch_spec.rb
75
- - spec/adapter_datamapper_spec.rb
76
- - spec/adapter_dbm_spec.rb
77
- - spec/adapter_file_spec.rb
78
- - spec/adapter_fog_spec.rb
79
- - spec/adapter_gdbm_spec.rb
80
- - spec/adapter_localmemcache_spec.rb
81
- - spec/adapter_lruhash_spec.rb
82
- - spec/adapter_memcached_dalli_spec.rb
83
- - spec/adapter_memcached_native_spec.rb
84
- - spec/adapter_memcached_spec.rb
85
- - spec/adapter_memory_spec.rb
86
- - spec/adapter_mongo_spec.rb
87
- - spec/adapter_pstore_spec.rb
88
- - spec/adapter_redis_spec.rb
89
- - spec/adapter_riak_spec.rb
90
- - spec/adapter_sdbm_spec.rb
91
- - spec/adapter_sequel_spec.rb
92
- - spec/adapter_sqlite_spec.rb
93
- - spec/adapter_tokyocabinet_bdb_spec.rb
94
- - spec/adapter_tokyocabinet_hdb_spec.rb
95
- - spec/adapter_yaml_spec.rb
96
- - spec/cache_file_memory_spec.rb
97
- - spec/cache_memory_null_spec.rb
98
- - spec/expires_file_spec.rb
99
- - spec/expires_memory_spec.rb
72
+ - lib/rack/cache/juno.rb
73
+ - lib/rack/session/juno.rb
100
74
  - spec/generate.rb
101
75
  - spec/helper.rb
76
+ - spec/juno/adapter_activerecord_spec.rb
77
+ - spec/juno/adapter_cassandra_spec.rb
78
+ - spec/juno/adapter_couch_spec.rb
79
+ - spec/juno/adapter_datamapper_spec.rb
80
+ - spec/juno/adapter_dbm_spec.rb
81
+ - spec/juno/adapter_file_spec.rb
82
+ - spec/juno/adapter_fog_spec.rb
83
+ - spec/juno/adapter_gdbm_spec.rb
84
+ - spec/juno/adapter_localmemcache_spec.rb
85
+ - spec/juno/adapter_lruhash_spec.rb
86
+ - spec/juno/adapter_memcached_dalli_spec.rb
87
+ - spec/juno/adapter_memcached_native_spec.rb
88
+ - spec/juno/adapter_memcached_spec.rb
89
+ - spec/juno/adapter_memory_spec.rb
90
+ - spec/juno/adapter_mongo_spec.rb
91
+ - spec/juno/adapter_pstore_spec.rb
92
+ - spec/juno/adapter_redis_spec.rb
93
+ - spec/juno/adapter_riak_spec.rb
94
+ - spec/juno/adapter_sdbm_spec.rb
95
+ - spec/juno/adapter_sequel_spec.rb
96
+ - spec/juno/adapter_sqlite_spec.rb
97
+ - spec/juno/adapter_tokyocabinet_bdb_spec.rb
98
+ - spec/juno/adapter_tokyocabinet_hdb_spec.rb
99
+ - spec/juno/adapter_yaml_spec.rb
100
+ - spec/juno/cache_file_memory_spec.rb
101
+ - spec/juno/cache_memory_null_spec.rb
102
+ - spec/juno/expires_file_spec.rb
103
+ - spec/juno/expires_memory_spec.rb
104
+ - spec/juno/lock_spec.rb
105
+ - spec/juno/null_adapter_spec.rb
106
+ - spec/juno/proxy_expires_memory_spec.rb
107
+ - spec/juno/proxy_redis_spec.rb
108
+ - spec/juno/simple_activerecord_spec.rb
109
+ - spec/juno/simple_activerecord_with_expires_spec.rb
110
+ - spec/juno/simple_cassandra_spec.rb
111
+ - spec/juno/simple_couch_spec.rb
112
+ - spec/juno/simple_couch_with_expires_spec.rb
113
+ - spec/juno/simple_datamapper_spec.rb
114
+ - spec/juno/simple_datamapper_with_expires_spec.rb
115
+ - spec/juno/simple_datamapper_with_repository_spec.rb
116
+ - spec/juno/simple_dbm_spec.rb
117
+ - spec/juno/simple_dbm_with_expires_spec.rb
118
+ - spec/juno/simple_file_spec.rb
119
+ - spec/juno/simple_file_with_expires_spec.rb
120
+ - spec/juno/simple_fog_spec.rb
121
+ - spec/juno/simple_fog_with_expires_spec.rb
122
+ - spec/juno/simple_gdbm_spec.rb
123
+ - spec/juno/simple_gdbm_with_expires_spec.rb
124
+ - spec/juno/simple_hashfile_spec.rb
125
+ - spec/juno/simple_hashfile_with_expires_spec.rb
126
+ - spec/juno/simple_localmemcache_spec.rb
127
+ - spec/juno/simple_localmemcache_with_expires_spec.rb
128
+ - spec/juno/simple_lruhash_spec.rb
129
+ - spec/juno/simple_lruhash_with_expires_spec.rb
130
+ - spec/juno/simple_memcached_dalli_spec.rb
131
+ - spec/juno/simple_memcached_native_spec.rb
132
+ - spec/juno/simple_memcached_spec.rb
133
+ - spec/juno/simple_memory_spec.rb
134
+ - spec/juno/simple_memory_with_expires_spec.rb
135
+ - spec/juno/simple_mongo_spec.rb
136
+ - spec/juno/simple_mongo_with_expires_spec.rb
137
+ - spec/juno/simple_null_spec.rb
138
+ - spec/juno/simple_pstore_spec.rb
139
+ - spec/juno/simple_pstore_with_expires_spec.rb
140
+ - spec/juno/simple_redis_spec.rb
141
+ - spec/juno/simple_riak_spec.rb
142
+ - spec/juno/simple_riak_with_expires_spec.rb
143
+ - spec/juno/simple_sdbm_spec.rb
144
+ - spec/juno/simple_sdbm_with_expires_spec.rb
145
+ - spec/juno/simple_sequel_spec.rb
146
+ - spec/juno/simple_sequel_with_expires_spec.rb
147
+ - spec/juno/simple_sqlite_spec.rb
148
+ - spec/juno/simple_sqlite_with_expires_spec.rb
149
+ - spec/juno/simple_tokyocabinet_spec.rb
150
+ - spec/juno/simple_tokyocabinet_with_expires_spec.rb
151
+ - spec/juno/simple_yaml_spec.rb
152
+ - spec/juno/simple_yaml_with_expires_spec.rb
153
+ - spec/juno/stack_file_memory_spec.rb
154
+ - spec/juno/stack_memory_file_spec.rb
155
+ - spec/juno/transformer_bencode_spec.rb
156
+ - spec/juno/transformer_bert_spec.rb
157
+ - spec/juno/transformer_bson_spec.rb
158
+ - spec/juno/transformer_compress_spec.rb
159
+ - spec/juno/transformer_json_spec.rb
160
+ - spec/juno/transformer_lzma_spec.rb
161
+ - spec/juno/transformer_lzo_spec.rb
162
+ - spec/juno/transformer_marshal_base64_spec.rb
163
+ - spec/juno/transformer_marshal_escape_spec.rb
164
+ - spec/juno/transformer_marshal_md5_spec.rb
165
+ - spec/juno/transformer_marshal_md5_spread_spec.rb
166
+ - spec/juno/transformer_marshal_prefix_spec.rb
167
+ - spec/juno/transformer_marshal_uuencode_spec.rb
168
+ - spec/juno/transformer_msgpack_spec.rb
169
+ - spec/juno/transformer_ox_spec.rb
170
+ - spec/juno/transformer_quicklz_spec.rb
171
+ - spec/juno/transformer_snappy_spec.rb
172
+ - spec/juno/transformer_tnet_spec.rb
173
+ - spec/juno/transformer_yaml_spec.rb
102
174
  - spec/junospecs.rb
103
- - spec/lock_spec.rb
104
- - spec/null_adapter_spec.rb
105
- - spec/proxy_expires_memory_spec.rb
106
- - spec/proxy_redis_spec.rb
107
- - spec/simple_activerecord_spec.rb
108
- - spec/simple_activerecord_with_expires_spec.rb
109
- - spec/simple_cassandra_spec.rb
110
- - spec/simple_couch_spec.rb
111
- - spec/simple_couch_with_expires_spec.rb
112
- - spec/simple_datamapper_spec.rb
113
- - spec/simple_datamapper_with_expires_spec.rb
114
- - spec/simple_datamapper_with_repository_spec.rb
115
- - spec/simple_dbm_spec.rb
116
- - spec/simple_dbm_with_expires_spec.rb
117
- - spec/simple_file_spec.rb
118
- - spec/simple_file_with_expires_spec.rb
119
- - spec/simple_fog_spec.rb
120
- - spec/simple_fog_with_expires_spec.rb
121
- - spec/simple_gdbm_spec.rb
122
- - spec/simple_gdbm_with_expires_spec.rb
123
- - spec/simple_hashfile_spec.rb
124
- - spec/simple_hashfile_with_expires_spec.rb
125
- - spec/simple_localmemcache_spec.rb
126
- - spec/simple_localmemcache_with_expires_spec.rb
127
- - spec/simple_lruhash_spec.rb
128
- - spec/simple_lruhash_with_expires_spec.rb
129
- - spec/simple_memcached_dalli_spec.rb
130
- - spec/simple_memcached_native_spec.rb
131
- - spec/simple_memcached_spec.rb
132
- - spec/simple_memory_spec.rb
133
- - spec/simple_memory_with_expires_spec.rb
134
- - spec/simple_mongo_spec.rb
135
- - spec/simple_mongo_with_expires_spec.rb
136
- - spec/simple_null_spec.rb
137
- - spec/simple_pstore_spec.rb
138
- - spec/simple_pstore_with_expires_spec.rb
139
- - spec/simple_redis_spec.rb
140
- - spec/simple_riak_spec.rb
141
- - spec/simple_riak_with_expires_spec.rb
142
- - spec/simple_sdbm_spec.rb
143
- - spec/simple_sdbm_with_expires_spec.rb
144
- - spec/simple_sequel_spec.rb
145
- - spec/simple_sequel_with_expires_spec.rb
146
- - spec/simple_sqlite_spec.rb
147
- - spec/simple_sqlite_with_expires_spec.rb
148
- - spec/simple_tokyocabinet_spec.rb
149
- - spec/simple_tokyocabinet_with_expires_spec.rb
150
- - spec/simple_yaml_spec.rb
151
- - spec/simple_yaml_with_expires_spec.rb
152
- - spec/stack_file_memory_spec.rb
153
- - spec/stack_memory_file_spec.rb
154
- - spec/transformer_bencode_spec.rb
155
- - spec/transformer_bert_spec.rb
156
- - spec/transformer_bson_spec.rb
157
- - spec/transformer_compress_spec.rb
158
- - spec/transformer_json_spec.rb
159
- - spec/transformer_marshal_base64_spec.rb
160
- - spec/transformer_marshal_escape_spec.rb
161
- - spec/transformer_marshal_md5_spec.rb
162
- - spec/transformer_marshal_md5_spread_spec.rb
163
- - spec/transformer_marshal_uuencode_spec.rb
164
- - spec/transformer_msgpack_spec.rb
165
- - spec/transformer_ox_spec.rb
166
- - spec/transformer_tnet_spec.rb
167
- - spec/transformer_yaml_spec.rb
175
+ - spec/rack/cache_juno_spec.rb
176
+ - spec/rack/session_juno_spec.rb
168
177
  homepage: http://github.com/minad/juno
169
178
  licenses: []
170
179
  post_install_message:
@@ -191,99 +200,106 @@ specification_version: 3
191
200
  summary: A unified interface to key/value stores, including MongoDB, Redis, Tokyo,
192
201
  and ActiveRecord
193
202
  test_files:
194
- - spec/adapter_activerecord_spec.rb
195
- - spec/adapter_cassandra_spec.rb
196
- - spec/adapter_couch_spec.rb
197
- - spec/adapter_datamapper_spec.rb
198
- - spec/adapter_dbm_spec.rb
199
- - spec/adapter_file_spec.rb
200
- - spec/adapter_fog_spec.rb
201
- - spec/adapter_gdbm_spec.rb
202
- - spec/adapter_localmemcache_spec.rb
203
- - spec/adapter_lruhash_spec.rb
204
- - spec/adapter_memcached_dalli_spec.rb
205
- - spec/adapter_memcached_native_spec.rb
206
- - spec/adapter_memcached_spec.rb
207
- - spec/adapter_memory_spec.rb
208
- - spec/adapter_mongo_spec.rb
209
- - spec/adapter_pstore_spec.rb
210
- - spec/adapter_redis_spec.rb
211
- - spec/adapter_riak_spec.rb
212
- - spec/adapter_sdbm_spec.rb
213
- - spec/adapter_sequel_spec.rb
214
- - spec/adapter_sqlite_spec.rb
215
- - spec/adapter_tokyocabinet_bdb_spec.rb
216
- - spec/adapter_tokyocabinet_hdb_spec.rb
217
- - spec/adapter_yaml_spec.rb
218
- - spec/cache_file_memory_spec.rb
219
- - spec/cache_memory_null_spec.rb
220
- - spec/expires_file_spec.rb
221
- - spec/expires_memory_spec.rb
222
203
  - spec/generate.rb
223
204
  - spec/helper.rb
205
+ - spec/juno/adapter_activerecord_spec.rb
206
+ - spec/juno/adapter_cassandra_spec.rb
207
+ - spec/juno/adapter_couch_spec.rb
208
+ - spec/juno/adapter_datamapper_spec.rb
209
+ - spec/juno/adapter_dbm_spec.rb
210
+ - spec/juno/adapter_file_spec.rb
211
+ - spec/juno/adapter_fog_spec.rb
212
+ - spec/juno/adapter_gdbm_spec.rb
213
+ - spec/juno/adapter_localmemcache_spec.rb
214
+ - spec/juno/adapter_lruhash_spec.rb
215
+ - spec/juno/adapter_memcached_dalli_spec.rb
216
+ - spec/juno/adapter_memcached_native_spec.rb
217
+ - spec/juno/adapter_memcached_spec.rb
218
+ - spec/juno/adapter_memory_spec.rb
219
+ - spec/juno/adapter_mongo_spec.rb
220
+ - spec/juno/adapter_pstore_spec.rb
221
+ - spec/juno/adapter_redis_spec.rb
222
+ - spec/juno/adapter_riak_spec.rb
223
+ - spec/juno/adapter_sdbm_spec.rb
224
+ - spec/juno/adapter_sequel_spec.rb
225
+ - spec/juno/adapter_sqlite_spec.rb
226
+ - spec/juno/adapter_tokyocabinet_bdb_spec.rb
227
+ - spec/juno/adapter_tokyocabinet_hdb_spec.rb
228
+ - spec/juno/adapter_yaml_spec.rb
229
+ - spec/juno/cache_file_memory_spec.rb
230
+ - spec/juno/cache_memory_null_spec.rb
231
+ - spec/juno/expires_file_spec.rb
232
+ - spec/juno/expires_memory_spec.rb
233
+ - spec/juno/lock_spec.rb
234
+ - spec/juno/null_adapter_spec.rb
235
+ - spec/juno/proxy_expires_memory_spec.rb
236
+ - spec/juno/proxy_redis_spec.rb
237
+ - spec/juno/simple_activerecord_spec.rb
238
+ - spec/juno/simple_activerecord_with_expires_spec.rb
239
+ - spec/juno/simple_cassandra_spec.rb
240
+ - spec/juno/simple_couch_spec.rb
241
+ - spec/juno/simple_couch_with_expires_spec.rb
242
+ - spec/juno/simple_datamapper_spec.rb
243
+ - spec/juno/simple_datamapper_with_expires_spec.rb
244
+ - spec/juno/simple_datamapper_with_repository_spec.rb
245
+ - spec/juno/simple_dbm_spec.rb
246
+ - spec/juno/simple_dbm_with_expires_spec.rb
247
+ - spec/juno/simple_file_spec.rb
248
+ - spec/juno/simple_file_with_expires_spec.rb
249
+ - spec/juno/simple_fog_spec.rb
250
+ - spec/juno/simple_fog_with_expires_spec.rb
251
+ - spec/juno/simple_gdbm_spec.rb
252
+ - spec/juno/simple_gdbm_with_expires_spec.rb
253
+ - spec/juno/simple_hashfile_spec.rb
254
+ - spec/juno/simple_hashfile_with_expires_spec.rb
255
+ - spec/juno/simple_localmemcache_spec.rb
256
+ - spec/juno/simple_localmemcache_with_expires_spec.rb
257
+ - spec/juno/simple_lruhash_spec.rb
258
+ - spec/juno/simple_lruhash_with_expires_spec.rb
259
+ - spec/juno/simple_memcached_dalli_spec.rb
260
+ - spec/juno/simple_memcached_native_spec.rb
261
+ - spec/juno/simple_memcached_spec.rb
262
+ - spec/juno/simple_memory_spec.rb
263
+ - spec/juno/simple_memory_with_expires_spec.rb
264
+ - spec/juno/simple_mongo_spec.rb
265
+ - spec/juno/simple_mongo_with_expires_spec.rb
266
+ - spec/juno/simple_null_spec.rb
267
+ - spec/juno/simple_pstore_spec.rb
268
+ - spec/juno/simple_pstore_with_expires_spec.rb
269
+ - spec/juno/simple_redis_spec.rb
270
+ - spec/juno/simple_riak_spec.rb
271
+ - spec/juno/simple_riak_with_expires_spec.rb
272
+ - spec/juno/simple_sdbm_spec.rb
273
+ - spec/juno/simple_sdbm_with_expires_spec.rb
274
+ - spec/juno/simple_sequel_spec.rb
275
+ - spec/juno/simple_sequel_with_expires_spec.rb
276
+ - spec/juno/simple_sqlite_spec.rb
277
+ - spec/juno/simple_sqlite_with_expires_spec.rb
278
+ - spec/juno/simple_tokyocabinet_spec.rb
279
+ - spec/juno/simple_tokyocabinet_with_expires_spec.rb
280
+ - spec/juno/simple_yaml_spec.rb
281
+ - spec/juno/simple_yaml_with_expires_spec.rb
282
+ - spec/juno/stack_file_memory_spec.rb
283
+ - spec/juno/stack_memory_file_spec.rb
284
+ - spec/juno/transformer_bencode_spec.rb
285
+ - spec/juno/transformer_bert_spec.rb
286
+ - spec/juno/transformer_bson_spec.rb
287
+ - spec/juno/transformer_compress_spec.rb
288
+ - spec/juno/transformer_json_spec.rb
289
+ - spec/juno/transformer_lzma_spec.rb
290
+ - spec/juno/transformer_lzo_spec.rb
291
+ - spec/juno/transformer_marshal_base64_spec.rb
292
+ - spec/juno/transformer_marshal_escape_spec.rb
293
+ - spec/juno/transformer_marshal_md5_spec.rb
294
+ - spec/juno/transformer_marshal_md5_spread_spec.rb
295
+ - spec/juno/transformer_marshal_prefix_spec.rb
296
+ - spec/juno/transformer_marshal_uuencode_spec.rb
297
+ - spec/juno/transformer_msgpack_spec.rb
298
+ - spec/juno/transformer_ox_spec.rb
299
+ - spec/juno/transformer_quicklz_spec.rb
300
+ - spec/juno/transformer_snappy_spec.rb
301
+ - spec/juno/transformer_tnet_spec.rb
302
+ - spec/juno/transformer_yaml_spec.rb
224
303
  - spec/junospecs.rb
225
- - spec/lock_spec.rb
226
- - spec/null_adapter_spec.rb
227
- - spec/proxy_expires_memory_spec.rb
228
- - spec/proxy_redis_spec.rb
229
- - spec/simple_activerecord_spec.rb
230
- - spec/simple_activerecord_with_expires_spec.rb
231
- - spec/simple_cassandra_spec.rb
232
- - spec/simple_couch_spec.rb
233
- - spec/simple_couch_with_expires_spec.rb
234
- - spec/simple_datamapper_spec.rb
235
- - spec/simple_datamapper_with_expires_spec.rb
236
- - spec/simple_datamapper_with_repository_spec.rb
237
- - spec/simple_dbm_spec.rb
238
- - spec/simple_dbm_with_expires_spec.rb
239
- - spec/simple_file_spec.rb
240
- - spec/simple_file_with_expires_spec.rb
241
- - spec/simple_fog_spec.rb
242
- - spec/simple_fog_with_expires_spec.rb
243
- - spec/simple_gdbm_spec.rb
244
- - spec/simple_gdbm_with_expires_spec.rb
245
- - spec/simple_hashfile_spec.rb
246
- - spec/simple_hashfile_with_expires_spec.rb
247
- - spec/simple_localmemcache_spec.rb
248
- - spec/simple_localmemcache_with_expires_spec.rb
249
- - spec/simple_lruhash_spec.rb
250
- - spec/simple_lruhash_with_expires_spec.rb
251
- - spec/simple_memcached_dalli_spec.rb
252
- - spec/simple_memcached_native_spec.rb
253
- - spec/simple_memcached_spec.rb
254
- - spec/simple_memory_spec.rb
255
- - spec/simple_memory_with_expires_spec.rb
256
- - spec/simple_mongo_spec.rb
257
- - spec/simple_mongo_with_expires_spec.rb
258
- - spec/simple_null_spec.rb
259
- - spec/simple_pstore_spec.rb
260
- - spec/simple_pstore_with_expires_spec.rb
261
- - spec/simple_redis_spec.rb
262
- - spec/simple_riak_spec.rb
263
- - spec/simple_riak_with_expires_spec.rb
264
- - spec/simple_sdbm_spec.rb
265
- - spec/simple_sdbm_with_expires_spec.rb
266
- - spec/simple_sequel_spec.rb
267
- - spec/simple_sequel_with_expires_spec.rb
268
- - spec/simple_sqlite_spec.rb
269
- - spec/simple_sqlite_with_expires_spec.rb
270
- - spec/simple_tokyocabinet_spec.rb
271
- - spec/simple_tokyocabinet_with_expires_spec.rb
272
- - spec/simple_yaml_spec.rb
273
- - spec/simple_yaml_with_expires_spec.rb
274
- - spec/stack_file_memory_spec.rb
275
- - spec/stack_memory_file_spec.rb
276
- - spec/transformer_bencode_spec.rb
277
- - spec/transformer_bert_spec.rb
278
- - spec/transformer_bson_spec.rb
279
- - spec/transformer_compress_spec.rb
280
- - spec/transformer_json_spec.rb
281
- - spec/transformer_marshal_base64_spec.rb
282
- - spec/transformer_marshal_escape_spec.rb
283
- - spec/transformer_marshal_md5_spec.rb
284
- - spec/transformer_marshal_md5_spread_spec.rb
285
- - spec/transformer_marshal_uuencode_spec.rb
286
- - spec/transformer_msgpack_spec.rb
287
- - spec/transformer_ox_spec.rb
288
- - spec/transformer_tnet_spec.rb
289
- - spec/transformer_yaml_spec.rb
304
+ - spec/rack/cache_juno_spec.rb
305
+ - spec/rack/session_juno_spec.rb