memery 1.5.0 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 97a9a87378334fd120a2d5cff1090a77c77c07fd7ade8f7826b7f224fb38a19c
4
- data.tar.gz: 06b10e5f165da54db22aa802d78e3af7146ff63b3eeb08c9192f17d8a713d9c0
3
+ metadata.gz: 2fee1d8473d6873f228f16f5f9a0b3dce5f3e54350101b69be7d2842a2d4fc1f
4
+ data.tar.gz: 24eb3da54355028d92664c734a2c28ea5a52462351b6a598c6acd80a5b3cca7c
5
5
  SHA512:
6
- metadata.gz: 301a7a83ea1b19acba82fecbd4cba2372f881514717ee42f10b909a8806bb457f5ec82d1209f23cdaf3ea9d6c3ef1b6a32d520280dbd9385674a03a12147da5f
7
- data.tar.gz: 045412175d2776f97f7ff231556de4d7fef00147a7b8e92b7021c603afacf65b8d73d20b8b9eb2ad2b3f97affe979a0b591087c35c05ca83ffea28c8b8b0af80
6
+ metadata.gz: fe66f7ef175fae643de7382ad2b311a546c079f9f105118f2907437a439ccde57b86143b46d063f868805921d72a33eb790625610c43f111268eeb21b8b5821c
7
+ data.tar.gz: 28120e605bbf3627d09376f081ba1071745e0d8d0a32ccef9675012c12596baf695aaa37275bcce27bbf6998e4b22b92c0787e2b973decd87f15e201a6fa1294
@@ -12,12 +12,12 @@ jobs:
12
12
  strategy:
13
13
  fail-fast: false
14
14
  matrix:
15
- ruby: ["2.5", "2.6", "2.7", "3.0", "3.1"]
15
+ ruby: ["2.7", "3.0", "3.1", "3.2", "3.3"]
16
16
 
17
17
  name: ${{ matrix.ruby }}
18
18
 
19
19
  steps:
20
- - uses: actions/checkout@v2
20
+ - uses: actions/checkout@v4
21
21
 
22
22
  - uses: ruby/setup-ruby@v1
23
23
  with:
@@ -26,6 +26,6 @@ jobs:
26
26
 
27
27
  - run: bundle exec rake
28
28
 
29
- - uses: coverallsapp/github-action@v1.1.2
29
+ - uses: coverallsapp/github-action@v2
30
30
  with:
31
31
  github-token: ${{ secrets.GITHUB_TOKEN }}
data/.rubocop.yml CHANGED
@@ -3,7 +3,7 @@ inherit_gem:
3
3
 
4
4
  AllCops:
5
5
  DisplayCopNames: true
6
- TargetRubyVersion: 2.5
6
+ TargetRubyVersion: 2.7
7
7
 
8
8
  Naming/MethodParameterName:
9
9
  AllowedNames: ["x", "y", "z"]
data/Gemfile CHANGED
@@ -2,3 +2,14 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
  gemspec
5
+
6
+ gem "activesupport"
7
+ gem "benchmark-ips"
8
+ gem "benchmark-memory"
9
+ gem "bundler"
10
+ gem "pry"
11
+ gem "rake"
12
+ gem "rspec"
13
+ gem "rubocop-config-umbrellio"
14
+ gem "simplecov"
15
+ gem "simplecov-lcov"
data/Gemfile.lock CHANGED
@@ -1,100 +1,121 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- memery (1.5.0)
5
- ruby2_keywords (~> 0.0.2)
4
+ memery (1.6.0)
6
5
 
7
6
  GEM
8
7
  remote: https://rubygems.org/
9
8
  specs:
10
- activesupport (6.1.3.2)
9
+ activesupport (7.1.4)
10
+ base64
11
+ bigdecimal
11
12
  concurrent-ruby (~> 1.0, >= 1.0.2)
13
+ connection_pool (>= 2.2.5)
14
+ drb
12
15
  i18n (>= 1.6, < 2)
13
16
  minitest (>= 5.1)
17
+ mutex_m
14
18
  tzinfo (~> 2.0)
15
- zeitwerk (~> 2.3)
16
19
  ast (2.4.2)
17
- benchmark-ips (2.9.1)
18
- benchmark-memory (0.1.2)
19
- memory_profiler (~> 0.9)
20
+ base64 (0.2.0)
21
+ benchmark-ips (2.14.0)
22
+ benchmark-memory (0.2.0)
23
+ memory_profiler (~> 1)
24
+ bigdecimal (3.1.8)
20
25
  coderay (1.1.3)
21
- concurrent-ruby (1.1.9)
22
- diff-lcs (1.4.4)
23
- docile (1.4.0)
24
- i18n (1.8.10)
26
+ concurrent-ruby (1.3.4)
27
+ connection_pool (2.4.1)
28
+ diff-lcs (1.5.1)
29
+ docile (1.4.1)
30
+ drb (2.2.1)
31
+ i18n (1.14.5)
25
32
  concurrent-ruby (~> 1.0)
26
- memory_profiler (0.9.14)
27
- method_source (1.0.0)
28
- minitest (5.14.4)
29
- parallel (1.20.1)
30
- parser (3.0.1.1)
33
+ json (2.7.2)
34
+ language_server-protocol (3.17.0.3)
35
+ memory_profiler (1.0.2)
36
+ method_source (1.1.0)
37
+ minitest (5.25.1)
38
+ mutex_m (0.2.0)
39
+ parallel (1.26.3)
40
+ parser (3.3.5.0)
31
41
  ast (~> 2.4.1)
32
- pry (0.14.1)
42
+ racc
43
+ pry (0.14.2)
33
44
  coderay (~> 1.1)
34
45
  method_source (~> 1.0)
35
- rack (2.2.3)
36
- rainbow (3.0.0)
37
- rake (13.0.3)
38
- regexp_parser (2.1.1)
39
- rexml (3.2.5)
40
- rspec (3.10.0)
41
- rspec-core (~> 3.10.0)
42
- rspec-expectations (~> 3.10.0)
43
- rspec-mocks (~> 3.10.0)
44
- rspec-core (3.10.1)
45
- rspec-support (~> 3.10.0)
46
- rspec-expectations (3.10.1)
46
+ racc (1.8.1)
47
+ rack (3.1.7)
48
+ rainbow (3.1.1)
49
+ rake (13.2.1)
50
+ regexp_parser (2.9.2)
51
+ rexml (3.3.7)
52
+ rspec (3.13.0)
53
+ rspec-core (~> 3.13.0)
54
+ rspec-expectations (~> 3.13.0)
55
+ rspec-mocks (~> 3.13.0)
56
+ rspec-core (3.13.1)
57
+ rspec-support (~> 3.13.0)
58
+ rspec-expectations (3.13.3)
47
59
  diff-lcs (>= 1.2.0, < 2.0)
48
- rspec-support (~> 3.10.0)
49
- rspec-mocks (3.10.2)
60
+ rspec-support (~> 3.13.0)
61
+ rspec-mocks (3.13.1)
50
62
  diff-lcs (>= 1.2.0, < 2.0)
51
- rspec-support (~> 3.10.0)
52
- rspec-support (3.10.2)
53
- rubocop (1.11.0)
63
+ rspec-support (~> 3.13.0)
64
+ rspec-support (3.13.1)
65
+ rubocop (1.63.5)
66
+ json (~> 2.3)
67
+ language_server-protocol (>= 3.17.0)
54
68
  parallel (~> 1.10)
55
- parser (>= 3.0.0.0)
69
+ parser (>= 3.3.0.2)
56
70
  rainbow (>= 2.2.2, < 4.0)
57
71
  regexp_parser (>= 1.8, < 3.0)
58
- rexml
59
- rubocop-ast (>= 1.2.0, < 2.0)
72
+ rexml (>= 3.2.5, < 4.0)
73
+ rubocop-ast (>= 1.31.1, < 2.0)
60
74
  ruby-progressbar (~> 1.7)
61
- unicode-display_width (>= 1.4.0, < 3.0)
62
- rubocop-ast (1.7.0)
63
- parser (>= 3.0.1.1)
64
- rubocop-config-umbrellio (1.11.0.51)
65
- rubocop (= 1.11.0)
66
- rubocop-performance (= 1.10.0)
67
- rubocop-rails (= 2.9.1)
68
- rubocop-rake (= 0.5.1)
69
- rubocop-rspec (= 2.2.0)
70
- rubocop-sequel (= 0.2.0)
71
- rubocop-performance (1.10.0)
72
- rubocop (>= 0.90.0, < 2.0)
73
- rubocop-ast (>= 0.4.0)
74
- rubocop-rails (2.9.1)
75
+ unicode-display_width (>= 2.4.0, < 3.0)
76
+ rubocop-ast (1.32.3)
77
+ parser (>= 3.3.1.0)
78
+ rubocop-capybara (2.21.0)
79
+ rubocop (~> 1.41)
80
+ rubocop-config-umbrellio (1.63.0.93)
81
+ rubocop (~> 1.63.0)
82
+ rubocop-performance (~> 1.21.0)
83
+ rubocop-rails (~> 2.24.0)
84
+ rubocop-rake (~> 0.6.0)
85
+ rubocop-rspec (~> 2.29.0)
86
+ rubocop-sequel (~> 0.3.3)
87
+ rubocop-factory_bot (2.26.1)
88
+ rubocop (~> 1.61)
89
+ rubocop-performance (1.21.1)
90
+ rubocop (>= 1.48.1, < 2.0)
91
+ rubocop-ast (>= 1.31.1, < 2.0)
92
+ rubocop-rails (2.24.1)
75
93
  activesupport (>= 4.2.0)
76
94
  rack (>= 1.1)
77
- rubocop (>= 0.90.0, < 2.0)
78
- rubocop-rake (0.5.1)
79
- rubocop
80
- rubocop-rspec (2.2.0)
95
+ rubocop (>= 1.33.0, < 2.0)
96
+ rubocop-ast (>= 1.31.1, < 2.0)
97
+ rubocop-rake (0.6.0)
81
98
  rubocop (~> 1.0)
82
- rubocop-ast (>= 1.1.0)
83
- rubocop-sequel (0.2.0)
99
+ rubocop-rspec (2.29.2)
100
+ rubocop (~> 1.40)
101
+ rubocop-capybara (~> 2.17)
102
+ rubocop-factory_bot (~> 2.22)
103
+ rubocop-rspec_rails (~> 2.28)
104
+ rubocop-rspec_rails (2.29.1)
105
+ rubocop (~> 1.61)
106
+ rubocop-sequel (0.3.4)
84
107
  rubocop (~> 1.0)
85
- ruby-progressbar (1.11.0)
86
- ruby2_keywords (0.0.5)
87
- simplecov (0.21.2)
108
+ ruby-progressbar (1.13.0)
109
+ simplecov (0.22.0)
88
110
  docile (~> 1.1)
89
111
  simplecov-html (~> 0.11)
90
112
  simplecov_json_formatter (~> 0.1)
91
- simplecov-html (0.12.3)
113
+ simplecov-html (0.13.1)
92
114
  simplecov-lcov (0.8.0)
93
- simplecov_json_formatter (0.1.3)
94
- tzinfo (2.0.4)
115
+ simplecov_json_formatter (0.1.4)
116
+ tzinfo (2.0.6)
95
117
  concurrent-ruby (~> 1.0)
96
- unicode-display_width (2.0.0)
97
- zeitwerk (2.4.2)
118
+ unicode-display_width (2.5.0)
98
119
 
99
120
  PLATFORMS
100
121
  ruby
@@ -113,4 +134,4 @@ DEPENDENCIES
113
134
  simplecov-lcov
114
135
 
115
136
  BUNDLED WITH
116
- 2.4.14
137
+ 2.4.22
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Memery   [![Gem Version](https://badge.fury.io/rb/memery.svg)](https://badge.fury.io/rb/memery) ![Build Status](https://github.com/tycooon/memery/actions/workflows/ci.yml/badge.svg) [![Coverage Status](https://coveralls.io/repos/github/tycooon/memery/badge.svg?branch=master)](https://coveralls.io/github/tycooon/memery?branch=master)
2
2
 
3
- Memery is a Ruby gem for memoization of method return values. The normal memoization in Ruby doesn't require any gems and looks like this:
3
+ Memery is a Ruby gem that simplifies memoization of method return values. In Ruby, memoization typically looks like this:
4
4
 
5
5
  ```ruby
6
6
  def user
@@ -8,7 +8,7 @@ def user
8
8
  end
9
9
  ```
10
10
 
11
- However, this approach doesn't work if calculated result can be `nil` or `false` or in case the method is using arguments. You will also require extra `begin`/`end` lines in case your method requires multiple lines:
11
+ However, this approach fails if the calculated result can be `nil` or `false`, or if the method uses arguments. Additionally, multi-line methods require extra `begin`/`end` blocks:
12
12
 
13
13
  ```ruby
14
14
  def user
@@ -20,7 +20,7 @@ def user
20
20
  end
21
21
  ```
22
22
 
23
- For all these situations memoization gems (like this one) exist. The last example can be rewritten using memery like this:
23
+ To handle these situations, memoization gems like Memery exist. The example above can be rewritten using Memery as follows:
24
24
 
25
25
  ```ruby
26
26
  memoize def user
@@ -32,7 +32,7 @@ end
32
32
 
33
33
  ## Installation
34
34
 
35
- Simply add `gem "memery"` to your Gemfile.
35
+ Add `gem "memery"` to your Gemfile.
36
36
 
37
37
  ## Usage
38
38
 
@@ -45,7 +45,7 @@ class A
45
45
  42
46
46
  end
47
47
 
48
- # or:
48
+ # Alternatively:
49
49
  # def call
50
50
  # ...
51
51
  # end
@@ -56,13 +56,13 @@ a = A.new
56
56
  a.call # => 42
57
57
  a.call # => 42
58
58
  a.call # => 42
59
- # Text will be printed only once.
59
+ # "calculating" will only be printed once.
60
60
 
61
61
  a.call { 1 } # => 42
62
- # Will print because passing a block disables memoization
62
+ # "calculating" will be printed again because passing a block disables memoization.
63
63
  ```
64
64
 
65
- Methods with arguments are supported and the memoization will be done based on arguments using an internal hash. So this will work as expected:
65
+ Memoization works with methods that take arguments. The memoization is based on these arguments using an internal hash, so the following will work as expected:
66
66
 
67
67
  ```ruby
68
68
  class A
@@ -78,7 +78,7 @@ a = A.new
78
78
  a.call(1, 5) # => 6
79
79
  a.call(2, 15) # => 17
80
80
  a.call(1, 5) # => 6
81
- # Text will be printed only twice, once per unique argument list.
81
+ # "calculating" will be printed twice, once for each unique argument list.
82
82
  ```
83
83
 
84
84
  For class methods:
@@ -98,10 +98,10 @@ end
98
98
  B.call # => 42
99
99
  B.call # => 42
100
100
  B.call # => 42
101
- # Text will be printed only once.
101
+ # "calculating" will only be printed once.
102
102
  ```
103
103
 
104
- For conditional memoization:
104
+ ### Conditional Memoization
105
105
 
106
106
  ```ruby
107
107
  class A
@@ -136,7 +136,7 @@ a.call # => 42
136
136
  # with `true` result of condition block.
137
137
  ```
138
138
 
139
- For memoization with time-to-live:
139
+ ### Memoization with Time-to-Live (TTL)
140
140
 
141
141
  ```ruby
142
142
  class A
@@ -168,7 +168,7 @@ a.call # => 42
168
168
  a.call # => 42
169
169
  ```
170
170
 
171
- Check if method is memoized:
171
+ ### Checking if a Method is Memoized
172
172
 
173
173
  ```ruby
174
174
  class A
@@ -190,8 +190,9 @@ a.memoized?(:call) # => true
190
190
  a.memoized?(:execute) # => false
191
191
  ```
192
192
 
193
- ## Difference with other gems
194
- Memery is very similar to [Memoist](https://github.com/matthewrudy/memoist). The difference is that it doesn't override methods, instead it uses Ruby 2 `Module.prepend` feature. This approach is cleaner (for example you are able to inspect the original method body using `method(:x).super_method.source`) and it allows subclasses' methods to work properly: if you redefine a memoized method in a subclass, it's not memoized by default, but you can memoize it normally (without using awkward `identifier: ` argument) and it will just work:
193
+ ## Differences from Other Gems
194
+
195
+ Memery is similar to [Memoist](https://github.com/matthewrudy/memoist), but it doesn't override methods. Instead, it uses Ruby 2's `Module.prepend` feature. This approach is cleaner, allowing you to inspect the original method body with `method(:x).super_method.source`, and it ensures that subclasses' methods function properly. If you redefine a memoized method in a subclass, it won't be memoized by default. You can memoize it normally without needing an awkward `identifier: ` argument, and it will just work:
195
196
 
196
197
  ```ruby
197
198
  class A
@@ -217,9 +218,9 @@ b.instance_variable_get(:@_memery_memoized_values)
217
218
  # => {:x_70318201388120=>{[1]=>2, [2]=>4, [3]=>6}, :x_70318184636620=>{[2]=>2}}
218
219
  ```
219
220
 
220
- Note how both method's return values are cached separately and don't interfere with each other.
221
+ Note how both methods' return values are cached separately without interfering with each other.
221
222
 
222
- The other key difference is that it doesn't change method's signature (no extra `reload` param). If you need to get unmemoized result of method, just create an unmemoized version like this:
223
+ Another key difference is that Memery doesn't change the method's signature (no extra `reload` parameter). If you need an unmemoized result, simply create an unmemoized version of the method:
223
224
 
224
225
  ```ruby
225
226
  memoize def users
@@ -231,19 +232,21 @@ def get_users
231
232
  end
232
233
  ```
233
234
 
234
- Alternatively, you can clear the whole instance's cache:
235
+ Alternatively, you can clear the entire instance's cache:
235
236
 
236
237
  ```ruby
237
238
  a.clear_memery_cache!
238
239
  ```
239
240
 
240
- Finally, you can provide a block:
241
+ You can also provide a block, though this approach is somewhat hacky:
241
242
 
242
243
  ```ruby
243
244
  a.users {}
244
245
  ```
245
246
 
246
- However, this solution is kind of hacky.
247
+ ## Object Shape Optimization
248
+
249
+ In Ruby 3.2, a new optimization called "object shape" was introduced, which can have negative interactions with dynamically added instance variables. Memery minimizes this impact by introducing only one new instance variable after initialization (`@_memery_memoized_values`). If you need to ensure a specific object shape, you can call `clear_memery_cache!` in your initializer to set the instance variable ahead of time.
247
250
 
248
251
  ## Contributing
249
252
 
data/Rakefile CHANGED
@@ -9,6 +9,7 @@ RuboCop::RakeTask.new(:lint)
9
9
 
10
10
  task default: %i[lint spec]
11
11
 
12
+ desc "run benchmark"
12
13
  task :benchmark do
13
- require_relative "./benchmark"
14
+ require_relative "benchmark"
14
15
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Memery
4
- VERSION = "1.5.0"
4
+ VERSION = "1.6.0"
5
5
  end
data/lib/memery.rb CHANGED
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "ruby2_keywords"
4
-
5
3
  require "memery/version"
6
4
 
7
5
  module Memery
@@ -82,7 +80,7 @@ module Memery
82
80
  end
83
81
 
84
82
  cache_store = (@_memery_memoized_values ||= {})
85
- cache_key = original_arity.zero? ? method_key : [method_key, *args]
83
+ cache_key = original_arity.zero? ? method_key : [method_key, *args].hash
86
84
  cache = cache_store[cache_key]
87
85
 
88
86
  return cache.result if cache&.fresh?(ttl)
data/memery.gemspec CHANGED
@@ -5,7 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require "memery/version"
6
6
 
7
7
  Gem::Specification.new do |spec|
8
- spec.required_ruby_version = ">= 2.5.0"
8
+ spec.required_ruby_version = ">= 2.7.0"
9
9
 
10
10
  spec.name = "memery"
11
11
  spec.version = Memery::VERSION
@@ -21,17 +21,4 @@ Gem::Specification.new do |spec|
21
21
  f.match(%r{^(test|spec|features)/})
22
22
  end
23
23
  spec.require_paths = ["lib"]
24
-
25
- spec.add_runtime_dependency "ruby2_keywords", "~> 0.0.2"
26
-
27
- spec.add_development_dependency "activesupport"
28
- spec.add_development_dependency "benchmark-ips"
29
- spec.add_development_dependency "benchmark-memory"
30
- spec.add_development_dependency "bundler"
31
- spec.add_development_dependency "pry"
32
- spec.add_development_dependency "rake"
33
- spec.add_development_dependency "rspec"
34
- spec.add_development_dependency "rubocop-config-umbrellio"
35
- spec.add_development_dependency "simplecov"
36
- spec.add_development_dependency "simplecov-lcov"
37
24
  end
metadata CHANGED
@@ -1,169 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: memery
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuri Smirnov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-14 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: ruby2_keywords
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 0.0.2
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 0.0.2
27
- - !ruby/object:Gem::Dependency
28
- name: activesupport
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: benchmark-ips
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: benchmark-memory
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: bundler
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: pry
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: rake
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: rspec
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: rubocop-config-umbrellio
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: simplecov
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: simplecov-lcov
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ">="
165
- - !ruby/object:Gem::Version
166
- version: '0'
11
+ date: 2024-09-12 00:00:00.000000000 Z
12
+ dependencies: []
167
13
  description: Memery is a gem for memoization.
168
14
  email:
169
15
  - tycoooon@gmail.com
@@ -176,7 +22,6 @@ files:
176
22
  - ".gitignore"
177
23
  - ".rspec"
178
24
  - ".rubocop.yml"
179
- - CHANGELOG.md
180
25
  - Gemfile
181
26
  - Gemfile.lock
182
27
  - LICENSE.txt
@@ -198,14 +43,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
198
43
  requirements:
199
44
  - - ">="
200
45
  - !ruby/object:Gem::Version
201
- version: 2.5.0
46
+ version: 2.7.0
202
47
  required_rubygems_version: !ruby/object:Gem::Requirement
203
48
  requirements:
204
49
  - - ">="
205
50
  - !ruby/object:Gem::Version
206
51
  version: '0'
207
52
  requirements: []
208
- rubygems_version: 3.4.13
53
+ rubygems_version: 3.1.6
209
54
  signing_key:
210
55
  specification_version: 4
211
56
  summary: A gem for memoization.
data/CHANGELOG.md DELETED
@@ -1,62 +0,0 @@
1
- ## [Unreleased]
2
-
3
- ## [1.4.0] - 2021-03-15
4
- ### Fixed
5
- - Fix compatibility with `ActiveSupport::Concern`. ([@tycooon] and [@AlexWayfer]) [#26]
6
-
7
- ## [1.3.0] - 2020-02-10
8
- ### Added
9
- - Allow memoization after including module with Memery. ([@AlexWayfer]) [#23]
10
-
11
- ### Changed
12
- - Make `memoize` return the method name to allow chaining. ([@JelF]) [#22]
13
-
14
- ### Fixed
15
- - Fix warnings in Ruby 2.7. ([@AlexWayfer]) [#19], [#25]
16
-
17
- ## [1.2.0] - 2019-10-19
18
- ### Added
19
- - Add `:ttl` option for `memoize` method ([@AlexWayfer]) [#11]
20
- - Add benchmark script ([@AlexWayfer]) [#14]
21
- - Add `.memoized?` method ([@AlexWayfer]) [#17]
22
-
23
- ## [1.1.0] - 2019-08-05
24
- ### Fixed
25
- - Optimize speed and memory for cached values returns. ([@AlexWayfer]) [#10]
26
-
27
- ## [1.0.0] - 2018-08-31
28
- ### Added
29
- - Add `:condition` option for `.memoize` method. ([@AlexWayfer]) [#7]
30
-
31
- ## [0.6.0] - 2018-04-20
32
- ### Added
33
- - Readme example for memoizing class methods. ([@AlexWayfer]) [#3]
34
- - Memery raises `ArgumentError` if method is not defined when you call `memoize`.
35
-
36
- ## [0.5.0] - 2017-06-12
37
- - Initial public version.
38
-
39
- [0.5.0]: https://github.com/tycooon/memery/tree/v0.5.0
40
- [0.6.0]: https://github.com/tycooon/memery/compare/v0.5.0...v0.6.0
41
- [1.0.0]: https://github.com/tycooon/memery/compare/v0.6.0...v1.0.0
42
- [1.1.0]: https://github.com/tycooon/memery/compare/v1.0.0...v1.1.0
43
- [1.2.0]: https://github.com/tycooon/memery/compare/v1.1.0...v1.2.0
44
- [1.3.0]: https://github.com/tycooon/memery/compare/v1.2.0...v1.3.0
45
- [1.4.0]: https://github.com/tycooon/memery/compare/v1.3.0...v1.4.0
46
- [Unreleased]: https://github.com/tycooon/memery/compare/v1.4.0...HEAD
47
-
48
- [@tycooon]: https://github.com/tycooon
49
- [@AlexWayfer]: https://github.com/AlexWayfer
50
- [@JelF]: https://github.com/JelF
51
-
52
- [#3]: https://github.com/tycooon/memery/pull/3
53
- [#7]: https://github.com/tycooon/memery/pull/7
54
- [#10]: https://github.com/tycooon/memery/pull/10
55
- [#11]: https://github.com/tycooon/memery/pull/11
56
- [#14]: https://github.com/tycooon/memery/pull/14
57
- [#17]: https://github.com/tycooon/memery/pull/17
58
- [#19]: https://github.com/tycooon/memery/pull/19
59
- [#22]: https://github.com/tycooon/memery/pull/22
60
- [#23]: https://github.com/tycooon/memery/pull/23
61
- [#25]: https://github.com/tycooon/memery/pull/25
62
- [#26]: https://github.com/tycooon/memery/pull/26