instructure-redis-store 1.0.0.1.instructure1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +7 -0
- data/CHANGELOG +311 -0
- data/Gemfile +34 -0
- data/MIT-LICENSE +20 -0
- data/README.md +239 -0
- data/Rakefile +60 -0
- data/VERSION +1 -0
- data/lib/action_controller/session/redis_session_store.rb +81 -0
- data/lib/active_support/cache/redis_store.rb +254 -0
- data/lib/cache/merb/redis_store.rb +79 -0
- data/lib/cache/sinatra/redis_store.rb +131 -0
- data/lib/i18n/backend/redis.rb +67 -0
- data/lib/rack/cache/redis_entitystore.rb +48 -0
- data/lib/rack/cache/redis_metastore.rb +40 -0
- data/lib/rack/session/merb.rb +32 -0
- data/lib/rack/session/redis.rb +88 -0
- data/lib/redis-store.rb +45 -0
- data/lib/redis/distributed_store.rb +39 -0
- data/lib/redis/factory.rb +46 -0
- data/lib/redis/store.rb +39 -0
- data/lib/redis/store/interface.rb +17 -0
- data/lib/redis/store/marshalling.rb +51 -0
- data/lib/redis/store/namespace.rb +62 -0
- data/lib/redis/store/ttl.rb +37 -0
- data/lib/redis/store/version.rb +12 -0
- data/spec/action_controller/session/redis_session_store_spec.rb +126 -0
- data/spec/active_support/cache/redis_store_spec.rb +426 -0
- data/spec/cache/merb/redis_store_spec.rb +143 -0
- data/spec/cache/sinatra/redis_store_spec.rb +192 -0
- data/spec/config/node-one.conf +417 -0
- data/spec/config/node-two.conf +417 -0
- data/spec/config/redis.conf +417 -0
- data/spec/i18n/backend/redis_spec.rb +72 -0
- data/spec/rack/cache/entitystore/pony.jpg +0 -0
- data/spec/rack/cache/entitystore/redis_spec.rb +124 -0
- data/spec/rack/cache/metastore/redis_spec.rb +259 -0
- data/spec/rack/session/redis_spec.rb +234 -0
- data/spec/redis/distributed_store_spec.rb +55 -0
- data/spec/redis/factory_spec.rb +110 -0
- data/spec/redis/store/interface_spec.rb +23 -0
- data/spec/redis/store/marshalling_spec.rb +119 -0
- data/spec/redis/store/namespace_spec.rb +76 -0
- data/spec/redis/store/version_spec.rb +7 -0
- data/spec/redis/store_spec.rb +13 -0
- data/spec/spec_helper.rb +43 -0
- data/tasks/redis.tasks.rb +235 -0
- metadata +249 -0
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Redis::Store::Namespace" do
|
4
|
+
before :each do
|
5
|
+
@namespace = "theplaylist"
|
6
|
+
@store = Redis::Store.new :namespace => @namespace, :marshalling => false # TODO remove mashalling option
|
7
|
+
@client = @store.instance_variable_get(:@client)
|
8
|
+
@rabbit = "bunny"
|
9
|
+
end
|
10
|
+
|
11
|
+
after :each do
|
12
|
+
@store.should_receive(:quit) # stupid rspec, meh!
|
13
|
+
@store.quit
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should only decorate instances that needs to be namespaced" do
|
17
|
+
@store = Redis::Store.new
|
18
|
+
client = @store.instance_variable_get(:@client)
|
19
|
+
client.should_receive(:call).with([:get, "rabbit"])
|
20
|
+
@store.get("rabbit")
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should not namespace a key which is already namespaced" do
|
24
|
+
@store.send(:interpolate, "#{@namespace}:rabbit").should == "#{@namespace}:rabbit"
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should namespace get" do
|
28
|
+
@client.should_receive(:call).with([:get, "#{@namespace}:rabbit"])
|
29
|
+
@store.get("rabbit")
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should namespace set" do
|
33
|
+
@client.should_receive(:call).with([:set, "#{@namespace}:rabbit", @rabbit])
|
34
|
+
@store.set "rabbit", @rabbit
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should namespace setnx" do
|
38
|
+
@client.should_receive(:call).with([:setnx, "#{@namespace}:rabbit", @rabbit])
|
39
|
+
@store.setnx "rabbit", @rabbit
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should namespace del with single key" do
|
43
|
+
@client.should_receive(:call).with([:del, "#{@namespace}:rabbit"])
|
44
|
+
@store.del "rabbit"
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should namespace del with multiple keys" do
|
48
|
+
@client.should_receive(:call).with([:del, "#{@namespace}:rabbit", "#{@namespace}:white_rabbit"])
|
49
|
+
@store.del "rabbit", "white_rabbit"
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should namespace keys" do
|
53
|
+
@store.set "rabbit", @rabbit
|
54
|
+
@store.keys("rabb*").should == [ "rabbit" ]
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should namespace exists" do
|
58
|
+
@client.should_receive(:call).with([:exists, "#{@namespace}:rabbit"])
|
59
|
+
@store.exists "rabbit"
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should namespace incrby" do
|
63
|
+
@client.should_receive(:call).with([:incrby, "#{@namespace}:counter", 1])
|
64
|
+
@store.incrby "counter", 1
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should namespace decrby" do
|
68
|
+
@client.should_receive(:call).with([:decrby, "#{@namespace}:counter", 1])
|
69
|
+
@store.decrby "counter", 1
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should namespace mget" do
|
73
|
+
@client.should_receive(:call).with([:mget, "#{@namespace}:rabbit", "#{@namespace}:white_rabbit"])
|
74
|
+
@store.mget "rabbit", "white_rabbit"
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Redis::Store" do
|
4
|
+
before :each do
|
5
|
+
@store = Redis::Store.new
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should force reconnection" do
|
9
|
+
client = @store.instance_variable_get(:@client)
|
10
|
+
client.should_receive(:reconnect)
|
11
|
+
@store.reconnect
|
12
|
+
end
|
13
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
$:.unshift(File.expand_path(File.join(File.dirname(__FILE__), "/../lib")))
|
2
|
+
ARGV << "-b"
|
3
|
+
require "rubygems"
|
4
|
+
require "bundler"
|
5
|
+
Bundler.setup
|
6
|
+
require "methopara" if RUBY_VERSION.match /1\.9/
|
7
|
+
require "ostruct"
|
8
|
+
require "spec"
|
9
|
+
require "spec/autorun"
|
10
|
+
require "redis"
|
11
|
+
require "merb"
|
12
|
+
require "i18n"
|
13
|
+
require "rack/cache"
|
14
|
+
require "rack/cache/metastore"
|
15
|
+
require "rack/cache/entitystore"
|
16
|
+
require "redis-store"
|
17
|
+
require "active_support"
|
18
|
+
begin
|
19
|
+
require "action_controller/session/abstract_store" # Rails 2.3.x
|
20
|
+
rescue LoadError
|
21
|
+
require "action_dispatch/middleware/session/abstract_store" # Rails 3.x
|
22
|
+
module ::Rails
|
23
|
+
module VERSION
|
24
|
+
MAJOR = 3
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
require "active_support/cache/redis_store"
|
29
|
+
require "action_controller/session/redis_session_store"
|
30
|
+
require "cache/sinatra/redis_store"
|
31
|
+
|
32
|
+
$DEBUG = ENV["DEBUG"] === "true"
|
33
|
+
|
34
|
+
# http://mentalized.net/journal/2010/04/02/suppress_warnings_from_ruby/
|
35
|
+
module Kernel
|
36
|
+
def suppress_warnings
|
37
|
+
original_verbosity = $VERBOSE
|
38
|
+
$VERBOSE = nil
|
39
|
+
result = yield
|
40
|
+
$VERBOSE = original_verbosity
|
41
|
+
return result
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,235 @@
|
|
1
|
+
# inspired by old Rake tasks from redis-rb
|
2
|
+
require 'rake'
|
3
|
+
require 'fileutils'
|
4
|
+
require 'open-uri'
|
5
|
+
|
6
|
+
class RedisRunner
|
7
|
+
def self.port
|
8
|
+
6379
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.redisdir
|
12
|
+
@@redisdir ||= File.expand_path File.join(File.dirname(__FILE__), '..', 'vendor', 'redis')
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.redisconfdir
|
16
|
+
'/etc/redis.conf'
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.dtach_socket
|
20
|
+
'/tmp/redis.dtach'
|
21
|
+
end
|
22
|
+
|
23
|
+
# Just check for existance of dtach socket
|
24
|
+
def self.running?
|
25
|
+
File.exists? dtach_socket
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.start
|
29
|
+
puts 'Detach with Ctrl+\ Re-attach with rake redis:attach'
|
30
|
+
sleep 3
|
31
|
+
exec "dtach -A #{dtach_socket} redis-server #{redisconfdir}"
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.start_detached
|
35
|
+
system "dtach -n #{dtach_socket} redis-server #{redisconfdir}"
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.attach
|
39
|
+
exec "dtach -a #{dtach_socket}"
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.stop
|
43
|
+
system %(redis-cli -p #{port} SHUTDOWN)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
class MainRedisRunner < RedisRunner
|
48
|
+
def self.redisconfdir
|
49
|
+
File.expand_path(File.dirname(__FILE__) + "/../spec/config/redis.conf")
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
class NodeOneRedisRunner < RedisRunner
|
54
|
+
def self.redisconfdir
|
55
|
+
File.expand_path(File.dirname(__FILE__) + "/../spec/config/node-one.conf")
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.dtach_socket
|
59
|
+
"/tmp/redis-node-one.dtach"
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.port
|
63
|
+
6380
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
class NodeTwoRedisRunner < RedisRunner
|
68
|
+
def self.redisconfdir
|
69
|
+
File.expand_path(File.dirname(__FILE__) + "/../spec/config/node-two.conf")
|
70
|
+
end
|
71
|
+
|
72
|
+
def self.dtach_socket
|
73
|
+
"/tmp/redis-node-two.dtach"
|
74
|
+
end
|
75
|
+
|
76
|
+
def self.port
|
77
|
+
6381
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
class RedisReplicationRunner
|
82
|
+
def self.runners
|
83
|
+
[ MainRedisRunner, NodeOneRedisRunner, NodeTwoRedisRunner ]
|
84
|
+
end
|
85
|
+
|
86
|
+
def self.start_detached
|
87
|
+
runners.each do |runner|
|
88
|
+
runner.start_detached
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def self.stop
|
93
|
+
runners.each do |runner|
|
94
|
+
runner.stop
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
namespace :redis do
|
100
|
+
desc 'About redis'
|
101
|
+
task :about do
|
102
|
+
puts "\nSee http://code.google.com/p/redis/ for information about redis.\n\n"
|
103
|
+
end
|
104
|
+
|
105
|
+
desc 'Start redis'
|
106
|
+
task :start => 'dtach:check' do
|
107
|
+
RedisRunner.start
|
108
|
+
end
|
109
|
+
|
110
|
+
desc 'Stop redis'
|
111
|
+
task :stop do
|
112
|
+
RedisRunner.stop
|
113
|
+
end
|
114
|
+
|
115
|
+
desc 'Restart redis'
|
116
|
+
task :restart do
|
117
|
+
RedisRunner.stop
|
118
|
+
RedisRunner.start
|
119
|
+
end
|
120
|
+
|
121
|
+
desc 'Attach to redis dtach socket'
|
122
|
+
task :attach do
|
123
|
+
RedisRunner.attach
|
124
|
+
end
|
125
|
+
|
126
|
+
desc 'Install the lastest verison of Redis from Github (requires git, duh)'
|
127
|
+
task :install => [ :about, :download, :make ] do
|
128
|
+
%w(redis-benchmark redis-cli redis-server).each do |bin|
|
129
|
+
if File.exist?(path = "#{RedisRunner.redisdir}/src/#{bin}")
|
130
|
+
sh "sudo cp #{path} /usr/bin/"
|
131
|
+
else
|
132
|
+
sh "sudo cp #{RedisRunner.redisdir}/#{bin} /usr/bin/"
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
puts "Installed redis-benchmark, redis-cli and redis-server to /usr/bin/"
|
137
|
+
|
138
|
+
sh "sudo cp #{RedisRunner.redisdir}/redis.conf /etc/"
|
139
|
+
puts "Installed redis.conf to /etc/ \n You should look at this file!"
|
140
|
+
end
|
141
|
+
|
142
|
+
task :make do
|
143
|
+
sh "cd #{RedisRunner.redisdir} && make clean"
|
144
|
+
sh "cd #{RedisRunner.redisdir} && make"
|
145
|
+
end
|
146
|
+
|
147
|
+
desc "Download package"
|
148
|
+
task :download do
|
149
|
+
require 'git'
|
150
|
+
|
151
|
+
sh "rm -rf #{RedisRunner.redisdir} && mkdir -p vendor && rm -rf redis"
|
152
|
+
Git.clone("git://github.com/antirez/redis.git", "redis")
|
153
|
+
sh "mv redis vendor"
|
154
|
+
|
155
|
+
commit = case ENV['VERSION']
|
156
|
+
when "1.3.12" then "26ef09a83526e5099bce"
|
157
|
+
when "2.2.8" then "ec279203df0bc6ddc981"
|
158
|
+
end
|
159
|
+
|
160
|
+
arguments = commit.nil? ? "pull origin master" : "reset --hard #{commit}"
|
161
|
+
sh "cd #{RedisRunner.redisdir} && git #{arguments}"
|
162
|
+
end
|
163
|
+
|
164
|
+
desc "Open an IRb session"
|
165
|
+
task :console do
|
166
|
+
RedisRunner.start_detached
|
167
|
+
system "bundle exec irb -I lib -I extra -r redis-store.rb"
|
168
|
+
RedisRunner.stop
|
169
|
+
end
|
170
|
+
|
171
|
+
namespace :replication do
|
172
|
+
desc "Starts redis replication servers"
|
173
|
+
task :start => 'dtach:check' do
|
174
|
+
result = RedisReplicationRunner.start_detached
|
175
|
+
raise("Could not start redis-server, aborting.") unless result
|
176
|
+
end
|
177
|
+
|
178
|
+
desc "Stops redis replication servers"
|
179
|
+
task :stop do
|
180
|
+
RedisReplicationRunner.stop
|
181
|
+
end
|
182
|
+
|
183
|
+
desc "Open an IRb session with the master/slave replication"
|
184
|
+
task :console do
|
185
|
+
RedisReplicationRunner.start_detached
|
186
|
+
system "bundle exec irb -I lib -I extra -r redis-store.rb"
|
187
|
+
RedisReplicationRunner.stop
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
namespace :dtach do
|
193
|
+
desc 'About dtach'
|
194
|
+
task :about do
|
195
|
+
puts "\nSee http://dtach.sourceforge.net/ for information about dtach.\n\n"
|
196
|
+
end
|
197
|
+
|
198
|
+
desc 'Check that dtach is available'
|
199
|
+
task :check do
|
200
|
+
if !ENV['TRAVIS'] && !system('which dtach')
|
201
|
+
raise "dtach is not installed. Install it manually or run 'rake dtach:install'"
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
desc 'Install dtach 0.8 from source'
|
206
|
+
task :install => [:about] do
|
207
|
+
|
208
|
+
Dir.chdir('/tmp/')
|
209
|
+
unless File.exists?('/tmp/dtach-0.8.tar.gz')
|
210
|
+
require 'net/http'
|
211
|
+
|
212
|
+
url = 'http://downloads.sourceforge.net/project/dtach/dtach/0.8/dtach-0.8.tar.gz'
|
213
|
+
open('/tmp/dtach-0.8.tar.gz', 'wb') do |file| file.write(open(url).read) end
|
214
|
+
end
|
215
|
+
|
216
|
+
unless File.directory?('/tmp/dtach-0.8')
|
217
|
+
system('tar xzf dtach-0.8.tar.gz')
|
218
|
+
end
|
219
|
+
|
220
|
+
Dir.chdir('/tmp/dtach-0.8/')
|
221
|
+
sh 'cd /tmp/dtach-0.8/ && ./configure && make'
|
222
|
+
sh 'sudo cp /tmp/dtach-0.8/dtach /usr/bin/'
|
223
|
+
|
224
|
+
puts 'Dtach successfully installed to /usr/bin.'
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
def invoke_with_redis_replication(task_name)
|
229
|
+
begin
|
230
|
+
Rake::Task["redis:replication:start"].invoke
|
231
|
+
Rake::Task[task_name].invoke
|
232
|
+
ensure
|
233
|
+
Rake::Task["redis:replication:stop"].invoke
|
234
|
+
end
|
235
|
+
end
|
metadata
ADDED
@@ -0,0 +1,249 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: instructure-redis-store
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 743671203
|
5
|
+
prerelease: 8
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
- 0
|
10
|
+
- 1
|
11
|
+
- instructure
|
12
|
+
- 1
|
13
|
+
version: 1.0.0.1.instructure1
|
14
|
+
platform: ruby
|
15
|
+
authors:
|
16
|
+
- Luca Guidi
|
17
|
+
- Brian Palmer
|
18
|
+
autorequire:
|
19
|
+
bindir: bin
|
20
|
+
cert_chain: []
|
21
|
+
|
22
|
+
date: 2012-06-12 00:00:00 Z
|
23
|
+
dependencies:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - "="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 5
|
31
|
+
segments:
|
32
|
+
- 3
|
33
|
+
- 0
|
34
|
+
- 1
|
35
|
+
version: 3.0.1
|
36
|
+
name: redis
|
37
|
+
prerelease: false
|
38
|
+
type: :runtime
|
39
|
+
requirement: *id001
|
40
|
+
- !ruby/object:Gem::Dependency
|
41
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
hash: 3
|
47
|
+
segments:
|
48
|
+
- 0
|
49
|
+
version: "0"
|
50
|
+
name: jeweler
|
51
|
+
prerelease: false
|
52
|
+
type: :development
|
53
|
+
requirement: *id002
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
hash: 3
|
61
|
+
segments:
|
62
|
+
- 0
|
63
|
+
version: "0"
|
64
|
+
name: git
|
65
|
+
prerelease: false
|
66
|
+
type: :development
|
67
|
+
requirement: *id003
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
70
|
+
none: false
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
hash: 3
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
version: "0"
|
78
|
+
name: rack-cache
|
79
|
+
prerelease: false
|
80
|
+
type: :development
|
81
|
+
requirement: *id004
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
85
|
+
requirements:
|
86
|
+
- - "="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
hash: 19
|
89
|
+
segments:
|
90
|
+
- 1
|
91
|
+
- 1
|
92
|
+
- 0
|
93
|
+
version: 1.1.0
|
94
|
+
name: merb
|
95
|
+
prerelease: false
|
96
|
+
type: :development
|
97
|
+
requirement: *id005
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
101
|
+
requirements:
|
102
|
+
- - "="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
hash: 27
|
105
|
+
segments:
|
106
|
+
- 1
|
107
|
+
- 3
|
108
|
+
- 0
|
109
|
+
version: 1.3.0
|
110
|
+
name: rspec
|
111
|
+
prerelease: false
|
112
|
+
type: :development
|
113
|
+
requirement: *id006
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
117
|
+
requirements:
|
118
|
+
- - ">="
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
hash: 3
|
121
|
+
segments:
|
122
|
+
- 0
|
123
|
+
version: "0"
|
124
|
+
name: i18n
|
125
|
+
prerelease: false
|
126
|
+
type: :development
|
127
|
+
requirement: *id007
|
128
|
+
- !ruby/object:Gem::Dependency
|
129
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
130
|
+
none: false
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
hash: 3
|
135
|
+
segments:
|
136
|
+
- 0
|
137
|
+
version: "0"
|
138
|
+
name: ruby-debug
|
139
|
+
prerelease: false
|
140
|
+
type: :development
|
141
|
+
requirement: *id008
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
144
|
+
none: false
|
145
|
+
requirements:
|
146
|
+
- - "="
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
hash: 5
|
149
|
+
segments:
|
150
|
+
- 3
|
151
|
+
- 0
|
152
|
+
- 1
|
153
|
+
version: 3.0.1
|
154
|
+
name: redis
|
155
|
+
prerelease: false
|
156
|
+
type: :runtime
|
157
|
+
requirement: *id009
|
158
|
+
description: Namespaced Rack::Session, Rack::Cache, I18n and cache Redis stores for Ruby web frameworks.
|
159
|
+
email: brianp@instructure.com
|
160
|
+
executables: []
|
161
|
+
|
162
|
+
extensions: []
|
163
|
+
|
164
|
+
extra_rdoc_files:
|
165
|
+
- README.md
|
166
|
+
files:
|
167
|
+
- .travis.yml
|
168
|
+
- CHANGELOG
|
169
|
+
- Gemfile
|
170
|
+
- MIT-LICENSE
|
171
|
+
- README.md
|
172
|
+
- Rakefile
|
173
|
+
- VERSION
|
174
|
+
- lib/action_controller/session/redis_session_store.rb
|
175
|
+
- lib/active_support/cache/redis_store.rb
|
176
|
+
- lib/cache/merb/redis_store.rb
|
177
|
+
- lib/cache/sinatra/redis_store.rb
|
178
|
+
- lib/i18n/backend/redis.rb
|
179
|
+
- lib/rack/cache/redis_entitystore.rb
|
180
|
+
- lib/rack/cache/redis_metastore.rb
|
181
|
+
- lib/rack/session/merb.rb
|
182
|
+
- lib/rack/session/redis.rb
|
183
|
+
- lib/redis-store.rb
|
184
|
+
- lib/redis/distributed_store.rb
|
185
|
+
- lib/redis/factory.rb
|
186
|
+
- lib/redis/store.rb
|
187
|
+
- lib/redis/store/interface.rb
|
188
|
+
- lib/redis/store/marshalling.rb
|
189
|
+
- lib/redis/store/namespace.rb
|
190
|
+
- lib/redis/store/ttl.rb
|
191
|
+
- lib/redis/store/version.rb
|
192
|
+
- spec/action_controller/session/redis_session_store_spec.rb
|
193
|
+
- spec/active_support/cache/redis_store_spec.rb
|
194
|
+
- spec/cache/merb/redis_store_spec.rb
|
195
|
+
- spec/cache/sinatra/redis_store_spec.rb
|
196
|
+
- spec/config/node-one.conf
|
197
|
+
- spec/config/node-two.conf
|
198
|
+
- spec/config/redis.conf
|
199
|
+
- spec/i18n/backend/redis_spec.rb
|
200
|
+
- spec/rack/cache/entitystore/pony.jpg
|
201
|
+
- spec/rack/cache/entitystore/redis_spec.rb
|
202
|
+
- spec/rack/cache/metastore/redis_spec.rb
|
203
|
+
- spec/rack/session/redis_spec.rb
|
204
|
+
- spec/redis/distributed_store_spec.rb
|
205
|
+
- spec/redis/factory_spec.rb
|
206
|
+
- spec/redis/store/interface_spec.rb
|
207
|
+
- spec/redis/store/marshalling_spec.rb
|
208
|
+
- spec/redis/store/namespace_spec.rb
|
209
|
+
- spec/redis/store/version_spec.rb
|
210
|
+
- spec/redis/store_spec.rb
|
211
|
+
- spec/spec_helper.rb
|
212
|
+
- tasks/redis.tasks.rb
|
213
|
+
homepage: http://github.com/instructure/redis-store
|
214
|
+
licenses: []
|
215
|
+
|
216
|
+
post_install_message:
|
217
|
+
rdoc_options: []
|
218
|
+
|
219
|
+
require_paths:
|
220
|
+
- lib
|
221
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
222
|
+
none: false
|
223
|
+
requirements:
|
224
|
+
- - ">="
|
225
|
+
- !ruby/object:Gem::Version
|
226
|
+
hash: 3
|
227
|
+
segments:
|
228
|
+
- 0
|
229
|
+
version: "0"
|
230
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
231
|
+
none: false
|
232
|
+
requirements:
|
233
|
+
- - ">"
|
234
|
+
- !ruby/object:Gem::Version
|
235
|
+
hash: 25
|
236
|
+
segments:
|
237
|
+
- 1
|
238
|
+
- 3
|
239
|
+
- 1
|
240
|
+
version: 1.3.1
|
241
|
+
requirements: []
|
242
|
+
|
243
|
+
rubyforge_project:
|
244
|
+
rubygems_version: 1.8.11
|
245
|
+
signing_key:
|
246
|
+
specification_version: 3
|
247
|
+
summary: Namespaced Rack::Session, Rack::Cache, I18n and cache Redis stores for Ruby web frameworks.
|
248
|
+
test_files: []
|
249
|
+
|