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 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: []