redis-actionpack-json 4.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 +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: []