dalli-delete-matched 0.9.5
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.
- data/Gemfile +17 -0
- data/README.rdoc +8 -0
- data/Rakefile +2 -0
- data/lib/dalli-delete-matched.rb +54 -0
- metadata +62 -0
data/Gemfile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
|
3
|
+
# Declare your gem's dependencies in dalli-delete-matched.gemspec.
|
4
|
+
# Bundler will treat runtime dependencies like base dependencies, and
|
5
|
+
# development dependencies will be added by default to the :development group.
|
6
|
+
gemspec
|
7
|
+
|
8
|
+
# jquery-rails is used by the dummy application
|
9
|
+
# gem "jquery-rails"
|
10
|
+
|
11
|
+
# Declare any dependencies that are still in development here instead of in
|
12
|
+
# your gemspec. These might include edge Rails or gems from your path or
|
13
|
+
# Git. Remember to move these dependencies to your gemspec before releasing
|
14
|
+
# your gem to rubygems.org.
|
15
|
+
|
16
|
+
# To use debugger
|
17
|
+
# gem 'debugger'
|
data/README.rdoc
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
= DalliDeleteMatched
|
2
|
+
|
3
|
+
This gem is a simple implementation of delete_matched method for dalli store with memcached.
|
4
|
+
Just install the gem and you a free to go
|
5
|
+
|
6
|
+
In your Gemfile, make sure you have this gem:
|
7
|
+
|
8
|
+
gem 'dalli-delete-matched', :git => "git://github.com/phobos981/dalli-delete-matched.git"
|
data/Rakefile
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'active_support/cache/dalli_store'
|
2
|
+
require 'active_support/core_ext/module/aliasing'
|
3
|
+
|
4
|
+
ActiveSupport::Cache::DalliStore.class_eval do
|
5
|
+
|
6
|
+
MEMCACHED_KEYS = "memcached_keys"
|
7
|
+
|
8
|
+
alias_method :old_write_entry, :write_entry
|
9
|
+
def write_entry(key, entry, options)
|
10
|
+
keys = get_memcached_keys
|
11
|
+
unless keys.include?(key)
|
12
|
+
keys << key
|
13
|
+
return false unless old_write_entry(MEMCACHED_KEYS, keys.to_yaml, {})
|
14
|
+
end
|
15
|
+
old_write_entry(key, entry, options)
|
16
|
+
end
|
17
|
+
|
18
|
+
alias_method :old_delete_entry, :delete_entry
|
19
|
+
def delete_entry(key, options)
|
20
|
+
ret = old_delete_entry(key, options)
|
21
|
+
return false unless ret
|
22
|
+
keys = get_memcached_keys
|
23
|
+
if keys.include?(key)
|
24
|
+
keys -= [ key ]
|
25
|
+
old_write_entry(MEMCACHED_KEYS, keys.to_yaml, {})
|
26
|
+
end
|
27
|
+
ret
|
28
|
+
end
|
29
|
+
|
30
|
+
def delete_matched(matcher, options = nil)
|
31
|
+
ret = true
|
32
|
+
deleted_keys = []
|
33
|
+
keys = get_memcached_keys
|
34
|
+
keys.each do |key|
|
35
|
+
if ret && key.match(matcher)
|
36
|
+
deleted_keys << key if (ret = old_delete_entry(key, options))
|
37
|
+
end
|
38
|
+
end
|
39
|
+
len = keys.length
|
40
|
+
keys -= deleted_keys
|
41
|
+
old_write_entry(MEMCACHED_KEYS, keys.to_yaml, {}) if keys.length < len
|
42
|
+
ret
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
def get_memcached_keys
|
47
|
+
begin
|
48
|
+
YAML.load read(MEMCACHED_KEYS)
|
49
|
+
rescue TypeError
|
50
|
+
[]
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
metadata
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dalli-delete-matched
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.5
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Kourza Ivan a.k.a. Phobos98
|
9
|
+
autorequire: builder
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-12-25 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: dalli
|
16
|
+
requirement: &16732540 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *16732540
|
25
|
+
description: Provides delete_matched for Dalli store in Rails 3
|
26
|
+
email: phobos98@phobos98.net
|
27
|
+
executables: []
|
28
|
+
extensions: []
|
29
|
+
extra_rdoc_files:
|
30
|
+
- Gemfile
|
31
|
+
- Rakefile
|
32
|
+
- README.rdoc
|
33
|
+
files:
|
34
|
+
- lib/dalli-delete-matched.rb
|
35
|
+
- Gemfile
|
36
|
+
- Rakefile
|
37
|
+
- README.rdoc
|
38
|
+
homepage: https://github.com/phobos981/dalli-delete-matched
|
39
|
+
licenses: []
|
40
|
+
post_install_message:
|
41
|
+
rdoc_options: []
|
42
|
+
require_paths:
|
43
|
+
- lib
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
+
none: false
|
46
|
+
requirements:
|
47
|
+
- - ! '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 1.3.6
|
56
|
+
requirements: []
|
57
|
+
rubyforge_project: dalli-delete-matched
|
58
|
+
rubygems_version: 1.8.11
|
59
|
+
signing_key:
|
60
|
+
specification_version: 3
|
61
|
+
summary: Rails Dalli Store extension for delete_matched support
|
62
|
+
test_files: []
|