fault_tolerant_redis-activesupport 4.0.0 → 4.0.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9c294041252356e5f9da6aaae0afb056b72f9853
4
- data.tar.gz: 5ebe62c437f156ec1e8bfa072546fca3784fda20
3
+ metadata.gz: 4532b70a5ec5ce8ff27d08383b89731d69fa4092
4
+ data.tar.gz: b9c2c8148d91ea1e868b4c2008b72cb5916a8884
5
5
  SHA512:
6
- metadata.gz: 7e5d1629b9f420cedcd595c1dfaf7e17170636c678983029c839e8dd03ea8f0bf61be73d0313502f873f1e5d09c222782330be03dd96cdc848650a81b47b3153
7
- data.tar.gz: dc0042f8adb6655ac7d2b90d293ab41589c5ab323f84ada2f07e9e0d051b5995aabf8684a3756c8c9756cda5ed6af4168a09da9788b94d386ff37211aa658ace
6
+ metadata.gz: 28da90884df96978e424977916a33ba319665259510308cb0a7097e86b82e0949d9e42b69524a103dc19fe4bf3095e4ab4eccf7a46a486069b3e1847feebbd0d
7
+ data.tar.gz: d90d98bcf89b1eb37af91f3b1b5685d1f4bbafefc98a00e986b8891d08509679bb8e6a483ef3ebf2b5d5103e27241463a42a6d2758ccf745df047c45ee7af522
data/.gitignore CHANGED
@@ -1,3 +1,9 @@
1
1
  Gemfile.lock
2
2
  *.gem
3
3
  tmp/
4
+
5
+ _builds
6
+ _projects
7
+ _steps
8
+
9
+ dump.rdb
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ rails-redis_tolerant_cache_store
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.2.3
data/README.md CHANGED
@@ -1,38 +1,4 @@
1
- # Redis stores for ActiveSupport
1
+ [![wercker status](https://app.wercker.com/status/21cb26b06b1e5565aa6b26007a0bdd1c/m "wercker status")](https://app.wercker.com/project/bykey/21cb26b06b1e5565aa6b26007a0bdd1c)
2
2
 
3
- __`redis-activesupport`__ provides a cache for __ActiveSupport__. See the main [redis-store readme](https://github.com/redis-store/redis-store) for general guidelines.
4
-
5
- ## Installation
6
-
7
- ```ruby
8
- # Gemfile
9
- gem 'redis-activesupport'
10
- ```
11
-
12
- ## Usage
13
-
14
- If you are using redis-store with Rails, consider using the [redis-rails gem](https://github.com/redis-store/redis-rails) instead. For standalone usage:
15
-
16
- ```ruby
17
- ActiveSupport::Cache.lookup_store :redis_store # { ... optional configuration ... }
18
- ```
19
-
20
- ## Running tests
21
-
22
- ```shell
23
- gem install bundler
24
- git clone git://github.com/redis-store/redis-activesupport.git
25
- cd redis-activesupport
26
- bundle install
27
- bundle exec rake
28
- ```
29
-
30
- If you are on **Snow Leopard** you have to run `env ARCHFLAGS="-arch x86_64" bundle exec rake`
31
-
32
- ## Status
33
-
34
- [![Gem Version](https://badge.fury.io/rb/redis-activesupport.png)](http://badge.fury.io/rb/redis-activesupport) [![Build Status](https://secure.travis-ci.org/redis-store/redis-activesupport.png?branch=master)](http://travis-ci.org/jodosha/redis-activesupport?branch=master) [![Code Climate](https://codeclimate.com/github/jodosha/redis-store.png)](https://codeclimate.com/github/redis-store/redis-activesupport)
35
-
36
- ## Copyright
37
-
38
- 2009 - 2013 Luca Guidi - [http://lucaguidi.com](http://lucaguidi.com), released under the MIT license
3
+ # Fault tolerant Redis store for ActiveSupport
4
+ A combination of https://github.com/redis-store/redis-activesupport and https://github.com/renra/ruby-maybe_client
data/Rakefile CHANGED
@@ -2,3 +2,11 @@ require 'bundler/setup'
2
2
  require 'rake'
3
3
  require 'bundler/gem_tasks'
4
4
  require 'redis-store/testing/tasks'
5
+
6
+ require 'rake/testtask'
7
+
8
+ task :test do
9
+ Dir.glob('./test/**/*_test.rb').each { |file|
10
+ require file;
11
+ }
12
+ end
@@ -4,7 +4,7 @@ require 'redis/activesupport/version'
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = 'fault_tolerant_redis-activesupport'
7
- s.version = Redis::ActiveSupport::VERSION
7
+ s.version = '4.0.1'
8
8
  s.authors = ['Luca Guidi', 'Jan Renra Gloser']
9
9
  s.email = ['me@lucaguidi.com', 'jan.renra.gloser@gmail.com']
10
10
  s.homepage = 'https://github.com/renra/redis-activesupport'
@@ -20,13 +20,14 @@ Gem::Specification.new do |s|
20
20
  s.require_paths = ['lib']
21
21
 
22
22
  s.add_runtime_dependency 'redis-store', '~> 1.1.0'
23
- s.add_runtime_dependency 'activesupport', '~> 4'
24
- s.add_runtime_dependency 'maybe_client', '1.1.0'
23
+ s.add_runtime_dependency 'activesupport', '~> 4.0.0'
24
+ s.add_runtime_dependency 'maybe_client', '1.2'
25
25
 
26
26
  s.add_development_dependency 'rake', '~> 10'
27
27
  s.add_development_dependency 'bundler', '~> 1.3'
28
28
  s.add_development_dependency 'mocha', '~> 0.14.0'
29
29
  s.add_development_dependency 'minitest', '~> 4.2'
30
+ s.add_development_dependency 'pry'
30
31
  s.add_development_dependency 'redis-store-testing'
31
32
  end
32
33
 
@@ -1,185 +1,126 @@
1
- require 'test_helper'
1
+ require_relative '../../test_helper'
2
+ require 'ostruct'
3
+ require 'pry'
2
4
 
3
- describe ActiveSupport::Cache::RedisStore do
5
+ describe ActiveSupport::Cache::FaultTolerantRedisStore do
4
6
  def setup
5
- @store = ActiveSupport::Cache::RedisStore.new
6
- @dstore = ActiveSupport::Cache::RedisStore.new "redis://127.0.0.1:6380/1", "redis://127.0.0.1:6381/1"
7
+ @store = ActiveSupport::Cache::FaultTolerantRedisStore.new
7
8
  @rabbit = OpenStruct.new :name => "bunny"
8
9
  @white_rabbit = OpenStruct.new :color => "white"
9
10
 
10
- with_store_management do |store|
11
- store.write "rabbit", @rabbit
12
- store.delete "counter"
13
- store.delete "rub-a-dub"
14
- end
11
+ @store.write "rabbit", @rabbit
12
+ @store.delete "counter"
13
+ @store.delete "rub-a-dub"
15
14
  end
16
15
 
17
16
  it "reads the data" do
18
- with_store_management do |store|
19
- store.read("rabbit").must_equal(@rabbit)
20
- end
17
+ @store.read('rabbit').must_equal(@rabbit)
21
18
  end
22
19
 
23
20
  it "writes the data" do
24
- with_store_management do |store|
25
- store.write "rabbit", @white_rabbit
26
- store.read("rabbit").must_equal(@white_rabbit)
27
- end
21
+ @store.write "rabbit", @white_rabbit
22
+ @store.read("rabbit").must_equal(@white_rabbit)
28
23
  end
29
24
 
30
25
  it "writes the data with expiration time" do
31
- with_store_management do |store|
32
- store.write "rabbit", @white_rabbit, :expires_in => 1.second
33
- store.read("rabbit").must_equal(@white_rabbit)
34
- sleep 2
35
- store.read("rabbit").must_be_nil
36
- end
26
+ @store.write "rabbit", @white_rabbit, :expires_in => 1.second
27
+ @store.read("rabbit").must_equal(@white_rabbit)
28
+ sleep 1
29
+ @store.read("rabbit").must_be_nil
37
30
  end
38
31
 
39
32
  it "respects expiration time in seconds" do
40
- with_store_management do |store|
41
- store.write "rabbit", @white_rabbit
42
- store.read("rabbit").must_equal(@white_rabbit)
43
- store.expire "rabbit", 1.seconds
44
- sleep 2
45
- store.read("rabbit").must_be_nil
46
- end
47
- end
48
-
49
- it "respects expiration time in minutes" do
50
- with_store_management do |store|
51
- store.write "rabbit", @white_rabbit
52
- store.read("rabbit").must_equal(@white_rabbit)
53
- store.expire "rabbit", 1.minutes
54
- sleep 61
55
- store.read("rabbit").must_be_nil
56
- end
33
+ @store.write "rabbit", @white_rabbit
34
+ @store.read("rabbit").must_equal(@white_rabbit)
35
+ @store.expire "rabbit", 1.second
36
+ sleep 1.2 # Wercker needs more than 1 second for some reason
37
+ @store.read("rabbit").must_be_nil
57
38
  end
58
39
 
59
40
  it "does't write data if :unless_exist option is true" do
60
- with_store_management do |store|
61
- store.write "rabbit", @white_rabbit, :unless_exist => true
62
- store.read("rabbit").must_equal(@rabbit)
63
- end
41
+ @store.write "rabbit", @white_rabbit, :unless_exist => true
42
+ @store.read("rabbit").must_equal(@rabbit)
64
43
  end
65
44
 
66
- if RUBY_VERSION.match /1\.9/
67
- it "reads raw data" do
68
- with_store_management do |store|
69
- result = store.read("rabbit", :raw => true)
70
- result.must_include("ActiveSupport::Cache::Entry")
71
- result.must_include("\x0FOpenStruct{\x06:\tnameI\"\nbunny\x06:\x06EF")
72
- end
73
- end
74
- else
75
- it "reads raw data" do
76
- with_store_management do |store|
77
- result = store.read("rabbit", :raw => true)
78
- result.must_include("ActiveSupport::Cache::Entry")
79
- result.must_include("\017OpenStruct{\006:\tname")
80
- end
81
- end
45
+ it "reads raw data" do
46
+ result = @store.read("rabbit", :raw => true)
47
+ result.must_include("ActiveSupport::Cache::Entry")
48
+ result.must_include("\017OpenStruct{\006:\tname")
82
49
  end
83
50
 
84
51
  it "writes raw data" do
85
- with_store_management do |store|
86
- store.write "rabbit", @white_rabbit, :raw => true
87
- store.read("rabbit", :raw => true).must_equal(%(#<OpenStruct color=\"white\">))
88
- end
52
+ @store.write "rabbit", @white_rabbit, :raw => true
53
+ @store.read("rabbit", :raw => true).must_equal(%(#<OpenStruct color=\"white\">))
89
54
  end
90
55
 
91
56
  it "deletes data" do
92
- with_store_management do |store|
93
- store.delete "rabbit"
94
- store.read("rabbit").must_be_nil
95
- end
57
+ @store.delete "rabbit"
58
+ @store.read("rabbit").must_be_nil
96
59
  end
97
60
 
98
61
  it "deletes matched data" do
99
- with_store_management do |store|
100
- store.delete_matched "rabb*"
101
- store.read("rabbit").must_be_nil
102
- end
62
+ @store.delete_matched "rabb*"
63
+ @store.read("rabbit").must_be_nil
103
64
  end
104
65
 
105
66
  it "verifies existence of an object in the store" do
106
- with_store_management do |store|
107
- store.exist?("rabbit").must_equal(true)
108
- store.exist?("rab-a-dub").must_equal(false)
109
- end
67
+ @store.exist?("rabbit").must_equal(true)
68
+ @store.exist?("rab-a-dub").must_equal(false)
110
69
  end
111
70
 
112
71
  it "increments a key" do
113
- with_store_management do |store|
114
- 3.times { store.increment "counter" }
115
- store.read("counter", :raw => true).to_i.must_equal(3)
116
- end
72
+ 3.times { @store.increment "counter" }
73
+ @store.read("counter", :raw => true).to_i.must_equal(3)
117
74
  end
118
75
 
119
76
  it "decrements a key" do
120
- with_store_management do |store|
121
- 3.times { store.increment "counter" }
122
- 2.times { store.decrement "counter" }
123
- store.read("counter", :raw => true).to_i.must_equal(1)
124
- end
77
+ 3.times { @store.increment "counter" }
78
+ 2.times { @store.decrement "counter" }
79
+ @store.read("counter", :raw => true).to_i.must_equal(1)
125
80
  end
126
81
 
127
82
  it "increments a raw key" do
128
- with_store_management do |store|
129
- assert store.write("raw-counter", 1, :raw => true)
130
- store.increment("raw-counter", 2)
131
- store.read("raw-counter", :raw => true).to_i.must_equal(3)
132
- end
83
+ assert @store.write("raw-counter", 1, :raw => true)
84
+ @store.increment("raw-counter", 2)
85
+ @store.read("raw-counter", :raw => true).to_i.must_equal(3)
133
86
  end
134
87
 
135
88
  it "decrements a raw key" do
136
- with_store_management do |store|
137
- assert store.write("raw-counter", 3, :raw => true)
138
- store.decrement("raw-counter", 2)
139
- store.read("raw-counter", :raw => true).to_i.must_equal(1)
140
- end
89
+ assert @store.write("raw-counter", 3, :raw => true)
90
+ @store.decrement("raw-counter", 2)
91
+ @store.read("raw-counter", :raw => true).to_i.must_equal(1)
141
92
  end
142
93
 
143
94
  it "increments a key by given value" do
144
- with_store_management do |store|
145
- store.increment "counter", 3
146
- store.read("counter", :raw => true).to_i.must_equal(3)
147
- end
95
+ @store.increment "counter", 3
96
+ @store.read("counter", :raw => true).to_i.must_equal(3)
148
97
  end
149
98
 
150
99
  it "decrements a key by given value" do
151
- with_store_management do |store|
152
- 3.times { store.increment "counter" }
153
- store.decrement "counter", 2
154
- store.read("counter", :raw => true).to_i.must_equal(1)
155
- end
100
+ 3.times { @store.increment "counter" }
101
+ @store.decrement "counter", 2
102
+ @store.read("counter", :raw => true).to_i.must_equal(1)
156
103
  end
157
104
 
158
105
  it "clears the store" do
159
- with_store_management do |store|
160
- store.clear
161
- store.instance_variable_get(:@data).keys("*").flatten.must_be_empty
162
- end
106
+ @store.clear
107
+ @store.instance_variable_get(:@data).keys("*").flatten.must_be_empty
163
108
  end
164
109
 
165
110
  it "provides store stats" do
166
- with_store_management do |store|
167
- store.stats.wont_be_empty
168
- end
111
+ @store.stats.wont_be_empty
169
112
  end
170
113
 
171
114
  it "fetches data" do
172
- with_store_management do |store|
173
- store.fetch("rabbit").must_equal(@rabbit)
174
- store.fetch("rub-a-dub").must_be_nil
175
- store.fetch("rub-a-dub") { "Flora de Cana" }
176
- store.fetch("rub-a-dub").must_equal("Flora de Cana")
177
- store.fetch("rabbit", :force => true) # force cache miss
178
- store.fetch("rabbit", :force => true, :expires_in => 1.second) { @white_rabbit }
179
- # store.fetch("rabbit").must_equal(@white_rabbit)
180
- sleep 2
181
- store.fetch("rabbit").must_be_nil
182
- end
115
+ @store.fetch("rabbit").must_equal(@rabbit)
116
+ @store.fetch("rub-a-dub").must_be_nil
117
+ @store.fetch("rub-a-dub") { "Flora de Cana" }
118
+ @store.fetch("rub-a-dub").must_equal("Flora de Cana")
119
+ @store.fetch("rabbit", :force => true) # force cache miss
120
+ @store.fetch("rabbit", :force => true, :expires_in => 1.second) { @white_rabbit }
121
+ # store.fetch("rabbit").must_equal(@white_rabbit)
122
+ sleep 2
123
+ @store.fetch("rabbit").must_be_nil
183
124
  end
184
125
 
185
126
  it "reads multiple keys" do
@@ -284,7 +225,7 @@ describe ActiveSupport::Cache::RedisStore do
284
225
  decrement.payload.must_equal({ :key => 'placebo', :amount => 1 })
285
226
  end
286
227
 
287
- # it "notifies on cleanup" # TODO implement in ActiveSupport::Cache::RedisStore
228
+ # it "notifies on cleanup" # TODO implement in ActiveSupport::Cache::FaultTolerantRedisStore
288
229
 
289
230
  it "should notify on clear" do
290
231
  with_notifications do
@@ -299,22 +240,17 @@ describe ActiveSupport::Cache::RedisStore do
299
240
 
300
241
  private
301
242
  def instantiate_store(addresses = nil)
302
- ActiveSupport::Cache::RedisStore.new(addresses).instance_variable_get(:@data)
303
- end
304
-
305
- def with_store_management
306
- yield @store
307
- yield @dstore
243
+ ActiveSupport::Cache::FaultTolerantRedisStore.new(addresses).instance_variable_get(:@data)
308
244
  end
309
245
 
310
246
  def with_notifications
311
247
  @events = [ ]
312
- ActiveSupport::Cache::RedisStore.instrument = true
248
+ ActiveSupport::Cache::FaultTolerantRedisStore.instrument = true
313
249
  ActiveSupport::Notifications.subscribe(/^cache_(.*)\.active_support$/) do |*args|
314
250
  @events << ActiveSupport::Notifications::Event.new(*args)
315
251
  end
316
252
  yield
317
- ActiveSupport::Cache::RedisStore.instrument = false
253
+ ActiveSupport::Cache::FaultTolerantRedisStore.instrument = false
318
254
  end
319
255
  end
320
256
 
@@ -1,4 +1,4 @@
1
- require 'test_helper'
1
+ require_relative '../../test_helper'
2
2
 
3
3
  describe Redis::ActiveSupport::VERSION do
4
4
  it 'returns current version' do
data/test/test_helper.rb CHANGED
@@ -2,5 +2,5 @@ require 'bundler/setup'
2
2
  require 'minitest/autorun'
3
3
  require 'mocha/setup'
4
4
  require 'active_support'
5
- require 'active_support/cache/redis_store'
5
+ require 'active_support/cache/fault_tolerant_redis_store'
6
6
 
data/wercker.yml ADDED
@@ -0,0 +1,33 @@
1
+ # This references the default Ruby container from
2
+ # the Docker Hub.
3
+ # https://registry.hub.docker.com/_/ruby/
4
+ # If you want to use a specific version you would use a tag:
5
+ # ruby:2.2.2
6
+ box: ruby:2.2.3
7
+ # You can also use services such as databases. Read more on our dev center:
8
+ # http://devcenter.wercker.com/docs/services/index.html
9
+ services:
10
+ - id: redis
11
+ # - postgres
12
+ # http://devcenter.wercker.com/docs/services/postgresql.html
13
+
14
+ # - mongodb
15
+ # http://devcenter.wercker.com/docs/services/mongodb.html
16
+
17
+ # This is the build pipeline. Pipelines are the core of wercker
18
+ # Read more about pipelines on our dev center
19
+ # http://devcenter.wercker.com/docs/pipelines/index.html
20
+ build:
21
+ # Steps make up the actions in your pipeline
22
+ # Read more about steps on our dev center:
23
+ # http://devcenter.wercker.com/docs/steps/index.html
24
+ steps:
25
+ - bundle-install
26
+
27
+ - script:
28
+ name: Export Redis url
29
+ code: export REDIS_URL="redis://$REDIS_PORT_6379_TCP_ADDR:6379"
30
+
31
+ - script:
32
+ name: Run tests
33
+ code: bundle exec rake test
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fault_tolerant_redis-activesupport
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-11-16 00:00:00.000000000 Z
12
+ date: 2015-11-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis-store
@@ -31,28 +31,28 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '4'
34
+ version: 4.0.0
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '4'
41
+ version: 4.0.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: maybe_client
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - '='
47
47
  - !ruby/object:Gem::Version
48
- version: 1.1.0
48
+ version: '1.2'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - '='
54
54
  - !ruby/object:Gem::Version
55
- version: 1.1.0
55
+ version: '1.2'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rake
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -109,6 +109,20 @@ dependencies:
109
109
  - - "~>"
110
110
  - !ruby/object:Gem::Version
111
111
  version: '4.2'
112
+ - !ruby/object:Gem::Dependency
113
+ name: pry
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
112
126
  - !ruby/object:Gem::Dependency
113
127
  name: redis-store-testing
114
128
  requirement: !ruby/object:Gem::Requirement
@@ -133,6 +147,8 @@ extra_rdoc_files: []
133
147
  files:
134
148
  - ".env"
135
149
  - ".gitignore"
150
+ - ".ruby-gemset"
151
+ - ".ruby-version"
136
152
  - ".travis.yml"
137
153
  - Gemfile
138
154
  - MIT-LICENSE
@@ -145,6 +161,7 @@ files:
145
161
  - test/active_support/cache/redis_store_test.rb
146
162
  - test/redis/activesupport/version_test.rb
147
163
  - test/test_helper.rb
164
+ - wercker.yml
148
165
  homepage: https://github.com/renra/redis-activesupport
149
166
  licenses:
150
167
  - MIT