cachethod 0.1.2 → 0.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 +5 -13
- data/README.md +17 -1
- data/lib/cachethod.rb +18 -0
- data/lib/cachethod/version.rb +1 -1
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
Yjc1Nzc1MGQ1MGNjZDE4OGUxMmE2MGI5MjIwNzQ4ODBhMTM3NmVlZA==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6ae6f370ef22bcd730734e8b47c157eddbb2d0a8
|
4
|
+
data.tar.gz: abaed30fc1104703aac1089307486d3bd72392cd
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
MjFjYjA5MDdlYzgyNjA3NjFiYzE3OWZmMjBkZTYxNDk2MTVlZjdiMGY5YTI4
|
11
|
-
YmE3ODFlNWZjOTdmZDk1ZTY3YThmMmM3NTBlODhhZmY3ZWNiNjM=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NWFiOTZjMTYwMWRlNjk5NTAwMDk2MTM0MmIxZThiZWViM2E3Y2FlYTA5Yjc1
|
14
|
-
ZmUyYmRjOGE3ODUyN2IwNTVjYmZhNzRiZmFiMGViMjRmNjVhMzA4MmYwZDAw
|
15
|
-
YWE2MGZiMWE2MDIxMGYyNzJmYWUxOTQ4ZjdhMWJmNzJjZTdiNTQ=
|
6
|
+
metadata.gz: d91634138c74a0f2385c99a367fa029b1aac6859aa45c16a03f914d549b1bb6f46734c45af355e526603ef6c09fd3489fa57dafbdd294758954b4b5ab8dfaffa
|
7
|
+
data.tar.gz: b97b5c0b93c060384921dc749c823c40884b214d0f09557b708827c144e5e2ac3d4ce275f30cc8d12b5248e8f591db19c4688416bfb3c9400fe51f0219d88497
|
data/README.md
CHANGED
@@ -19,7 +19,7 @@ will be reflected also on Cachethod methods.
|
|
19
19
|
In Gemfile
|
20
20
|
|
21
21
|
```ruby
|
22
|
-
gem 'cachethod', '~> 0.
|
22
|
+
gem 'cachethod', '~> 0.2.0'
|
23
23
|
```
|
24
24
|
|
25
25
|
Then run
|
@@ -87,6 +87,22 @@ If you want to access uncached version of your method then you can do:
|
|
87
87
|
user.some_io_method!
|
88
88
|
```
|
89
89
|
|
90
|
+
## Caching class methods
|
91
|
+
|
92
|
+
```ruby
|
93
|
+
class Apple < ActiveRecord::Base
|
94
|
+
class << self
|
95
|
+
include Cachethod
|
96
|
+
|
97
|
+
def kinds
|
98
|
+
...
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
cache_class_method :kinds, expires_in: 10.minutes
|
103
|
+
end
|
104
|
+
```
|
105
|
+
|
90
106
|
## Result
|
91
107
|
|
92
108
|
For example it translates following code:
|
data/lib/cachethod.rb
CHANGED
@@ -4,6 +4,23 @@ module Cachethod
|
|
4
4
|
end
|
5
5
|
|
6
6
|
module ClassMethods
|
7
|
+
def cache_class_method names, *args
|
8
|
+
[*names].each do |name|
|
9
|
+
define_singleton_method "#{name}_cached" do
|
10
|
+
cache_key = "cachethod.#{self.class.to_s.underscore}.self."
|
11
|
+
cache_key += "#{hash}.#{name}."
|
12
|
+
cache_key += args.hash.to_s
|
13
|
+
|
14
|
+
Rails.cache.fetch(cache_key, *args) do
|
15
|
+
send("#{name}!")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
self.singleton_class.send(:alias_method, "#{name}!", name)
|
20
|
+
self.singleton_class.send(:alias_method, name, "#{name}_cached")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
7
24
|
def cache_method names, *args
|
8
25
|
@methods_to_cache ||= {}
|
9
26
|
|
@@ -19,6 +36,7 @@ module Cachethod
|
|
19
36
|
alias_method :cache_methods, :cache_method
|
20
37
|
alias_method :cachethod, :cache_method
|
21
38
|
alias_method :cachethods, :cache_method
|
39
|
+
alias_method :cache_class_methods, :cache_class_method
|
22
40
|
|
23
41
|
def method_added name
|
24
42
|
super
|
data/lib/cachethod/version.rb
CHANGED
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cachethod
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rene Klacan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06
|
11
|
+
date: 2014-07-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -45,13 +45,13 @@ executables: []
|
|
45
45
|
extensions: []
|
46
46
|
extra_rdoc_files: []
|
47
47
|
files:
|
48
|
-
- LICENSE
|
49
|
-
- README.md
|
50
|
-
- Rakefile
|
51
48
|
- lib/cachethod.rb
|
52
49
|
- lib/cachethod/version.rb
|
53
|
-
-
|
50
|
+
- LICENSE
|
51
|
+
- Rakefile
|
52
|
+
- README.md
|
54
53
|
- test/test_helper.rb
|
54
|
+
- test/cachethod_test.rb
|
55
55
|
homepage: https://github.com/reneklacan/cachethod
|
56
56
|
licenses:
|
57
57
|
- MIT
|
@@ -62,17 +62,17 @@ require_paths:
|
|
62
62
|
- lib
|
63
63
|
required_ruby_version: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
|
-
- -
|
65
|
+
- - '>='
|
66
66
|
- !ruby/object:Gem::Version
|
67
67
|
version: '1.9'
|
68
68
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
69
|
requirements:
|
70
|
-
- -
|
70
|
+
- - '>='
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: '0'
|
73
73
|
requirements: []
|
74
74
|
rubyforge_project:
|
75
|
-
rubygems_version: 2.
|
75
|
+
rubygems_version: 2.0.14
|
76
76
|
signing_key:
|
77
77
|
specification_version: 4
|
78
78
|
summary: Rails plugin for caching model methods
|