juno 0.2.5 → 0.2.6
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +5 -1
- data/Gemfile +27 -21
- data/README.md +41 -2
- data/Rakefile +3 -3
- data/juno.gemspec +12 -12
- data/lib/juno.rb +4 -4
- data/lib/juno/adapters/couch.rb +1 -1
- data/lib/juno/adapters/datamapper.rb +1 -1
- data/lib/juno/adapters/dbm.rb +1 -1
- data/lib/juno/adapters/file.rb +1 -1
- data/lib/juno/adapters/fog.rb +1 -1
- data/lib/juno/adapters/gdbm.rb +1 -1
- data/lib/juno/adapters/localmemcache.rb +1 -1
- data/lib/juno/adapters/pstore.rb +1 -1
- data/lib/juno/adapters/redis.rb +3 -2
- data/lib/juno/adapters/sdbm.rb +1 -1
- data/lib/juno/adapters/sequel.rb +1 -1
- data/lib/juno/adapters/sqlite.rb +1 -1
- data/lib/juno/adapters/tokyocabinet.rb +1 -1
- data/lib/juno/builder.rb +10 -0
- data/lib/juno/cache.rb +1 -0
- data/lib/juno/expires.rb +1 -1
- data/lib/juno/proxy.rb +2 -0
- data/lib/juno/stack.rb +1 -0
- data/lib/juno/transformer.rb +34 -18
- data/lib/juno/version.rb +1 -1
- data/lib/rack/cache/juno.rb +93 -0
- data/lib/rack/session/juno.rb +63 -0
- data/spec/generate.rb +41 -2
- data/spec/{adapter_activerecord_spec.rb → juno/adapter_activerecord_spec.rb} +0 -0
- data/spec/{adapter_cassandra_spec.rb → juno/adapter_cassandra_spec.rb} +0 -0
- data/spec/{adapter_couch_spec.rb → juno/adapter_couch_spec.rb} +0 -0
- data/spec/{adapter_datamapper_spec.rb → juno/adapter_datamapper_spec.rb} +0 -0
- data/spec/{adapter_dbm_spec.rb → juno/adapter_dbm_spec.rb} +0 -0
- data/spec/{adapter_file_spec.rb → juno/adapter_file_spec.rb} +0 -0
- data/spec/{adapter_fog_spec.rb → juno/adapter_fog_spec.rb} +0 -0
- data/spec/{adapter_gdbm_spec.rb → juno/adapter_gdbm_spec.rb} +0 -0
- data/spec/{adapter_localmemcache_spec.rb → juno/adapter_localmemcache_spec.rb} +0 -0
- data/spec/{adapter_lruhash_spec.rb → juno/adapter_lruhash_spec.rb} +0 -0
- data/spec/{adapter_memcached_dalli_spec.rb → juno/adapter_memcached_dalli_spec.rb} +0 -0
- data/spec/{adapter_memcached_native_spec.rb → juno/adapter_memcached_native_spec.rb} +0 -0
- data/spec/{adapter_memcached_spec.rb → juno/adapter_memcached_spec.rb} +0 -0
- data/spec/{adapter_memory_spec.rb → juno/adapter_memory_spec.rb} +0 -0
- data/spec/{adapter_mongo_spec.rb → juno/adapter_mongo_spec.rb} +0 -0
- data/spec/{adapter_pstore_spec.rb → juno/adapter_pstore_spec.rb} +0 -0
- data/spec/{adapter_redis_spec.rb → juno/adapter_redis_spec.rb} +0 -0
- data/spec/{adapter_riak_spec.rb → juno/adapter_riak_spec.rb} +0 -0
- data/spec/{adapter_sdbm_spec.rb → juno/adapter_sdbm_spec.rb} +0 -0
- data/spec/{adapter_sequel_spec.rb → juno/adapter_sequel_spec.rb} +0 -0
- data/spec/{adapter_sqlite_spec.rb → juno/adapter_sqlite_spec.rb} +0 -0
- data/spec/{adapter_tokyocabinet_bdb_spec.rb → juno/adapter_tokyocabinet_bdb_spec.rb} +0 -0
- data/spec/{adapter_tokyocabinet_hdb_spec.rb → juno/adapter_tokyocabinet_hdb_spec.rb} +0 -0
- data/spec/{adapter_yaml_spec.rb → juno/adapter_yaml_spec.rb} +0 -0
- data/spec/{cache_file_memory_spec.rb → juno/cache_file_memory_spec.rb} +0 -0
- data/spec/{cache_memory_null_spec.rb → juno/cache_memory_null_spec.rb} +0 -0
- data/spec/{expires_file_spec.rb → juno/expires_file_spec.rb} +0 -0
- data/spec/{expires_memory_spec.rb → juno/expires_memory_spec.rb} +0 -0
- data/spec/{lock_spec.rb → juno/lock_spec.rb} +0 -0
- data/spec/{null_adapter_spec.rb → juno/null_adapter_spec.rb} +0 -0
- data/spec/{proxy_expires_memory_spec.rb → juno/proxy_expires_memory_spec.rb} +0 -0
- data/spec/{proxy_redis_spec.rb → juno/proxy_redis_spec.rb} +0 -0
- data/spec/{simple_activerecord_spec.rb → juno/simple_activerecord_spec.rb} +0 -0
- data/spec/{simple_activerecord_with_expires_spec.rb → juno/simple_activerecord_with_expires_spec.rb} +0 -0
- data/spec/{simple_cassandra_spec.rb → juno/simple_cassandra_spec.rb} +0 -0
- data/spec/{simple_couch_spec.rb → juno/simple_couch_spec.rb} +0 -0
- data/spec/{simple_couch_with_expires_spec.rb → juno/simple_couch_with_expires_spec.rb} +0 -0
- data/spec/{simple_datamapper_spec.rb → juno/simple_datamapper_spec.rb} +0 -0
- data/spec/{simple_datamapper_with_expires_spec.rb → juno/simple_datamapper_with_expires_spec.rb} +0 -0
- data/spec/{simple_datamapper_with_repository_spec.rb → juno/simple_datamapper_with_repository_spec.rb} +0 -0
- data/spec/{simple_dbm_spec.rb → juno/simple_dbm_spec.rb} +0 -0
- data/spec/{simple_dbm_with_expires_spec.rb → juno/simple_dbm_with_expires_spec.rb} +0 -0
- data/spec/{simple_file_spec.rb → juno/simple_file_spec.rb} +0 -0
- data/spec/{simple_file_with_expires_spec.rb → juno/simple_file_with_expires_spec.rb} +0 -0
- data/spec/{simple_fog_spec.rb → juno/simple_fog_spec.rb} +0 -0
- data/spec/{simple_fog_with_expires_spec.rb → juno/simple_fog_with_expires_spec.rb} +0 -0
- data/spec/{simple_gdbm_spec.rb → juno/simple_gdbm_spec.rb} +0 -0
- data/spec/{simple_gdbm_with_expires_spec.rb → juno/simple_gdbm_with_expires_spec.rb} +0 -0
- data/spec/{simple_hashfile_spec.rb → juno/simple_hashfile_spec.rb} +0 -0
- data/spec/{simple_hashfile_with_expires_spec.rb → juno/simple_hashfile_with_expires_spec.rb} +0 -0
- data/spec/{simple_localmemcache_spec.rb → juno/simple_localmemcache_spec.rb} +0 -0
- data/spec/{simple_localmemcache_with_expires_spec.rb → juno/simple_localmemcache_with_expires_spec.rb} +0 -0
- data/spec/{simple_lruhash_spec.rb → juno/simple_lruhash_spec.rb} +0 -0
- data/spec/{simple_lruhash_with_expires_spec.rb → juno/simple_lruhash_with_expires_spec.rb} +0 -0
- data/spec/{simple_memcached_dalli_spec.rb → juno/simple_memcached_dalli_spec.rb} +0 -0
- data/spec/{simple_memcached_native_spec.rb → juno/simple_memcached_native_spec.rb} +0 -0
- data/spec/{simple_memcached_spec.rb → juno/simple_memcached_spec.rb} +0 -0
- data/spec/{simple_memory_spec.rb → juno/simple_memory_spec.rb} +0 -0
- data/spec/{simple_memory_with_expires_spec.rb → juno/simple_memory_with_expires_spec.rb} +0 -0
- data/spec/{simple_mongo_spec.rb → juno/simple_mongo_spec.rb} +0 -0
- data/spec/{simple_mongo_with_expires_spec.rb → juno/simple_mongo_with_expires_spec.rb} +0 -0
- data/spec/{simple_null_spec.rb → juno/simple_null_spec.rb} +0 -0
- data/spec/{simple_pstore_spec.rb → juno/simple_pstore_spec.rb} +0 -0
- data/spec/{simple_pstore_with_expires_spec.rb → juno/simple_pstore_with_expires_spec.rb} +0 -0
- data/spec/{simple_redis_spec.rb → juno/simple_redis_spec.rb} +0 -0
- data/spec/{simple_riak_spec.rb → juno/simple_riak_spec.rb} +0 -0
- data/spec/{simple_riak_with_expires_spec.rb → juno/simple_riak_with_expires_spec.rb} +0 -0
- data/spec/{simple_sdbm_spec.rb → juno/simple_sdbm_spec.rb} +0 -0
- data/spec/{simple_sdbm_with_expires_spec.rb → juno/simple_sdbm_with_expires_spec.rb} +0 -0
- data/spec/{simple_sequel_spec.rb → juno/simple_sequel_spec.rb} +0 -0
- data/spec/{simple_sequel_with_expires_spec.rb → juno/simple_sequel_with_expires_spec.rb} +0 -0
- data/spec/{simple_sqlite_spec.rb → juno/simple_sqlite_spec.rb} +0 -0
- data/spec/{simple_sqlite_with_expires_spec.rb → juno/simple_sqlite_with_expires_spec.rb} +0 -0
- data/spec/{simple_tokyocabinet_spec.rb → juno/simple_tokyocabinet_spec.rb} +0 -0
- data/spec/{simple_tokyocabinet_with_expires_spec.rb → juno/simple_tokyocabinet_with_expires_spec.rb} +0 -0
- data/spec/{simple_yaml_spec.rb → juno/simple_yaml_spec.rb} +0 -0
- data/spec/{simple_yaml_with_expires_spec.rb → juno/simple_yaml_with_expires_spec.rb} +0 -0
- data/spec/{stack_file_memory_spec.rb → juno/stack_file_memory_spec.rb} +0 -0
- data/spec/{stack_memory_file_spec.rb → juno/stack_memory_file_spec.rb} +0 -0
- data/spec/{transformer_bencode_spec.rb → juno/transformer_bencode_spec.rb} +0 -0
- data/spec/{transformer_bert_spec.rb → juno/transformer_bert_spec.rb} +0 -0
- data/spec/{transformer_bson_spec.rb → juno/transformer_bson_spec.rb} +0 -0
- data/spec/{transformer_compress_spec.rb → juno/transformer_compress_spec.rb} +0 -0
- data/spec/{transformer_json_spec.rb → juno/transformer_json_spec.rb} +0 -0
- data/spec/juno/transformer_lzma_spec.rb +22 -0
- data/spec/juno/transformer_lzo_spec.rb +22 -0
- data/spec/{transformer_marshal_base64_spec.rb → juno/transformer_marshal_base64_spec.rb} +0 -0
- data/spec/{transformer_marshal_escape_spec.rb → juno/transformer_marshal_escape_spec.rb} +0 -0
- data/spec/{transformer_marshal_md5_spec.rb → juno/transformer_marshal_md5_spec.rb} +0 -0
- data/spec/{transformer_marshal_md5_spread_spec.rb → juno/transformer_marshal_md5_spread_spec.rb} +0 -0
- data/spec/juno/transformer_marshal_prefix_spec.rb +41 -0
- data/spec/{transformer_marshal_uuencode_spec.rb → juno/transformer_marshal_uuencode_spec.rb} +0 -0
- data/spec/{transformer_msgpack_spec.rb → juno/transformer_msgpack_spec.rb} +0 -0
- data/spec/{transformer_ox_spec.rb → juno/transformer_ox_spec.rb} +0 -0
- data/spec/juno/transformer_quicklz_spec.rb +22 -0
- data/spec/juno/transformer_snappy_spec.rb +22 -0
- data/spec/{transformer_tnet_spec.rb → juno/transformer_tnet_spec.rb} +0 -0
- data/spec/{transformer_yaml_spec.rb → juno/transformer_yaml_spec.rb} +0 -0
- data/spec/rack/cache_juno_spec.rb +355 -0
- data/spec/rack/session_juno_spec.rb +305 -0
- 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.
|
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-
|
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
|
-
-
|
73
|
-
-
|
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/
|
104
|
-
- spec/
|
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/
|
226
|
-
- spec/
|
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
|