method_caching 0.0.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ OWJkNTFiYjI4OWVlNWMyOWU0NTdkOWRiNTUzOGNiYWM0MjllYzJhMw==
5
+ data.tar.gz: !binary |-
6
+ NDFiZWYyNDljODM0YzA5YmI5YTU0YzVmNjY0NTlhNWRkZjdhY2JiMQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ NmE5ZjI5ZTZmZjRkYTUwZTIwZTFkMWYxOTQ5YjkwOGZmNTEzZjFhZjY5M2I0
10
+ MmI5MTJjOGU2MzY5M2M3ZTUxM2M0OGJhOTZjZTZkYmVhYzc2ZjgwNjM2ODAy
11
+ Mzk3ZWQxNzNiYzI3MDQ0NjEyZDk3ZDkwNDZhYTdlZjI0ZDJjMTk=
12
+ data.tar.gz: !binary |-
13
+ ODRiM2I5MmZjODczODg1NjE2NDQzY2RlM2Y0MDNmMTNiNzUwZDAwNGM1YTk0
14
+ ZDMzZjc4ZTRkMjhmZGQwN2U5NTlmYjg1YmNkYTFmOTNjOTgwYjA5ZjdlMjIy
15
+ YmJiZTZkZmMyNGE1MzA1Zjg4NmNkMTE2NDYxZDE0OTQyOTM3NjI=
@@ -61,3 +61,6 @@ DEPENDENCIES
61
61
  jeweler (~> 1.8.7)
62
62
  rdoc
63
63
  rspec
64
+
65
+ BUNDLED WITH
66
+ 1.10.4
data/README.md CHANGED
@@ -16,6 +16,8 @@ or add to Gemfile
16
16
 
17
17
  ## Usage
18
18
 
19
+ ### With ActiveRecord
20
+
19
21
  ```ruby
20
22
  class User < ActiveRecord::Base
21
23
  method_caching
@@ -23,12 +25,27 @@ class User < ActiveRecord::Base
23
25
  def full_name
24
26
  "#{first_name} #{last_name}"
25
27
  end
26
- cache_method :full_name
27
- cache_method_clear_on :save, :full_name # Clear cache for method full_name whenever method 'save' is called
28
+ cache_method :full_name, clear_on: :save # Clear cache for method full_name whenever method 'save' is called
29
+ end
30
+ ```
31
+
32
+ ### Without ActiveRecord (Mongoid, etc)
33
+
34
+ ```ruby
35
+ class User
36
+ include MethodCaching::Generic
37
+ method_caching
38
+
39
+ def full_name
40
+ "#{first_name} #{last_name}"
41
+ end
42
+ cache_method :full_name, clear_on: :save # Clear cache for method full_name whenever method 'save' is called
28
43
  end
29
44
  ```
30
45
 
31
- method_caching will use the record's id as the default identifier to generate the cache key. You can change the default identifier by passing custom identifier
46
+ ### Custom Identifier
47
+
48
+ By default, method_caching will use the record's id as the default identifier to generate the cache key. You can change the default identifier by passing custom identifier
32
49
 
33
50
  ```ruby
34
51
  class User < ActiveRecord::Base
data/Rakefile CHANGED
@@ -19,7 +19,7 @@ Jeweler::Tasks.new do |gem|
19
19
  gem.license = "MIT"
20
20
  gem.summary = %Q{Simple Ruby library for caching instance method of a class}
21
21
  gem.description = %Q{Simple Ruby library for caching instance method of a class. Using Rails.cache as default caching.}
22
- gem.email = "huy.ha@eastagile.com"
22
+ gem.email = "hhuy424@gmail.com"
23
23
  gem.authors = ["HuyHa"]
24
24
  # dependencies defined in Gemfile
25
25
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 1.0.0
@@ -5,7 +5,7 @@ module MethodCaching
5
5
  self.send(:include, InstanceMethods)
6
6
  end
7
7
 
8
- def cache_method(method)
8
+ def cache_method(method, options = {})
9
9
  old = "_#{method}".to_sym
10
10
  alias_method old, method
11
11
  define_method method do |*args|
@@ -13,6 +13,11 @@ module MethodCaching
13
13
  send(old, *args)
14
14
  end
15
15
  end
16
+
17
+ clear_methods = [options[:clear_on]].flatten.compact
18
+ clear_methods.each do |clear_method|
19
+ cache_method_clear_on(clear_method, method)
20
+ end
16
21
  end
17
22
 
18
23
  def cache_method_clear_on(clear_method, cache_method)
@@ -40,6 +45,14 @@ module MethodCaching
40
45
  "#{self.class.to_s}_#{self.send(identifier_method)}_#{method.to_s}"
41
46
  end
42
47
  end
48
+
49
+ module Generic
50
+ include ::MethodCaching::InstanceMethods
51
+
52
+ def self.included(klass)
53
+ klass.send(:extend, ::MethodCaching::ClassMethods)
54
+ end
55
+ end
43
56
  end
44
57
 
45
58
  if defined?(ActiveRecord)
@@ -0,0 +1,61 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+ # stub: method_caching 1.0.0 ruby lib
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = "method_caching"
9
+ s.version = "1.0.0"
10
+
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
13
+ s.authors = ["HuyHa"]
14
+ s.date = "2015-06-19"
15
+ s.description = "Simple Ruby library for caching instance method of a class. Using Rails.cache as default caching."
16
+ s.email = "hhuy424@gmail.com"
17
+ s.extra_rdoc_files = [
18
+ "LICENSE.txt",
19
+ "README.md"
20
+ ]
21
+ s.files = [
22
+ ".document",
23
+ ".rspec",
24
+ "Gemfile",
25
+ "Gemfile.lock",
26
+ "LICENSE.txt",
27
+ "README.md",
28
+ "Rakefile",
29
+ "VERSION",
30
+ "lib/method_caching.rb",
31
+ "method_caching.gemspec",
32
+ "spec/method_caching_spec.rb",
33
+ "spec/spec_helper.rb"
34
+ ]
35
+ s.homepage = "http://github.com/huyha85/method_caching"
36
+ s.licenses = ["MIT"]
37
+ s.rubygems_version = "2.4.6"
38
+ s.summary = "Simple Ruby library for caching instance method of a class"
39
+
40
+ if s.respond_to? :specification_version then
41
+ s.specification_version = 4
42
+
43
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
44
+ s.add_development_dependency(%q<rspec>, [">= 0"])
45
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
46
+ s.add_development_dependency(%q<bundler>, [">= 0"])
47
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.7"])
48
+ else
49
+ s.add_dependency(%q<rspec>, [">= 0"])
50
+ s.add_dependency(%q<rdoc>, [">= 0"])
51
+ s.add_dependency(%q<bundler>, [">= 0"])
52
+ s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
53
+ end
54
+ else
55
+ s.add_dependency(%q<rspec>, [">= 0"])
56
+ s.add_dependency(%q<rdoc>, [">= 0"])
57
+ s.add_dependency(%q<bundler>, [">= 0"])
58
+ s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
59
+ end
60
+ end
61
+
@@ -1,8 +1,7 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  class TestClass
4
- extend MethodCaching::ClassMethods
5
- include MethodCaching::InstanceMethods
4
+ include MethodCaching::Generic
6
5
  method_caching :identifier
7
6
 
8
7
  def method_to_be_cleared; end
@@ -10,8 +9,7 @@ class TestClass
10
9
  def method_to_be_cached
11
10
  calculate(2)
12
11
  end
13
- cache_method :method_to_be_cached
14
- cache_method_clear_on :method_to_be_cleared, :method_to_be_cached
12
+ cache_method :method_to_be_cached, clear_on: :method_to_be_cleared
15
13
 
16
14
  def identifier
17
15
  "id"
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: method_caching
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 1.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - HuyHa
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-10-30 00:00:00.000000000 Z
11
+ date: 2015-06-19 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rspec
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ! '>='
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rdoc
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ! '>='
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ! '>='
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: bundler
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ! '>='
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ! '>='
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: jeweler
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ~>
68
60
  - !ruby/object:Gem::Version
@@ -70,14 +62,13 @@ dependencies:
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ~>
76
67
  - !ruby/object:Gem::Version
77
68
  version: 1.8.7
78
69
  description: Simple Ruby library for caching instance method of a class. Using Rails.cache
79
70
  as default caching.
80
- email: huy.ha@eastagile.com
71
+ email: hhuy424@gmail.com
81
72
  executables: []
82
73
  extensions: []
83
74
  extra_rdoc_files:
@@ -93,34 +84,31 @@ files:
93
84
  - Rakefile
94
85
  - VERSION
95
86
  - lib/method_caching.rb
87
+ - method_caching.gemspec
96
88
  - spec/method_caching_spec.rb
97
89
  - spec/spec_helper.rb
98
90
  homepage: http://github.com/huyha85/method_caching
99
91
  licenses:
100
92
  - MIT
93
+ metadata: {}
101
94
  post_install_message:
102
95
  rdoc_options: []
103
96
  require_paths:
104
97
  - lib
105
98
  required_ruby_version: !ruby/object:Gem::Requirement
106
- none: false
107
99
  requirements:
108
100
  - - ! '>='
109
101
  - !ruby/object:Gem::Version
110
102
  version: '0'
111
- segments:
112
- - 0
113
- hash: 3994657104755449766
114
103
  required_rubygems_version: !ruby/object:Gem::Requirement
115
- none: false
116
104
  requirements:
117
105
  - - ! '>='
118
106
  - !ruby/object:Gem::Version
119
107
  version: '0'
120
108
  requirements: []
121
109
  rubyforge_project:
122
- rubygems_version: 1.8.25
110
+ rubygems_version: 2.4.6
123
111
  signing_key:
124
- specification_version: 3
112
+ specification_version: 4
125
113
  summary: Simple Ruby library for caching instance method of a class
126
114
  test_files: []