redis-actionpack-json 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
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 +279 -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,279 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: redis-actionpack-json
3
+ version: !ruby/object:Gem::Version
4
+ version: 4.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-store-json
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: redis-rack-json
34
+ requirement: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ~>
38
+ - !ruby/object:Gem::Version
39
+ version: 1.5.2
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 1.5.2
48
+ - !ruby/object:Gem::Dependency
49
+ name: actionpack
50
+ requirement: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: 4.0.0.rc1
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ~>
62
+ - !ruby/object:Gem::Version
63
+ version: 4.0.0.rc1
64
+ - !ruby/object:Gem::Dependency
65
+ name: rake
66
+ requirement: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ~>
70
+ - !ruby/object:Gem::Version
71
+ version: '10'
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: '10'
80
+ - !ruby/object:Gem::Dependency
81
+ name: bundler
82
+ requirement: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: '1.2'
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: '1.2'
96
+ - !ruby/object:Gem::Dependency
97
+ name: mocha
98
+ requirement: !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: 0.13.0
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: 0.13.0
112
+ - !ruby/object:Gem::Dependency
113
+ name: minitest
114
+ requirement: !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ~>
118
+ - !ruby/object:Gem::Version
119
+ version: 4.3.1
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ none: false
124
+ requirements:
125
+ - - ~>
126
+ - !ruby/object:Gem::Version
127
+ version: 4.3.1
128
+ - !ruby/object:Gem::Dependency
129
+ name: tzinfo
130
+ requirement: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ type: :development
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ none: false
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ - !ruby/object:Gem::Dependency
145
+ name: mini_specunit
146
+ requirement: !ruby/object:Gem::Requirement
147
+ none: false
148
+ requirements:
149
+ - - ! '>='
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ none: false
156
+ requirements:
157
+ - - ! '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ - !ruby/object:Gem::Dependency
161
+ name: mini_backtrace
162
+ requirement: !ruby/object:Gem::Requirement
163
+ none: false
164
+ requirements:
165
+ - - ! '>='
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ type: :development
169
+ prerelease: false
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ! '>='
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ description: Rails 4 Redis session store for ActionPack with JSON serialization
177
+ email:
178
+ - nathan@vertile.com
179
+ executables: []
180
+ extensions: []
181
+ extra_rdoc_files: []
182
+ files:
183
+ - .gitignore
184
+ - .travis.yml
185
+ - CHANGELOG
186
+ - README.md
187
+ - redis-actionpack-json/.gitignore
188
+ - redis-actionpack-json/Gemfile
189
+ - redis-actionpack-json/MIT-LICENSE
190
+ - redis-actionpack-json/Rakefile
191
+ - redis-actionpack-json/lib/action_dispatch/middleware/session/redis_store_json.rb
192
+ - redis-actionpack-json/lib/redis-actionpack-json.rb
193
+ - redis-actionpack-json/lib/redis/actionpack/version.rb
194
+ - redis-actionpack-json/redis-actionpack-json.gemspec
195
+ - redis-actionpack-json/test/dummy/.gitignore
196
+ - redis-actionpack-json/test/dummy/Rakefile
197
+ - redis-actionpack-json/test/dummy/app/controllers/test_controller.rb
198
+ - redis-actionpack-json/test/dummy/config.ru
199
+ - redis-actionpack-json/test/dummy/config/application.rb
200
+ - redis-actionpack-json/test/dummy/config/boot.rb
201
+ - redis-actionpack-json/test/dummy/config/environment.rb
202
+ - redis-actionpack-json/test/dummy/config/initializers/secret_token.rb
203
+ - redis-actionpack-json/test/dummy/config/initializers/session_store.rb
204
+ - redis-actionpack-json/test/dummy/config/routes.rb
205
+ - redis-actionpack-json/test/dummy/script/rails
206
+ - redis-actionpack-json/test/fixtures/session_autoload_test/session_autoload_test/foo.rb
207
+ - redis-actionpack-json/test/integration/redis_store_integration_test.rb
208
+ - redis-actionpack-json/test/integration/redis_store_json_integration_test.rb
209
+ - redis-actionpack-json/test/redis/actionpack/version_test.rb
210
+ - redis-actionpack-json/test/test_helper.rb
211
+ - redis-rack-json/.gitignore
212
+ - redis-rack-json/Gemfile
213
+ - redis-rack-json/MIT-LICENSE
214
+ - redis-rack-json/Rakefile
215
+ - redis-rack-json/lib/rack/session/redis.rb
216
+ - redis-rack-json/lib/redis-rack-json.rb
217
+ - redis-rack-json/lib/redis/rack/version.rb
218
+ - redis-rack-json/redis-rack-json.gemspec
219
+ - redis-rack-json/test/rack/session/redis_test.rb
220
+ - redis-rack-json/test/redis/rack/version_test.rb
221
+ - redis-rack-json/test/test_helper.rb
222
+ - redis-store-json/Gemfile
223
+ - redis-store-json/MIT-LICENSE
224
+ - redis-store-json/Rakefile
225
+ - redis-store-json/lib/redis-store-json.rb
226
+ - redis-store-json/lib/redis/distributed_store.rb
227
+ - redis-store-json/lib/redis/factory.rb
228
+ - redis-store-json/lib/redis/store.rb
229
+ - redis-store-json/lib/redis/store/interface.rb
230
+ - redis-store-json/lib/redis/store/namespace.rb
231
+ - redis-store-json/lib/redis/store/strategy.rb
232
+ - redis-store-json/lib/redis/store/strategy/json.rb
233
+ - redis-store-json/lib/redis/store/strategy/json_session.rb
234
+ - redis-store-json/lib/redis/store/strategy/marshal.rb
235
+ - redis-store-json/lib/redis/store/strategy/yaml.rb
236
+ - redis-store-json/lib/redis/store/ttl.rb
237
+ - redis-store-json/lib/redis/store/version.rb
238
+ - redis-store-json/lib/tasks/redis.tasks.rb
239
+ - redis-store-json/redis-store-json.gemspec
240
+ - redis-store-json/test/config/node-one.conf
241
+ - redis-store-json/test/config/node-two.conf
242
+ - redis-store-json/test/config/redis.conf
243
+ - redis-store-json/test/redis/distributed_store_test.rb
244
+ - redis-store-json/test/redis/factory_test.rb
245
+ - redis-store-json/test/redis/store/interface_test.rb
246
+ - redis-store-json/test/redis/store/namespace_test.rb
247
+ - redis-store-json/test/redis/store/strategy/json_session_test.rb
248
+ - redis-store-json/test/redis/store/strategy/json_test.rb
249
+ - redis-store-json/test/redis/store/strategy/marshal_test.rb
250
+ - redis-store-json/test/redis/store/strategy/yaml_test.rb
251
+ - redis-store-json/test/redis/store/ttl_test.rb
252
+ - redis-store-json/test/redis/store/version_test.rb
253
+ - redis-store-json/test/redis/store_test.rb
254
+ - redis-store-json/test/test_helper.rb
255
+ homepage: http://github.com/nathantsoi/redis-store-json
256
+ licenses: []
257
+ post_install_message:
258
+ rdoc_options: []
259
+ require_paths:
260
+ - lib
261
+ required_ruby_version: !ruby/object:Gem::Requirement
262
+ none: false
263
+ requirements:
264
+ - - ! '>='
265
+ - !ruby/object:Gem::Version
266
+ version: '0'
267
+ required_rubygems_version: !ruby/object:Gem::Requirement
268
+ none: false
269
+ requirements:
270
+ - - ! '>='
271
+ - !ruby/object:Gem::Version
272
+ version: '0'
273
+ requirements: []
274
+ rubyforge_project: redis-actionpack-json
275
+ rubygems_version: 1.8.25
276
+ signing_key:
277
+ specification_version: 3
278
+ summary: Rails 4 Redis session store for ActionPack with JSON serialization
279
+ test_files: []