gibson 1.1.1 → 1.2.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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZjNmZDY4YTFmZTFhMWU2MjczODExMjY0YmRkMWVlZjdhNWE5MjU3MQ==
4
+ NjA4ZDg5ZjE0MDY4NTU3OTZlOTQyYWRjYWRiZTM2YjI1NDllNGM2OQ==
5
5
  data.tar.gz: !binary |-
6
- ZTJmZjEwMTNjMzNmZGFlM2NhMjQ4MDcwOTc4ODk3M2E5YmE0NjY4ZQ==
6
+ YzVhMWYyOWFmZGU1YTRlYzdkOGMzMzM5ZjMxNGM0Y2QyZmYwZGZjYw==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- M2I0ZTM2MWE3MmFkYWU3MzM3MjY3YTU0NGU4ZDM0ZDVjMzJiZThkZjRjOGFj
10
- ZDRhZmM5MjVjZWJjNzBjYjczNDQ3Y2NjN2FhZWRkYjMxZTE2YTZiMjM4ZDZl
11
- ZmY5YTg2MDE1ZjdhMjUzOTVlNTUzZWYxMTk4NWMwMzg0NGQ3YjA=
9
+ NjZlMTlmMjg1YmYxNDA4YmJlYjZkY2I1Yjc5ZjQ3NmNiN2Y4ZDZkNmNmYTZj
10
+ ZTJjYTIyOGE1NmM4OTAzYmMyZGU1ZDY4OGVhNzAzZWY4ZDMyYzA0NjgwZDk1
11
+ YjkzNjg4OGVkN2UwNjBlYzAyMTdlZWNjYjRkZjk3NTkzMGZmNTU=
12
12
  data.tar.gz: !binary |-
13
- MTExYmQ1MWFkNzQ4NDQ0NzM4NGI4MDJiZWU2NDNkYThlZjZmNGQ5MjBkOWMz
14
- YmIxMzU4OWJhZjc3MzZmYWI4ZGI0YzVhODgzZTZhZTdkNTkzOTc0NGExNzI0
15
- OTRlZjdkYjY5NDk4MzU1ZWMyMjRhMzI1M2Y5OWIxN2Q0NjJiNTI=
13
+ NDBjZWNiNDVlNzAxMzVhYzdmZjIwMWFkYmI1ZjA0NTljYjFhNGI3NzdhN2Qw
14
+ NjYyYzAyMTRjMGYyMDY4ZGM1YTY0MDRmMzM4ZjE0OGE0Y2NhZWY4MGUyMTA3
15
+ ODc3MmM3NzJiZTA0NzJiMWFmNDMzZmMyMTJjN2JhYWNhM2I1MDg=
data/README.md CHANGED
@@ -117,6 +117,23 @@ Once you're done, close the connection.
117
117
  gibson.close
118
118
  ```
119
119
 
120
+ Usage with Rails 3.x and 4.x
121
+ ---------------------------
122
+
123
+ In your Gemfile:
124
+
125
+ ```ruby
126
+ gem 'gibson'
127
+ ```
128
+
129
+ In `config/environments/production.rb`:
130
+
131
+ ```ruby
132
+ config.cache_store = :gibson_store "namespace-of-your-app", { :socket => '/tmp/socket', :timeout => 50 }
133
+ ```
134
+
135
+ Gibson does not support Rails 2.x.
136
+
120
137
  License
121
138
  ---
122
139
 
@@ -0,0 +1,101 @@
1
+ require 'active_support/core_ext/marshal'
2
+ require 'active_support/core_ext/string/conversions'
3
+
4
+ module ActiveSupport
5
+ module Cache
6
+ # A cache store implementation which stores everything on the Gibson cache server.
7
+ #
8
+ # GibsonStore implements the Strategy::LocalCache strategy which implements
9
+ # an in-memory cache inside of a block.
10
+ class GibsonStore < Store
11
+ attr_reader :namespace
12
+ attr_reader :options
13
+
14
+ def initialize( namespace, options )
15
+ @options = options.dup
16
+ @namespace = namespace.to_s
17
+ @gibson = Gibson::Client.new @options
18
+
19
+ extend Strategy::LocalCache
20
+ end
21
+
22
+ # Deletes all items from the cache.
23
+ def clear(options = nil)
24
+ @gibson.mdel @namespace + "::"
25
+ end
26
+
27
+ # Increments an already existing integer value that is stored in the cache.
28
+ def increment(name, amount = 1, options = nil)
29
+ key = expand_key(name)
30
+ amount.times do |v|
31
+ @gibson.inc key
32
+ end
33
+ end
34
+
35
+ # Decrements an already existing integer value that is stored in the cache.
36
+ def decrement(name, amount = 1, options = nil)
37
+ key = expand_key(name)
38
+ amount.times do |v|
39
+ @gibson.dec key
40
+ end
41
+ end
42
+
43
+ # Deletes multiple values by expression
44
+ def delete_matched(matcher, options = nil)
45
+ key = expand_key(matcher)
46
+ @gibson.mdel key
47
+ end
48
+
49
+ # Returns some stats
50
+ def stats
51
+ @gibson.stats
52
+ end
53
+
54
+ protected
55
+
56
+ def read_entry(key, options)
57
+ key = expand_key(key)
58
+
59
+ begin
60
+ cached = @gibson.get key
61
+
62
+ Marshal.load(cached)
63
+ rescue Gibson::NotFoundError
64
+ nil
65
+ end
66
+ end
67
+
68
+ def write_entry(key, entry, options)
69
+ e = Marshal.dump(entry)
70
+
71
+ key = expand_key(key)
72
+
73
+ begin
74
+ @gibson.set( options[:expires_in].to_i, key, e )
75
+
76
+ true
77
+ rescue
78
+ false
79
+ end
80
+ end
81
+
82
+ def delete_entry(key, options)
83
+ key = expand_key(key)
84
+
85
+ begin
86
+ @gibson.del key
87
+
88
+ true
89
+ rescue
90
+ false
91
+ end
92
+ end
93
+
94
+ private
95
+
96
+ def expand_key(v)
97
+ @namespace + "::" + v.to_s.tr( ' ', '_' )
98
+ end
99
+ end
100
+ end
101
+ end
@@ -1,4 +1,4 @@
1
1
  module Gibson
2
- VERSION = '1.1.1'
2
+ VERSION = '1.2.0'
3
3
  end
4
4
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gibson
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simone Margaritelli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-04 00:00:00.000000000 Z
11
+ date: 2014-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -30,6 +30,7 @@ executables: []
30
30
  extensions: []
31
31
  extra_rdoc_files: []
32
32
  files:
33
+ - lib/active_support/cache/gibson_store.rb
33
34
  - lib/gibson/connection.rb
34
35
  - lib/gibson/gibson.rb
35
36
  - lib/gibson/protocol.rb