dalli-delete-matched 0.9.5

Sign up to get free protection for your applications and to get access to all the features.
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,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -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: []