gem_of_thrones 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/Gemfile.lock +16 -14
- data/Rakefile +2 -18
- data/Readme.md +25 -7
- data/lib/gem_of_thrones.rb +2 -2
- data/lib/gem_of_thrones/version.rb +1 -1
- metadata +4 -4
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,29 +1,30 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
gem_of_thrones (0.2.
|
4
|
+
gem_of_thrones (0.2.2)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: http://rubygems.org/
|
8
8
|
specs:
|
9
|
-
activesupport (3.2.
|
9
|
+
activesupport (3.2.11)
|
10
10
|
i18n (~> 0.6)
|
11
11
|
multi_json (~> 1.0)
|
12
12
|
benhutton-libmemcached_store (0.3.2)
|
13
13
|
memcached
|
14
|
+
bump (0.3.9)
|
14
15
|
diff-lcs (1.1.3)
|
15
|
-
i18n (0.6.
|
16
|
-
memcached (1.
|
17
|
-
multi_json (1.
|
18
|
-
rake (0.
|
19
|
-
rspec (2.
|
20
|
-
rspec-core (~> 2.
|
21
|
-
rspec-expectations (~> 2.
|
22
|
-
rspec-mocks (~> 2.
|
23
|
-
rspec-core (2.
|
24
|
-
rspec-expectations (2.
|
25
|
-
diff-lcs (~> 1.1.
|
26
|
-
rspec-mocks (2.
|
16
|
+
i18n (0.6.1)
|
17
|
+
memcached (1.5.0)
|
18
|
+
multi_json (1.5.0)
|
19
|
+
rake (10.0.3)
|
20
|
+
rspec (2.12.0)
|
21
|
+
rspec-core (~> 2.12.0)
|
22
|
+
rspec-expectations (~> 2.12.0)
|
23
|
+
rspec-mocks (~> 2.12.0)
|
24
|
+
rspec-core (2.12.2)
|
25
|
+
rspec-expectations (2.12.1)
|
26
|
+
diff-lcs (~> 1.1.3)
|
27
|
+
rspec-mocks (2.12.1)
|
27
28
|
|
28
29
|
PLATFORMS
|
29
30
|
ruby
|
@@ -31,6 +32,7 @@ PLATFORMS
|
|
31
32
|
DEPENDENCIES
|
32
33
|
activesupport (> 3)
|
33
34
|
benhutton-libmemcached_store
|
35
|
+
bump
|
34
36
|
gem_of_thrones!
|
35
37
|
memcached
|
36
38
|
rake
|
data/Rakefile
CHANGED
@@ -1,22 +1,6 @@
|
|
1
|
-
require
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "bump/tasks"
|
2
3
|
|
3
4
|
task :default do
|
4
5
|
sh "rspec spec/"
|
5
6
|
end
|
6
|
-
|
7
|
-
# extracted from https://github.com/grosser/project_template
|
8
|
-
rule /^version:bump:.*/ do |t|
|
9
|
-
sh "git status | grep 'nothing to commit'" # ensure we are not dirty
|
10
|
-
index = ['major', 'minor','patch'].index(t.name.split(':').last)
|
11
|
-
file = 'lib/gem_of_thrones/version.rb'
|
12
|
-
|
13
|
-
version_file = File.read(file)
|
14
|
-
old_version, *version_parts = version_file.match(/(\d+)\.(\d+)\.(\d+)/).to_a
|
15
|
-
version_parts[index] = version_parts[index].to_i + 1
|
16
|
-
version_parts[2] = 0 if index < 2 # remove patch for minor
|
17
|
-
version_parts[1] = 0 if index < 1 # remove minor for major
|
18
|
-
new_version = version_parts * '.'
|
19
|
-
File.open(file,'w'){|f| f.write(version_file.sub(old_version, new_version)) }
|
20
|
-
|
21
|
-
sh "bundle && git add #{file} Gemfile.lock && git commit -m 'bump version to #{new_version}'"
|
22
|
-
end
|
data/Readme.md
CHANGED
@@ -2,16 +2,16 @@ Everybody wants to be king, but only one can win (synchronized via a distributed
|
|
2
2
|
Update something everybody depends on without doing it multiple times or using a cron.
|
3
3
|
|
4
4
|
Cache must support the interface `write(key, value, :expires_in => xxx, :unless_exist => true)`,<br/>
|
5
|
-
|
6
|
-
|
5
|
+
supported in:
|
6
|
+
- `ActiveSupport::Cache::MemCacheStore`
|
7
|
+
- [ActiveSupport::Cache::LibmemcachedStore](https://github.com/benhutton/libmemcached_store)
|
8
|
+
- `ActiveSupport::Cache::MemoryStore` @ rails edge
|
9
|
+
- [ActiveSupport::Cache::RedisStore](https://rubygems.org/gems/redis-activesupport)
|
7
10
|
|
8
11
|
Install
|
9
12
|
=======
|
10
|
-
gem install gem_of_thrones
|
11
|
-
Or
|
12
|
-
|
13
|
-
rails plugin install git://github.com/grosser/gem_of_thrones.git
|
14
13
|
|
14
|
+
gem install gem_of_thrones
|
15
15
|
|
16
16
|
Usage
|
17
17
|
=====
|
@@ -31,9 +31,27 @@ Usage
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
+
When not to use (by [Ben Osheroff](https://github.com/osheroff))
|
35
|
+
==================
|
36
|
+
For a really critical master, memcache isn't traditionally that great.
|
37
|
+
Memcache's best high-availability offering is a cluster of servers with the key hashing to a different server,
|
38
|
+
and a server can drop out (due to timeouts or sporadic failures or what have you),
|
39
|
+
and then you lose cache coherency and some servers can think a key belongs somewhere
|
40
|
+
and some servers think it belongs elsewhere, and it's just not that great.
|
41
|
+
What you're left with then is either going with a single memcache (single point of failure, oy),
|
42
|
+
or sacrificing true locks.
|
43
|
+
|
44
|
+
Redis might be slightly better solution as it at least offers some failover via replication, and I think it has a check-and-set operator.
|
45
|
+
|
46
|
+
The big heavies in this space are of course zookeeper etc, but that can be overboard.
|
47
|
+
|
48
|
+
Development
|
49
|
+
==========
|
50
|
+
Start `memcached` then `rake`.
|
51
|
+
|
34
52
|
Author
|
35
53
|
======
|
36
54
|
[Zendesk](http://zendesk.com)<br/>
|
37
55
|
michael@grosser.it<br/>
|
38
56
|
License: MIT<br/>
|
39
|
-
[![Build Status](https://
|
57
|
+
[![Build Status](https://travis-ci.org/grosser/gem_of_thrones.png)](https://travis-ci.org/grosser/gem_of_thrones)
|
data/lib/gem_of_thrones.rb
CHANGED
@@ -4,10 +4,10 @@ class GemOfThrones
|
|
4
4
|
def initialize(options)
|
5
5
|
@options = {
|
6
6
|
:timeout => 10 * 60,
|
7
|
-
:cache_key => "GemOfThrones."
|
8
|
-
:cache => "You have to set :cache",
|
7
|
+
:cache_key => "GemOfThrones."
|
9
8
|
}.merge(options)
|
10
9
|
|
10
|
+
raise "Set a :cache" unless options[:cache]
|
11
11
|
raise "Only integers are supported for timeout" if options[:timeout].is_a?(Float)
|
12
12
|
end
|
13
13
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem_of_thrones
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 2
|
10
|
+
version: 0.2.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Michael Grosser
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2013-01-26 00:00:00 Z
|
19
19
|
dependencies: []
|
20
20
|
|
21
21
|
description:
|