redis-store-json 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. data/.gitignore +15 -0
  2. data/.travis.yml +7 -0
  3. data/CHANGELOG +450 -0
  4. data/README.md +23 -0
  5. data/redis-actionpack-json/.gitignore +4 -0
  6. data/redis-actionpack-json/Gemfile +6 -0
  7. data/redis-actionpack-json/MIT-LICENSE +20 -0
  8. data/redis-actionpack-json/Rakefile +8 -0
  9. data/redis-actionpack-json/lib/action_dispatch/middleware/session/redis_store_json.rb +24 -0
  10. data/redis-actionpack-json/lib/redis-actionpack-json.rb +4 -0
  11. data/redis-actionpack-json/lib/redis/actionpack/version.rb +5 -0
  12. data/redis-actionpack-json/redis-actionpack-json.gemspec +32 -0
  13. data/redis-actionpack-json/test/dummy/.gitignore +1 -0
  14. data/redis-actionpack-json/test/dummy/Rakefile +7 -0
  15. data/redis-actionpack-json/test/dummy/app/controllers/test_controller.rb +37 -0
  16. data/redis-actionpack-json/test/dummy/config.ru +4 -0
  17. data/redis-actionpack-json/test/dummy/config/application.rb +29 -0
  18. data/redis-actionpack-json/test/dummy/config/boot.rb +10 -0
  19. data/redis-actionpack-json/test/dummy/config/environment.rb +5 -0
  20. data/redis-actionpack-json/test/dummy/config/initializers/secret_token.rb +7 -0
  21. data/redis-actionpack-json/test/dummy/config/initializers/session_store.rb +11 -0
  22. data/redis-actionpack-json/test/dummy/config/routes.rb +3 -0
  23. data/redis-actionpack-json/test/dummy/script/rails +6 -0
  24. data/redis-actionpack-json/test/fixtures/session_autoload_test/session_autoload_test/foo.rb +10 -0
  25. data/redis-actionpack-json/test/integration/redis_store_integration_test.rb +130 -0
  26. data/redis-actionpack-json/test/integration/redis_store_json_integration_test.rb +130 -0
  27. data/redis-actionpack-json/test/redis/actionpack/version_test.rb +7 -0
  28. data/redis-actionpack-json/test/test_helper.rb +23 -0
  29. data/redis-rack-json/.gitignore +5 -0
  30. data/redis-rack-json/Gemfile +5 -0
  31. data/redis-rack-json/MIT-LICENSE +20 -0
  32. data/redis-rack-json/Rakefile +8 -0
  33. data/redis-rack-json/lib/rack/session/redis.rb +69 -0
  34. data/redis-rack-json/lib/redis-rack-json.rb +3 -0
  35. data/redis-rack-json/lib/redis/rack/version.rb +6 -0
  36. data/redis-rack-json/redis-rack-json.gemspec +29 -0
  37. data/redis-rack-json/test/rack/session/redis_test.rb +289 -0
  38. data/redis-rack-json/test/redis/rack/version_test.rb +7 -0
  39. data/redis-rack-json/test/test_helper.rb +7 -0
  40. data/redis-store-json/Gemfile +4 -0
  41. data/redis-store-json/MIT-LICENSE +20 -0
  42. data/redis-store-json/Rakefile +7 -0
  43. data/redis-store-json/lib/redis-store-json.rb +11 -0
  44. data/redis-store-json/lib/redis/distributed_store.rb +46 -0
  45. data/redis-store-json/lib/redis/factory.rb +41 -0
  46. data/redis-store-json/lib/redis/store.rb +47 -0
  47. data/redis-store-json/lib/redis/store/interface.rb +21 -0
  48. data/redis-store-json/lib/redis/store/namespace.rb +66 -0
  49. data/redis-store-json/lib/redis/store/strategy.rb +60 -0
  50. data/redis-store-json/lib/redis/store/strategy/json.rb +49 -0
  51. data/redis-store-json/lib/redis/store/strategy/json_session.rb +67 -0
  52. data/redis-store-json/lib/redis/store/strategy/marshal.rb +16 -0
  53. data/redis-store-json/lib/redis/store/strategy/yaml.rb +16 -0
  54. data/redis-store-json/lib/redis/store/ttl.rb +37 -0
  55. data/redis-store-json/lib/redis/store/version.rb +5 -0
  56. data/redis-store-json/lib/tasks/redis.tasks.rb +167 -0
  57. data/redis-store-json/redis-store-json.gemspec +29 -0
  58. data/redis-store-json/test/config/node-one.conf +46 -0
  59. data/redis-store-json/test/config/node-two.conf +46 -0
  60. data/redis-store-json/test/config/redis.conf +46 -0
  61. data/redis-store-json/test/redis/distributed_store_test.rb +53 -0
  62. data/redis-store-json/test/redis/factory_test.rb +120 -0
  63. data/redis-store-json/test/redis/store/interface_test.rb +27 -0
  64. data/redis-store-json/test/redis/store/namespace_test.rb +103 -0
  65. data/redis-store-json/test/redis/store/strategy/json_session_test.rb +160 -0
  66. data/redis-store-json/test/redis/store/strategy/json_test.rb +108 -0
  67. data/redis-store-json/test/redis/store/strategy/marshal_test.rb +121 -0
  68. data/redis-store-json/test/redis/store/strategy/yaml_test.rb +105 -0
  69. data/redis-store-json/test/redis/store/ttl_test.rb +107 -0
  70. data/redis-store-json/test/redis/store/version_test.rb +7 -0
  71. data/redis-store-json/test/redis/store_test.rb +45 -0
  72. data/redis-store-json/test/test_helper.rb +22 -0
  73. metadata +215 -0
@@ -0,0 +1,121 @@
1
+ require 'test_helper'
2
+
3
+ describe "Redis::Store::Strategy::Marshal" do
4
+ def setup
5
+ @store = Redis::Store.new :strategy => :marshal
6
+ @rabbit = OpenStruct.new :name => "bunny"
7
+ @white_rabbit = OpenStruct.new :color => "white"
8
+ @store.set "rabbit", @rabbit
9
+ @store.del "rabbit2"
10
+ end
11
+
12
+ def teardown
13
+ @store.quit
14
+ end
15
+
16
+ it "unmarshals on get" do
17
+ @store.get("rabbit").must_equal(@rabbit)
18
+ end
19
+
20
+ it "marshals on set" do
21
+ @store.set "rabbit", @white_rabbit
22
+ @store.get("rabbit").must_equal(@white_rabbit)
23
+ end
24
+
25
+ if RUBY_VERSION.match /1\.9/
26
+ it "doesn't unmarshal on get if raw option is true" do
27
+ @store.get("rabbit", :raw => true).must_equal("\x04\bU:\x0FOpenStruct{\x06:\tnameI\"\nbunny\x06:\x06EF")
28
+ end
29
+ else
30
+ it "doesn't unmarshal on get if raw option is true" do
31
+ @store.get("rabbit", :raw => true).must_equal("\004\bU:\017OpenStruct{\006:\tname\"\nbunny")
32
+ end
33
+ end
34
+
35
+ it "doesn't marshal on set if raw option is true" do
36
+ @store.set "rabbit", @white_rabbit, :raw => true
37
+ @store.get("rabbit", :raw => true).must_equal(%(#<OpenStruct color="white">))
38
+ end
39
+
40
+ it "doesn't unmarshal if get returns an empty string" do
41
+ @store.set "empty_string", ""
42
+ @store.get("empty_string").must_equal("")
43
+ # TODO use a meaningful Exception
44
+ # lambda { @store.get("empty_string").must_equal("") }.wont_raise Exception
45
+ end
46
+
47
+ it "doesn't set an object if already exist" do
48
+ @store.setnx "rabbit", @white_rabbit
49
+ @store.get("rabbit").must_equal(@rabbit)
50
+ end
51
+
52
+ it "marshals on set unless exists" do
53
+ @store.setnx "rabbit2", @white_rabbit
54
+ @store.get("rabbit2").must_equal(@white_rabbit)
55
+ end
56
+
57
+ it "doesn't marshal on set unless exists if raw option is true" do
58
+ @store.setnx "rabbit2", @white_rabbit, :raw => true
59
+ @store.get("rabbit2", :raw => true).must_equal(%(#<OpenStruct color="white">))
60
+ end
61
+
62
+ it "marshals on set expire" do
63
+ @store.setex "rabbit2", 1, @white_rabbit
64
+ @store.get("rabbit2").must_equal(@white_rabbit)
65
+ sleep 2
66
+ @store.get("rabbit2").must_be_nil
67
+ end
68
+
69
+ it "doesn't unmarshal on multi get" do
70
+ @store.set "rabbit2", @white_rabbit
71
+ rabbit, rabbit2 = @store.mget "rabbit", "rabbit2"
72
+ rabbit.must_equal(@rabbit)
73
+ rabbit2.must_equal(@white_rabbit)
74
+ end
75
+
76
+ if RUBY_VERSION.match /1\.9/
77
+ it "doesn't unmarshal on multi get if raw option is true" do
78
+ @store.set "rabbit2", @white_rabbit
79
+ rabbit, rabbit2 = @store.mget "rabbit", "rabbit2", :raw => true
80
+ rabbit.must_equal("\x04\bU:\x0FOpenStruct{\x06:\tnameI\"\nbunny\x06:\x06EF")
81
+ rabbit2.must_equal("\x04\bU:\x0FOpenStruct{\x06:\ncolorI\"\nwhite\x06:\x06EF")
82
+ end
83
+ else
84
+ it "doesn't unmarshal on multi get if raw option is true" do
85
+ @store.set "rabbit2", @white_rabbit
86
+ rabbit, rabbit2 = @store.mget "rabbit", "rabbit2", :raw => true
87
+ rabbit.must_equal("\004\bU:\017OpenStruct{\006:\tname\"\nbunny")
88
+ rabbit2.must_equal("\004\bU:\017OpenStruct{\006:\ncolor\"\nwhite")
89
+ end
90
+ end
91
+
92
+ describe "binary safety" do
93
+ before do
94
+ @utf8_key = [51339].pack("U*")
95
+ @ascii_string = [128].pack("C*")
96
+ @ascii_rabbit = OpenStruct.new(:name => @ascii_string)
97
+ end
98
+
99
+ it "marshals objects" do
100
+ @store.set(@utf8_key, @ascii_rabbit)
101
+ @store.get(@utf8_key).must_equal(@ascii_rabbit)
102
+ end
103
+
104
+ it "gets and sets raw values" do
105
+ @store.set(@utf8_key, @ascii_string, :raw => true)
106
+ @store.get(@utf8_key, :raw => true).bytes.to_a.must_equal(@ascii_string.bytes.to_a)
107
+ end
108
+
109
+ it "marshals objects on setnx" do
110
+ @store.del(@utf8_key)
111
+ @store.setnx(@utf8_key, @ascii_rabbit)
112
+ @store.get(@utf8_key).must_equal(@ascii_rabbit)
113
+ end
114
+
115
+ it "gets and sets raw values on setnx" do
116
+ @store.del(@utf8_key)
117
+ @store.setnx(@utf8_key, @ascii_string, :raw => true)
118
+ @store.get(@utf8_key, :raw => true).bytes.to_a.must_equal(@ascii_string.bytes.to_a)
119
+ end
120
+ end if defined?(Encoding)
121
+ end
@@ -0,0 +1,105 @@
1
+ require 'test_helper'
2
+
3
+ describe "Redis::Store::Strategy::Yaml" do
4
+ def setup
5
+ @store = Redis::Store.new :strategy => :yaml
6
+ @rabbit = OpenStruct.new :name => "bunny"
7
+ @white_rabbit = OpenStruct.new :color => "white"
8
+ @store.set "rabbit", @rabbit
9
+ @store.del "rabbit2"
10
+ end
11
+
12
+ def teardown
13
+ @store.quit
14
+ end
15
+
16
+ # Psych::YAML had a bug in which it could not properly serialize binary Strings
17
+ # in Ruby 1.9.3. The issue was addressed in 1.9.3-p125.
18
+ def self.binary_encodable_yaml?
19
+ RUBY_VERSION != '1.9.3' or RUBY_PATCHLEVEL >= 125
20
+ end
21
+
22
+ it "unmarshals on get" do
23
+ @store.get("rabbit").must_equal(@rabbit)
24
+ end
25
+
26
+ it "marshals on set" do
27
+ @store.set "rabbit", @white_rabbit
28
+ @store.get("rabbit").must_equal(@white_rabbit)
29
+ end
30
+
31
+ it "doesn't unmarshal on get if raw option is true" do
32
+ @store.get("rabbit", :raw => true).must_equal("--- !ruby/object:OpenStruct\ntable:\n :name: bunny\n")
33
+ end
34
+
35
+ it "doesn't marshal on set if raw option is true" do
36
+ @store.set "rabbit", @white_rabbit, :raw => true
37
+ @store.get("rabbit", :raw => true).must_equal(%(#<OpenStruct color=\"white\">))
38
+ end
39
+
40
+ it "doesn't set an object if already exist" do
41
+ @store.setnx "rabbit", @white_rabbit
42
+ @store.get("rabbit").must_equal(@rabbit)
43
+ end
44
+
45
+ it "marshals on set unless exists" do
46
+ @store.setnx "rabbit2", @white_rabbit
47
+ @store.get("rabbit2").must_equal(@white_rabbit)
48
+ end
49
+
50
+ it "doesn't marshal on set unless exists if raw option is true" do
51
+ @store.setnx "rabbit2", @white_rabbit, :raw => true
52
+ @store.get("rabbit2", :raw => true).must_equal(%(#<OpenStruct color=\"white\">))
53
+ end
54
+
55
+ it "marshals on set expire" do
56
+ @store.setex "rabbit2", 1, @white_rabbit
57
+ @store.get("rabbit2").must_equal(@white_rabbit)
58
+ sleep 2
59
+ @store.get("rabbit2").must_be_nil
60
+ end
61
+
62
+ it "doesn't unmarshal on multi get" do
63
+ @store.set "rabbit2", @white_rabbit
64
+ rabbit, rabbit2 = @store.mget "rabbit", "rabbit2"
65
+ rabbit.must_equal(@rabbit)
66
+ rabbit2.must_equal(@white_rabbit)
67
+ end
68
+
69
+ it "doesn't unmarshal on multi get if raw option is true" do
70
+ @store.set "rabbit2", @white_rabbit
71
+ rabbit, rabbit2 = @store.mget "rabbit", "rabbit2", :raw => true
72
+ rabbit.must_equal("--- !ruby/object:OpenStruct\ntable:\n :name: bunny\n")
73
+ rabbit2.must_equal("--- !ruby/object:OpenStruct\ntable:\n :color: white\n")
74
+ end
75
+
76
+ describe "binary safety" do
77
+ before do
78
+ @utf8_key = [51339].pack("U*")
79
+ @ascii_string = [128].pack("C*")
80
+ @ascii_rabbit = OpenStruct.new(:name => @ascii_string)
81
+ end
82
+
83
+ it "marshals objects" do
84
+ @store.set(@utf8_key, @ascii_rabbit)
85
+ @store.get(@utf8_key).must_equal(@ascii_rabbit)
86
+ end
87
+
88
+ it "gets and sets raw values" do
89
+ @store.set(@utf8_key, @ascii_string, :raw => true)
90
+ @store.get(@utf8_key, :raw => true).bytes.to_a.must_equal(@ascii_string.bytes.to_a)
91
+ end
92
+
93
+ it "marshals objects on setnx" do
94
+ @store.del(@utf8_key)
95
+ @store.setnx(@utf8_key, @ascii_rabbit)
96
+ @store.get(@utf8_key).must_equal(@ascii_rabbit)
97
+ end
98
+
99
+ it "gets and sets raw values on setnx" do
100
+ @store.del(@utf8_key)
101
+ @store.setnx(@utf8_key, @ascii_string, :raw => true)
102
+ @store.get(@utf8_key, :raw => true).bytes.to_a.must_equal(@ascii_string.bytes.to_a)
103
+ end
104
+ end if defined?(Encoding) && binary_encodable_yaml?
105
+ end
@@ -0,0 +1,107 @@
1
+ require 'test_helper'
2
+
3
+ class MockRedis
4
+ def initialize
5
+ @sets = []
6
+ @setexes = []
7
+ @setnxes = []
8
+ @expires = []
9
+ end
10
+
11
+ def set(*a)
12
+ @sets << a
13
+ end
14
+
15
+ def has_set?(*a)
16
+ @sets.include?(a)
17
+ end
18
+
19
+ def setex(*a)
20
+ @setexes << a
21
+ end
22
+
23
+ def has_setex?(*a)
24
+ @setexes.include?(a)
25
+ end
26
+
27
+ def setnx(*a)
28
+ @setnxes << a
29
+ end
30
+
31
+ def has_setnx?(*a)
32
+ @setnxes.include?(a)
33
+ end
34
+
35
+ def multi(&block)
36
+ instance_eval do
37
+ def setnx(*a)
38
+ @setnxes << a
39
+ end
40
+
41
+ block.call
42
+ end
43
+ end
44
+
45
+ def expire(*a)
46
+ @expires << a
47
+ end
48
+
49
+ def has_expire?(*a)
50
+ @expires.include?(a)
51
+ end
52
+
53
+ end
54
+
55
+ class MockTtlStore < MockRedis
56
+ include Redis::Store::Ttl
57
+ end
58
+
59
+ describe MockTtlStore do
60
+ let(:key) { 'hello' }
61
+ let(:value) { 'value' }
62
+ let(:options) { { :expire_after => 3600 } }
63
+ let(:redis) { MockTtlStore.new }
64
+
65
+ describe '#set' do
66
+ describe 'without options' do
67
+ it 'must call super with key and value' do
68
+ redis.set(key, value)
69
+ redis.has_set?(key, value).must_equal true
70
+ end
71
+ end
72
+
73
+ describe 'with options' do
74
+ it 'must call setex with proper expiry and set raw to true' do
75
+ redis.set(key, value, options)
76
+ redis.has_setex?(key, options[:expire_after], value, :raw => true).must_equal true
77
+ end
78
+ end
79
+ end
80
+
81
+ describe '#setnx' do
82
+ describe 'without expiry' do
83
+ it 'must call super with key and value' do
84
+ redis.setnx(key, value)
85
+ redis.has_setnx?(key, value)
86
+ end
87
+
88
+ it 'must not call expire' do
89
+ MockTtlStore.any_instance.expects(:expire).never
90
+
91
+ redis.setnx(key, value)
92
+ end
93
+ end
94
+
95
+ describe 'with expiry' do
96
+ it 'must call setnx with key and value and set raw to true' do
97
+ redis.setnx(key, value, options)
98
+ redis.has_setnx?(key, value, :raw => true).must_equal true
99
+ end
100
+
101
+ it 'must call expire' do
102
+ redis.setnx(key, value, options)
103
+ redis.has_expire?(key, options[:expire_after]).must_equal true
104
+ end
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ describe Redis::Store::VERSION do
4
+ it "must be equal to 1.1.3" do
5
+ Redis::Store::VERSION.must_equal '1.1.3'
6
+ end
7
+ end
@@ -0,0 +1,45 @@
1
+ require 'test_helper'
2
+
3
+ describe Redis::Store do
4
+ before do
5
+ @store = Redis::Store.new
6
+ @client = @store.instance_variable_get(:@client)
7
+ end
8
+
9
+ it "returns useful informations about the server" do
10
+ @store.to_s.must_equal("Redis Client connected to #{@client.host}:#{@client.port} against DB #{@client.db}")
11
+ end
12
+
13
+ it "must force reconnection" do
14
+ @client.expects(:reconnect)
15
+ @store.reconnect
16
+ end
17
+
18
+ describe '#set' do
19
+ describe 'with expiry' do
20
+ let(:key) { 'key' }
21
+ let(:value) { 'value' }
22
+ let(:options) { { :expire_after => 3600 } }
23
+
24
+ it 'must not double marshall' do
25
+ Marshal.expects(:dump).once
26
+
27
+ @store.set(key, value, options)
28
+ end
29
+ end
30
+ end
31
+
32
+ describe '#setnx' do
33
+ describe 'with expiry' do
34
+ let(:key) { 'key' }
35
+ let(:value) { 'value' }
36
+ let(:options) { { :expire_after => 3600 } }
37
+
38
+ it 'must not double marshall' do
39
+ Marshal.expects(:dump).once
40
+
41
+ @store.setnx(key, value, options)
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,22 @@
1
+ Bundler.setup
2
+ gem 'minitest'
3
+ require 'minitest/spec'
4
+ require 'minitest/autorun'
5
+ require 'mocha/setup'
6
+ require 'redis'
7
+ require 'redis-store-json'
8
+
9
+ $DEBUG = ENV["DEBUG"] === "true"
10
+
11
+ Redis::DistributedStore.send(:class_variable_set, :@@timeout, 30)
12
+
13
+ # http://mentalized.net/journal/2010/04/02/suppress_warnings_from_ruby/
14
+ module Kernel
15
+ def suppress_warnings
16
+ original_verbosity = $VERBOSE
17
+ $VERBOSE = nil
18
+ result = yield
19
+ $VERBOSE = original_verbosity
20
+ return result
21
+ end
22
+ end
metadata ADDED
@@ -0,0 +1,215 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: redis-store-json
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Nathan Tsoi
9
+ - Luca Guidi
10
+ - Matt Horan
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2013-05-28 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: redis
18
+ requirement: !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ~>
22
+ - !ruby/object:Gem::Version
23
+ version: 3.0.0
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ~>
30
+ - !ruby/object:Gem::Version
31
+ version: 3.0.0
32
+ - !ruby/object:Gem::Dependency
33
+ name: rake
34
+ requirement: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ~>
38
+ - !ruby/object:Gem::Version
39
+ version: '10'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '10'
48
+ - !ruby/object:Gem::Dependency
49
+ name: bundler
50
+ requirement: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: '1.2'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ~>
62
+ - !ruby/object:Gem::Version
63
+ version: '1.2'
64
+ - !ruby/object:Gem::Dependency
65
+ name: mocha
66
+ requirement: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ~>
70
+ - !ruby/object:Gem::Version
71
+ version: 0.13.0
72
+ type: :development
73
+ prerelease: false
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ~>
78
+ - !ruby/object:Gem::Version
79
+ version: 0.13.0
80
+ - !ruby/object:Gem::Dependency
81
+ name: minitest
82
+ requirement: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: 4.3.1
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ~>
94
+ - !ruby/object:Gem::Version
95
+ version: 4.3.1
96
+ - !ruby/object:Gem::Dependency
97
+ name: git
98
+ requirement: !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: 1.2.5
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ~>
110
+ - !ruby/object:Gem::Version
111
+ version: 1.2.5
112
+ description: Rails 4 Redis session store for ActionPack with JSON serialization
113
+ email:
114
+ - nathan@vertile.com
115
+ executables: []
116
+ extensions: []
117
+ extra_rdoc_files: []
118
+ files:
119
+ - .gitignore
120
+ - .travis.yml
121
+ - CHANGELOG
122
+ - README.md
123
+ - redis-actionpack-json/.gitignore
124
+ - redis-actionpack-json/Gemfile
125
+ - redis-actionpack-json/MIT-LICENSE
126
+ - redis-actionpack-json/Rakefile
127
+ - redis-actionpack-json/lib/action_dispatch/middleware/session/redis_store_json.rb
128
+ - redis-actionpack-json/lib/redis-actionpack-json.rb
129
+ - redis-actionpack-json/lib/redis/actionpack/version.rb
130
+ - redis-actionpack-json/redis-actionpack-json.gemspec
131
+ - redis-actionpack-json/test/dummy/.gitignore
132
+ - redis-actionpack-json/test/dummy/Rakefile
133
+ - redis-actionpack-json/test/dummy/app/controllers/test_controller.rb
134
+ - redis-actionpack-json/test/dummy/config.ru
135
+ - redis-actionpack-json/test/dummy/config/application.rb
136
+ - redis-actionpack-json/test/dummy/config/boot.rb
137
+ - redis-actionpack-json/test/dummy/config/environment.rb
138
+ - redis-actionpack-json/test/dummy/config/initializers/secret_token.rb
139
+ - redis-actionpack-json/test/dummy/config/initializers/session_store.rb
140
+ - redis-actionpack-json/test/dummy/config/routes.rb
141
+ - redis-actionpack-json/test/dummy/script/rails
142
+ - redis-actionpack-json/test/fixtures/session_autoload_test/session_autoload_test/foo.rb
143
+ - redis-actionpack-json/test/integration/redis_store_integration_test.rb
144
+ - redis-actionpack-json/test/integration/redis_store_json_integration_test.rb
145
+ - redis-actionpack-json/test/redis/actionpack/version_test.rb
146
+ - redis-actionpack-json/test/test_helper.rb
147
+ - redis-rack-json/.gitignore
148
+ - redis-rack-json/Gemfile
149
+ - redis-rack-json/MIT-LICENSE
150
+ - redis-rack-json/Rakefile
151
+ - redis-rack-json/lib/rack/session/redis.rb
152
+ - redis-rack-json/lib/redis-rack-json.rb
153
+ - redis-rack-json/lib/redis/rack/version.rb
154
+ - redis-rack-json/redis-rack-json.gemspec
155
+ - redis-rack-json/test/rack/session/redis_test.rb
156
+ - redis-rack-json/test/redis/rack/version_test.rb
157
+ - redis-rack-json/test/test_helper.rb
158
+ - redis-store-json/Gemfile
159
+ - redis-store-json/MIT-LICENSE
160
+ - redis-store-json/Rakefile
161
+ - redis-store-json/lib/redis-store-json.rb
162
+ - redis-store-json/lib/redis/distributed_store.rb
163
+ - redis-store-json/lib/redis/factory.rb
164
+ - redis-store-json/lib/redis/store.rb
165
+ - redis-store-json/lib/redis/store/interface.rb
166
+ - redis-store-json/lib/redis/store/namespace.rb
167
+ - redis-store-json/lib/redis/store/strategy.rb
168
+ - redis-store-json/lib/redis/store/strategy/json.rb
169
+ - redis-store-json/lib/redis/store/strategy/json_session.rb
170
+ - redis-store-json/lib/redis/store/strategy/marshal.rb
171
+ - redis-store-json/lib/redis/store/strategy/yaml.rb
172
+ - redis-store-json/lib/redis/store/ttl.rb
173
+ - redis-store-json/lib/redis/store/version.rb
174
+ - redis-store-json/lib/tasks/redis.tasks.rb
175
+ - redis-store-json/redis-store-json.gemspec
176
+ - redis-store-json/test/config/node-one.conf
177
+ - redis-store-json/test/config/node-two.conf
178
+ - redis-store-json/test/config/redis.conf
179
+ - redis-store-json/test/redis/distributed_store_test.rb
180
+ - redis-store-json/test/redis/factory_test.rb
181
+ - redis-store-json/test/redis/store/interface_test.rb
182
+ - redis-store-json/test/redis/store/namespace_test.rb
183
+ - redis-store-json/test/redis/store/strategy/json_session_test.rb
184
+ - redis-store-json/test/redis/store/strategy/json_test.rb
185
+ - redis-store-json/test/redis/store/strategy/marshal_test.rb
186
+ - redis-store-json/test/redis/store/strategy/yaml_test.rb
187
+ - redis-store-json/test/redis/store/ttl_test.rb
188
+ - redis-store-json/test/redis/store/version_test.rb
189
+ - redis-store-json/test/redis/store_test.rb
190
+ - redis-store-json/test/test_helper.rb
191
+ homepage: http://github.com/nathantsoi/redis-store-json
192
+ licenses: []
193
+ post_install_message:
194
+ rdoc_options: []
195
+ require_paths:
196
+ - lib
197
+ required_ruby_version: !ruby/object:Gem::Requirement
198
+ none: false
199
+ requirements:
200
+ - - ! '>='
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ required_rubygems_version: !ruby/object:Gem::Requirement
204
+ none: false
205
+ requirements:
206
+ - - ! '>='
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ requirements: []
210
+ rubyforge_project: redis-store-json
211
+ rubygems_version: 1.8.25
212
+ signing_key:
213
+ specification_version: 3
214
+ summary: Rails 4 Redis session store for ActionPack with JSON serialization
215
+ test_files: []