memo_wise 1.7.0 → 1.8.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: '009e350b06faaa529d704c4386b7443719d9a1faa2a58d9532e33028545ae938'
4
- data.tar.gz: b7c41458ffb2ff88afc3f731c6c9e04e5133e2ac8830a24dfc1d78409802831d
3
+ metadata.gz: 07ea8ff9f5bbe537cceded02e2379f22145b2ca0023ee745cca77d503875884c
4
+ data.tar.gz: 43a1683798319eccc7fb0781519b84575c1096d938f7076b6dc5747370e5849e
5
5
  SHA512:
6
- metadata.gz: 72500c89882f08671756f564205aef35e8546edb24d416e98444d5368c5e531c9e815791ba7ece1385e7e1405aaf1395a9c930dd8c711c2a70563818c2d1d4f6
7
- data.tar.gz: 95418a3b09950182d433b037250afcd5142c323fa23dad4be256984a76bb4ebe0c3a831b0ba1fd8205767a0b3ee4566685a3687cb0042e59bd9bc03030654fbe
6
+ metadata.gz: 0d40f55683a9dd45e81ffc16ac0c4678294cf0d0668c18e676717b9146709b538a7ed9c58b6b3d75f78e262e71f27267228ee2271e47994674d32967f7ff167f
7
+ data.tar.gz: 92ad0acb0712b0cb122c77a0a8901003b79d73253adc1db8d27fedb42ec07ba49d4706ccf4be8b44a79d18856be909235ec4b4673bf576db69d7dc4643e23770
@@ -0,0 +1,23 @@
1
+ # Dependency Review Action
2
+ #
3
+ # This Action will scan dependency manifest files that change as part of a Pull Request, surfacing known-vulnerable versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable packages will be blocked from merging.
4
+ #
5
+ # Source repository: https://github.com/actions/dependency-review-action
6
+ # Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement
7
+ name: 'Dependency Review'
8
+ on: [pull_request]
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ dependency-review:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - name: 'Checkout Repository'
18
+ uses: actions/checkout@v4
19
+ - name: 'Dependency Review'
20
+ uses: actions/dependency-review-action@v3
21
+ with:
22
+ # Possible values: "critical", "high", "moderate", "low"
23
+ fail-on-severity: high
@@ -14,17 +14,17 @@ jobs:
14
14
  matrix:
15
15
  # Due to https://github.com/actions/runner/issues/849, we have to use
16
16
  # quotes for '3.0' -- without quotes, CI sees '3' and runs the latest.
17
- ruby: [2.4, 2.5, 2.6, 2.7, '3.0', 3.1, jruby, truffleruby-head]
17
+ ruby: [2.4, 2.5, 2.6, 2.7, '3.0', 3.1, 3.2, jruby, truffleruby-head]
18
18
  runs-on: ubuntu-latest
19
19
  steps:
20
- - uses: actions/checkout@v3
20
+ - uses: actions/checkout@v4
21
21
 
22
22
  # Conditionally configure bundler via environment variables as advised
23
23
  # * https://github.com/ruby/setup-ruby#bundle-config
24
24
  - name: Set bundler environment variables
25
25
  run: |
26
26
  echo "BUNDLE_WITHOUT=checks:docs" >> $GITHUB_ENV
27
- if: matrix.ruby != 3.1
27
+ if: matrix.ruby != 3.2
28
28
 
29
29
  # Use 'bundler-cache: true' instead of actions/cache as advised:
30
30
  # * https://github.com/actions/cache/blob/main/examples.md#ruby---bundler
@@ -35,23 +35,23 @@ jobs:
35
35
 
36
36
  - run: bundle exec rspec
37
37
 
38
- - uses: codecov/codecov-action@v2
38
+ - uses: codecov/codecov-action@v3
39
39
  with:
40
40
  files: ./coverage/coverage.xml
41
41
  fail_ci_if_error: true # optional (default = false)
42
42
  verbose: true # optional (default = false)
43
- if: matrix.ruby == 3.1
43
+ if: matrix.ruby == 3.2
44
44
 
45
45
  - run: bundle exec rubocop
46
- if: matrix.ruby == 3.1
46
+ if: matrix.ruby == 3.2
47
47
 
48
48
  - run: |
49
49
  bundle exec yard doctest
50
50
  bundle exec dokaz
51
- if: matrix.ruby == 3.1
51
+ if: matrix.ruby == 3.2
52
52
 
53
- - name: Run benchmarks on Ruby 2.7 or 3.1
53
+ - name: Run benchmarks on Ruby 2.7 or 3.2
54
54
  run: |
55
55
  BUNDLE_GEMFILE=benchmarks/Gemfile bundle install --jobs 4 --retry 3
56
56
  BUNDLE_GEMFILE=benchmarks/Gemfile bundle exec ruby benchmarks/benchmarks.rb
57
- if: matrix.ruby == '2.7' || matrix.ruby == '3.1'
57
+ if: matrix.ruby == '2.7' || matrix.ruby == '3.2'
data/.gitignore CHANGED
@@ -11,3 +11,6 @@
11
11
 
12
12
  # rspec failure tracking
13
13
  .rspec_status
14
+
15
+ # Jetbrains Rubymine IDE files
16
+ .idea
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  inherit_gem:
2
- panolint: panolint-rubocop.yml
2
+ panolint-ruby: panolint-ruby-rubocop.yml
3
3
 
4
4
  Layout/LineLength:
5
5
  Max: 120
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.1.0
1
+ 3.2.1
data/CHANGELOG.md CHANGED
@@ -1,156 +1,250 @@
1
1
  # Changelog
2
2
 
3
- All notable changes to this project will be documented in this file.
3
+ All notable changes to this project will be documented in this file, which
4
+ follows a format inspired by [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
4
5
 
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## Unreleased
8
+ ## [Unreleased](https://github.com/panorama-ed/memo_wise/compare/v1.8.0...HEAD)
9
9
 
10
- - Nothing yet!
10
+ **Gem enhancements:** none
11
11
 
12
- ## [1.7.0] - 2022-04-04
12
+ _No breaking changes!_
13
13
 
14
- ### Updated
14
+ **Project enhancements:** none
15
15
 
16
- - Optimize memoized lookups for methods with multiple required arguments
17
- ([#276](https://github.com/panorama-ed/memo_wise/pull/276))
16
+ ## [v1.8.0](https://github.com/panorama-ed/memo_wise/compare/v1.7.0...v1.8.0) - 2023-10-25
18
17
 
19
- ## [1.6.0] - 2022-01-24
18
+ **Gem enhancements:**
20
19
 
21
- ### Fixed
20
+ - In Ruby3.2+, for singleton classes, use `#attached_object` instead of `ObjectSpace` [[#318]](https://github.com/panorama-ed/memo_wise/pull/318)
22
21
 
23
- - Fixed a bug relating to inheritance of classes which include module which
24
- prepends MemoWise ([#265](https://github.com/panorama-ed/memo_wise/pull/265))
22
+ _No breaking changes!_
25
23
 
26
- ### Updated
24
+ **Project enhancements:**
27
25
 
28
- - Update official test coverage to support Ruby 3.1
26
+ - Switched RuboCop configuration from `panolint` to `panolint-ruby` [[#312]](https://github.com/panorama-ed/memo_wise/pull/312)
27
+ - Updated benchmark results in `README.md` to Ruby 3.2.2 and 2.7.8 [[#313]](https://github.com/panorama-ed/memo_wise/pull/297)
28
+ - Updated `Dry::Core` gem version to 1.0.0 in benchmarks [[#297]](https://github.com/panorama-ed/memo_wise/pull/297)
29
+ - Updated `Memery` gem version to 1.5.0 in benchmarks [[#313]](https://github.com/panorama-ed/memo_wise/pull/313)
30
+ - Updated `Memoized` gem version to 1.1.1 in benchmarks [[#288]](https://github.com/panorama-ed/memo_wise/pull/288)
31
+ - Reorganized `CHANGELOG.md` for improved clarity and completeness
32
+ [[#282](https://github.com/panorama-ed/memo_wise/pull/282)]
29
33
 
30
- ## [1.5.0] - 2021-12-17
34
+ ## [v1.7.0](https://github.com/panorama-ed/memo_wise/compare/v1.6.0...v1.7.0) - 2022-04-04
31
35
 
32
- ### Fixed
36
+ **Gem enhancements:**
33
37
 
34
- - Remove optimization for truthy results to fix thread safety race condition
35
- bugs
36
- - Switch to a simpler internal data structure to fix several classes of bugs
37
- related to inheritance that the previous few versions were unable to
38
- sufficiently address
38
+ - Optimized memoized lookups for methods with multiple required arguments
39
+ [[#276](https://github.com/panorama-ed/memo_wise/pull/276)]
39
40
 
40
- ## [1.4.0] - 2021-12-10
41
+ _No breaking changes!_
41
42
 
42
- ### Fixed
43
+ **Project enhancements:**
43
44
 
44
- - Fix several bugs related to classes inheriting memoized methods
45
- from multiple modules or a parent class ([#241](https://github.com/panorama-ed/memo_wise/pull/241))
45
+ - Added benchmarking against GitHub `main` branch to CI [[#274](https://github.com/panorama-ed/memo_wise/pull/274)]
46
46
 
47
- ## [1.3.0] - 2021-11-22
47
+ ## [v1.6.0](https://github.com/panorama-ed/memo_wise/compare/v1.5.0...v1.6.0) - 2022-01-24
48
48
 
49
- ### Fixed
49
+ **Gem enhancements:**
50
50
 
51
- - Fix thread-safety issue in concurrent calls to zero-arg method in unmemoized
52
- state which resulted in a `nil` value being accidentally returned in one thread
53
- - Fix bugs related to child classes inheriting from parent classes that use
54
- `MemoWise`
51
+ - Fixed a bug relating to inheritance of classes which include a module which
52
+ `prepend`s `MemoWise` [[#262](https://github.com/panorama-ed/memo_wise/pull/262)]
55
53
 
56
- ## [1.2.0] - 2021-11-10
54
+ _No breaking changes!_
57
55
 
58
- ### Updated
59
- - Improved performance of all methods by using an outer Array instead of a Hash
60
- - Improved performance for multi-argument methods and simplify internal data
61
- structures
56
+ **Project enhancements:**
62
57
 
63
- ### Fixed
64
- - Removed use of #hash due to potential of hash collisions
65
- - Updated internal local variable names to avoid name collisions with method
66
- arguments
58
+ - Update official test coverage to support Ruby 3.1 [[#263](https://github.com/panorama-ed/memo_wise/pull/263)]
67
59
 
68
- ### Breaking Changes
69
- - None
60
+ ## [v1.5.0](https://github.com/panorama-ed/memo_wise/compare/v1.4.0...v1.5.0) - 2021-12-17
70
61
 
71
- ## [1.1.0] - 2021-07-29
72
- ### Updated
73
- - Improved performance across the board by:
74
- - removing `Hash#fetch`
75
- - using `Array#hash`
76
- - avoiding multi-layer hash lookups for multi-argument methods
77
- - optimizing for truthy results
78
- - Add `dry-core` to benchmarks in README
62
+ **Gem enhancements:**
79
63
 
80
- ### Fixed
81
- - Fixed usage on module singleton classes
82
- - Fixed usage on module which would be extended by other classes
64
+ - Removed thread-unsafe optimization which optimized for returning "truthy" results
65
+ [[#255](https://github.com/panorama-ed/memo_wise/pull/255)]
66
+ - Switched to a simpler internal data structure to fix several classes of bugs related to inheritance
67
+ that the previous few versions were unable to sufficiently address
68
+ [[#250](https://github.com/panorama-ed/memo_wise/pull/250)]
83
69
 
84
- ### Breaking Changes
85
- - None
70
+ _No breaking changes!_
86
71
 
87
- ## [1.0.0] - 2021-06-24
88
- ### Added
89
- - Support for `.preset_memo_wise` on class methods
90
- - Support for `.reset_memo_wise` on class methods
72
+ **Project enhancements:**
91
73
 
92
- ### Updated
93
- - Improved performance for common cases by reducing array allocations
74
+ - Expanded thread-safety testing [[#254](https://github.com/panorama-ed/memo_wise/pull/254)]
94
75
 
95
- ## [0.4.0] - 2021-04-30
96
- ### Added
97
- - Documentation of confusing module test behavior
98
- - Support using MemoWise in classes with keyword arguments in the initializer
99
- - Support Marshal dump/load of classes using MemoWise
76
+ ## [v1.4.0](https://github.com/panorama-ed/memo_wise/compare/v1.3.0...v1.4.0) - 2021-12-10
100
77
 
101
- ## [0.3.0] - 2021-02-11
102
- ### Added
103
- - Changelog and tags
104
- - Logo
105
- - Memoization of class methods
106
- - Support for instances created with `Class#allocate`
107
- - Official testing and benchmarks for Ruby 3.0
108
- - Release procedure for gem
109
-
110
- ## [0.2.0] - 2020-10-28
111
- ### Added
112
- - `#preset_memo_wise` to preset memoization values
113
- - YARD docs
114
- - Code coverage setup, badge, tests to ensure 100% coverage
115
-
116
- ## [0.1.2] - 2020-10-01
117
- ### Added
118
- - Tests to assert memoization works with Values gem
119
- - Badges for tests, docs and gem
120
-
121
- ### Changed
122
- - Internal data structure for memoization is a nested hash
123
- - Separate `*args` and `**kwargs` in method signatures
124
-
125
- ## [0.1.1] - 2020-08-03
126
- ### Added
127
- - Benchmarks comparing `MemoWise` to other Ruby memoization gems
128
- - `#reset_memo_wise` resets memoization for specific arguments for methods
129
-
130
- ## [0.1.0] - 2020-07-20
131
- ### Added
132
- - `#memo_wise` defined to enable memoization
133
- - `#reset_memo_wise` and `#reset_all_memo_wise` defined to reset memoization
134
-
135
- ## [0.0.1] - 2020-06-29
136
- ### Added
137
- - Initial gem project structure
138
- - Panolint
139
- - Dependabot setup
140
-
141
- [Unreleased]: https://github.com/panorama-ed/memo_wise/compare/v1.7.0...HEAD
142
- [1.6.0]: https://github.com/panorama-ed/memo_wise/compare/v1.6.0...v1.7.0
143
- [1.6.0]: https://github.com/panorama-ed/memo_wise/compare/v1.5.0...v1.6.0
144
- [1.5.0]: https://github.com/panorama-ed/memo_wise/compare/v1.4.0...v1.5.0
145
- [1.4.0]: https://github.com/panorama-ed/memo_wise/compare/v1.3.0...v1.4.0
146
- [1.3.0]: https://github.com/panorama-ed/memo_wise/compare/v1.2.0...v1.3.0
147
- [1.2.0]: https://github.com/panorama-ed/memo_wise/compare/v1.1.0...v1.2.0
148
- [1.1.0]: https://github.com/panorama-ed/memo_wise/compare/v1.0.0...v1.1.0
149
- [1.0.0]: https://github.com/panorama-ed/memo_wise/compare/v0.4.0...v1.0.0
150
- [0.4.0]: https://github.com/panorama-ed/memo_wise/compare/v0.3.0...v0.4.0
151
- [0.3.0]: https://github.com/panorama-ed/memo_wise/compare/v0.2.0...v0.3.0
152
- [0.2.0]: https://github.com/panorama-ed/memo_wise/compare/v0.1.2...v0.2.0
153
- [0.1.2]: https://github.com/panorama-ed/memo_wise/compare/v0.1.1...v0.1.2
154
- [0.1.1]: https://github.com/panorama-ed/memo_wise/compare/v0.1.0...v0.1.1
155
- [0.1.0]: https://github.com/panorama-ed/memo_wise/compare/v0.0.1...v0.1.0
156
- [0.0.1]: https://github.com/panorama-ed/memo_wise/releases/tag/v0.0.1
78
+ **Gem enhancements:**
79
+
80
+ - Fixed several bugs related to classes inheriting memoized methods from multiple modules or a parent class
81
+ [[#241](https://github.com/panorama-ed/memo_wise/pull/241)]
82
+
83
+ _No breaking changes!_
84
+
85
+ **Project enhancements:**
86
+
87
+ - Added TruffleRuby tests to CI [[#237](https://github.com/panorama-ed/memo_wise/pull/237)]
88
+
89
+ ## [v1.3.0](https://github.com/panorama-ed/memo_wise/compare/v1.2.0...v1.3.0) - 2021-11-22
90
+
91
+ **Gem enhancements:**
92
+
93
+ - Fixed thread-safety issue in concurrent calls to a zero-arg method in an unmemoized state (which resulted in a `nil` value being incorrectly returned in one thread) [[#230](https://github.com/panorama-ed/memo_wise/pull/230)]
94
+ - Fixed bugs related to child classes inheriting from parent classes that use `MemoWise`
95
+ [[#229](https://github.com/panorama-ed/memo_wise/pull/229)]
96
+
97
+ _No breaking changes!_
98
+
99
+ **Project enhancements:**
100
+
101
+ - Added thread-safety test [[#225](https://github.com/panorama-ed/memo_wise/pull/225)]
102
+
103
+ ## [v1.2.0](https://github.com/panorama-ed/memo_wise/compare/v1.1.0...v1.2.0) - 2021-11-10
104
+
105
+ **Gem enhancements:**
106
+
107
+ - Optimized memoized lookups for all methods by using an outer array instead of a hash
108
+ [[#211](https://github.com/panorama-ed/memo_wise/pull/211),
109
+ [#210](https://github.com/panorama-ed/memo_wise/pull/210),
110
+ [#219](https://github.com/panorama-ed/memo_wise/pull/219)]
111
+ - Removed an internal optimization using `#hash` due to the potential of hash collisions
112
+ [[#219](https://github.com/panorama-ed/memo_wise/pull/219)]
113
+ - Changed internal local variable names to avoid name collisions with memoized method arguments
114
+ [[#221](https://github.com/panorama-ed/memo_wise/pull/221)]
115
+
116
+ _No breaking changes!_
117
+
118
+ **Project enhancements:**
119
+
120
+ - Added nuance to benchmarks [[#214](https://github.com/panorama-ed/memo_wise/pull/214)]
121
+ - Significantly sped up tests [[#206](https://github.com/panorama-ed/memo_wise/pull/206)]
122
+
123
+ ## [v1.1.0](https://github.com/panorama-ed/memo_wise/compare/v1.0.0...v1.1.0) - 2021-07-29
124
+
125
+ **Gem enhancements:**
126
+
127
+ - Fixed buggy behavior in module singleton classes and modules extended by other classes
128
+ [[#185](https://github.com/panorama-ed/memo_wise/pull/185)]
129
+ - Optimized memoized lookups in many cases, using a variety of optimizations
130
+ [[#189](https://github.com/panorama-ed/memo_wise/pull/189)]
131
+
132
+ _No breaking changes!_
133
+
134
+ **Project enhancements:**
135
+
136
+ - Added the `dry-core` gem to benchmarks [[#187](https://github.com/panorama-ed/memo_wise/pull/187)]
137
+
138
+ ## [v1.0.0](https://github.com/panorama-ed/memo_wise/compare/v0.4.0...v1.0.0) - 2021-06-24
139
+
140
+ **Gem enhancements:**
141
+
142
+ - Class methods are now supported by `#preset_memo_wise` and `#reset_memo_wise`
143
+ [[#134](https://github.com/panorama-ed/memo_wise/pull/134),
144
+ [#145](https://github.com/panorama-ed/memo_wise/pull/145)]
145
+ - Optimized memoized lookups in many cases [[#143](https://github.com/panorama-ed/memo_wise/pull/143)]
146
+ - Implemented `.instance_method` to proxy original method parameters
147
+ [[#163](https://github.com/panorama-ed/memo_wise/pull/163)]
148
+
149
+ _No breaking changes!_
150
+
151
+ **Project enhancements:** none
152
+
153
+ ## [v0.4.0](https://github.com/panorama-ed/memo_wise/compare/v0.3.0...v0.4.0) - 2021-04-30
154
+
155
+ **Gem enhancements:**
156
+
157
+ - Methods on objects that are serialized/deserialized with `Marshal` can now be memoized
158
+ [[#138](https://github.com/panorama-ed/memo_wise/pull/138)]
159
+ - Classes with keyword arguments in `#initialize` can now support memoization
160
+ [[#125](https://github.com/panorama-ed/memo_wise/pull/125)]
161
+
162
+ _No breaking changes!_
163
+
164
+ **Project enhancements:**
165
+
166
+ - Added [`A Note on Testing`](https://github.com/panorama-ed/memo_wise#a-note-on-testing) section of `README.md`
167
+ [[#123](https://github.com/panorama-ed/memo_wise/pull/123)]
168
+
169
+ ## [v0.3.0](https://github.com/panorama-ed/memo_wise/compare/v0.2.0...v0.3.0) - 2021-02-11
170
+
171
+ **Gem enhancements:**
172
+
173
+ - Class methods can now be memoized [[#83](https://github.com/panorama-ed/memo_wise/pull/83)]
174
+ - Instance methods on objects created with `Class#allocate` can now be memoized
175
+ [[#99](https://github.com/panorama-ed/memo_wise/pull/99)]
176
+ - Fixed `#reset_memo_wise` for private methods [[#111](https://github.com/panorama-ed/memo_wise/pull/111)]
177
+
178
+ _No breaking changes!_
179
+
180
+ **Project enhancements:**
181
+
182
+ - Added the project logo [[#81](https://github.com/panorama-ed/memo_wise/pull/81)]
183
+ - Added `CHANGELOG.md` and version tags [[#78](https://github.com/panorama-ed/memo_wise/pull/78)]
184
+ - Documented release procedure in `README.md` [[#114](https://github.com/panorama-ed/memo_wise/pull/114)]
185
+ - Updated CI testing and benchmarks for Ruby 3.0 [[#101](https://github.com/panorama-ed/memo_wise/pull/101)]
186
+
187
+ ## [v0.2.0](https://github.com/panorama-ed/memo_wise/compare/v0.1.2...v0.2.0) - 2020-10-28
188
+
189
+ **Gem enhancements:**
190
+
191
+ - Added `#preset_memo_wise` to preset memoization values [[#30](https://github.com/panorama-ed/memo_wise/pull/30)]
192
+
193
+ _Breaking changes:_
194
+
195
+ - Removed `#reset_all_memo_wise` (use `#reset_memo_wise` instead)
196
+ [[#52](https://github.com/panorama-ed/memo_wise/pull/52)]
197
+
198
+ **Project enhancements:**
199
+
200
+ - YARD docs are now generated [[#52](https://github.com/panorama-ed/memo_wise/pull/52),
201
+ [#55](https://github.com/panorama-ed/memo_wise/pull/55),
202
+ [#57](https://github.com/panorama-ed/memo_wise/pull/57)]
203
+ - 100% code coverage is now enforced [[#62](https://github.com/panorama-ed/memo_wise/pull/62)]
204
+
205
+ ## [v0.1.2](https://github.com/panorama-ed/memo_wise/compare/v0.1.1...v0.1.2) - 2020-10-01
206
+
207
+ **Gem enhancements:**
208
+
209
+ - Optimized memoized lookups with internal data structure and method signature changes
210
+ [[#28](https://github.com/panorama-ed/memo_wise/pull/28), [#32](https://github.com/panorama-ed/memo_wise/pull/32)]
211
+
212
+ _No breaking changes!_
213
+
214
+ **Project enhancements:**
215
+
216
+ - Tests now assert that memoization works with the `Values` gem
217
+ [[#46](https://github.com/panorama-ed/memo_wise/pull/46)]
218
+ - Added `README.md` badges for tests, docs, and RubyGems
219
+ [[#47](https://github.com/panorama-ed/memo_wise/pull/47)]
220
+
221
+ ## [v0.1.1](https://github.com/panorama-ed/memo_wise/compare/v0.1.0...v0.1.1) - 2020-08-03
222
+
223
+ **Gem enhancements:**
224
+
225
+ - `#reset_memo_wise` can now reset memoization for specific method arguments
226
+ [[#20](https://github.com/panorama-ed/memo_wise/pull/20)]
227
+
228
+ _No breaking changes!_
229
+
230
+ **Project enhancements:**
231
+
232
+ - Added benchmarks to compare `MemoWise` to other Ruby memoization gems
233
+ [[#13](https://github.com/panorama-ed/memo_wise/pull/13)]
234
+
235
+ ## [v0.1.0](https://github.com/panorama-ed/memo_wise/compare/v0.0.1...v0.1.0) - 2020-07-20
236
+
237
+ **Gem enhancements:**
238
+
239
+ - Added `#memo_wise`, which enables method memoization [[#4](https://github.com/panorama-ed/memo_wise/pull/4)]
240
+ - Added `#reset_memo_wise` and `#reset_all_memo_wise`, which reset memoization
241
+ [[#4](https://github.com/panorama-ed/memo_wise/pull/4)]
242
+
243
+ _No breaking changes!_
244
+
245
+ **Project enhancements:** none
246
+
247
+ ## [v0.0.1](https://github.com/panorama-ed/memo_wise/releases/tag/v0.0.1) - 2020-06-29
248
+
249
+ *This version does not provide memoization functionality; it simply includes
250
+ project scaffolding.*
data/Gemfile CHANGED
@@ -7,13 +7,13 @@ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
7
7
  gemspec
8
8
 
9
9
  group :test do
10
- gem "rspec", "~> 3.11"
10
+ gem "rspec", "~> 3.12"
11
11
  gem "values", "~> 1"
12
12
  end
13
13
 
14
14
  # Excluded from CI except on latest MRI Ruby, to reduce compatibility burden
15
15
  group :checks do
16
- gem "panolint", github: "panorama-ed/panolint", branch: "main"
16
+ gem "panolint-ruby", github: "panorama-ed/panolint-ruby", branch: "main"
17
17
 
18
18
  # Simplecov to generate coverage info
19
19
  gem "simplecov", require: false
@@ -24,8 +24,8 @@ end
24
24
 
25
25
  # Excluded from CI except on latest MRI Ruby, to reduce compatibility burden
26
26
  group :docs do
27
- gem "dokaz"
28
- gem "redcarpet", "~> 3.5"
27
+ gem "dokaz", "~> 0.0.5"
28
+ gem "redcarpet", "~> 3.6"
29
29
  gem "yard", "~> 0.9"
30
30
  gem "yard-doctest", "~> 0.1"
31
31
  end
data/Gemfile.lock CHANGED
@@ -1,89 +1,78 @@
1
1
  GIT
2
- remote: https://github.com/panorama-ed/panolint.git
3
- revision: 32da31ae800b7e16068b6495397cd98aa04c68a3
2
+ remote: https://github.com/panorama-ed/panolint-ruby.git
3
+ revision: a93988ea554177cf0ec9ef636c442f9d3af49a10
4
4
  branch: main
5
5
  specs:
6
- panolint (0.1.4)
7
- brakeman (>= 4.8, < 6.0)
8
- rubocop (>= 0.83, < 2.0)
9
- rubocop-performance (~> 1.5)
10
- rubocop-rails (~> 2.5)
11
- rubocop-rake (~> 0.5)
12
- rubocop-rspec (~> 2.0)
6
+ panolint-ruby (0)
7
+ rubocop (= 1.51.0)
8
+ rubocop-performance (= 1.18.0)
9
+ rubocop-rspec (= 2.22.0)
13
10
 
14
11
  PATH
15
12
  remote: .
16
13
  specs:
17
- memo_wise (1.7.0)
14
+ memo_wise (1.8.0)
18
15
 
19
16
  GEM
20
17
  remote: https://rubygems.org/
21
18
  specs:
22
- activesupport (7.0.2.2)
23
- concurrent-ruby (~> 1.0, >= 1.0.2)
24
- i18n (>= 1.6, < 2)
25
- minitest (>= 5.1)
26
- tzinfo (~> 2.0)
27
19
  ansi (1.5.0)
28
20
  ast (2.4.2)
29
- brakeman (5.2.1)
30
- concurrent-ruby (1.1.9)
31
21
  diff-lcs (1.5.0)
32
22
  docile (1.4.0)
33
- dokaz (0.0.4)
23
+ dokaz (0.0.5)
34
24
  ansi
35
- rouge
25
+ rouge (~> 4)
36
26
  slop (~> 3)
37
- i18n (1.10.0)
38
- concurrent-ruby (~> 1.0)
39
- minitest (5.15.0)
40
- parallel (1.21.0)
41
- parser (3.1.1.0)
27
+ json (2.6.3)
28
+ minitest (5.18.0)
29
+ parallel (1.23.0)
30
+ parser (3.2.2.1)
42
31
  ast (~> 2.4.1)
43
- rack (2.2.3)
44
32
  rainbow (3.1.1)
45
33
  rake (13.0.6)
46
- redcarpet (3.5.1)
47
- regexp_parser (2.2.1)
34
+ redcarpet (3.6.0)
35
+ regexp_parser (2.8.0)
48
36
  rexml (3.2.5)
49
- rouge (3.28.0)
50
- rspec (3.11.0)
51
- rspec-core (~> 3.11.0)
52
- rspec-expectations (~> 3.11.0)
53
- rspec-mocks (~> 3.11.0)
54
- rspec-core (3.11.0)
55
- rspec-support (~> 3.11.0)
56
- rspec-expectations (3.11.0)
37
+ rouge (4.1.0)
38
+ rspec (3.12.0)
39
+ rspec-core (~> 3.12.0)
40
+ rspec-expectations (~> 3.12.0)
41
+ rspec-mocks (~> 3.12.0)
42
+ rspec-core (3.12.1)
43
+ rspec-support (~> 3.12.0)
44
+ rspec-expectations (3.12.2)
57
45
  diff-lcs (>= 1.2.0, < 2.0)
58
- rspec-support (~> 3.11.0)
59
- rspec-mocks (3.11.0)
46
+ rspec-support (~> 3.12.0)
47
+ rspec-mocks (3.12.3)
60
48
  diff-lcs (>= 1.2.0, < 2.0)
61
- rspec-support (~> 3.11.0)
62
- rspec-support (3.11.0)
63
- rubocop (1.25.1)
49
+ rspec-support (~> 3.12.0)
50
+ rspec-support (3.12.0)
51
+ rubocop (1.51.0)
52
+ json (~> 2.3)
64
53
  parallel (~> 1.10)
65
- parser (>= 3.1.0.0)
54
+ parser (>= 3.2.0.0)
66
55
  rainbow (>= 2.2.2, < 4.0)
67
56
  regexp_parser (>= 1.8, < 3.0)
68
- rexml
69
- rubocop-ast (>= 1.15.1, < 2.0)
57
+ rexml (>= 3.2.5, < 4.0)
58
+ rubocop-ast (>= 1.28.0, < 2.0)
70
59
  ruby-progressbar (~> 1.7)
71
- unicode-display_width (>= 1.4.0, < 3.0)
72
- rubocop-ast (1.16.0)
73
- parser (>= 3.1.1.0)
74
- rubocop-performance (1.13.2)
60
+ unicode-display_width (>= 2.4.0, < 3.0)
61
+ rubocop-ast (1.28.1)
62
+ parser (>= 3.2.1.0)
63
+ rubocop-capybara (2.18.0)
64
+ rubocop (~> 1.41)
65
+ rubocop-factory_bot (2.23.1)
66
+ rubocop (~> 1.33)
67
+ rubocop-performance (1.18.0)
75
68
  rubocop (>= 1.7.0, < 2.0)
76
69
  rubocop-ast (>= 0.4.0)
77
- rubocop-rails (2.13.2)
78
- activesupport (>= 4.2.0)
79
- rack (>= 1.1)
80
- rubocop (>= 1.7.0, < 2.0)
81
- rubocop-rake (0.6.0)
82
- rubocop (~> 1.0)
83
- rubocop-rspec (2.9.0)
84
- rubocop (~> 1.19)
85
- ruby-progressbar (1.11.0)
86
- simplecov (0.21.2)
70
+ rubocop-rspec (2.22.0)
71
+ rubocop (~> 1.33)
72
+ rubocop-capybara (~> 2.17)
73
+ rubocop-factory_bot (~> 2.22)
74
+ ruby-progressbar (1.13.0)
75
+ simplecov (0.22.0)
87
76
  docile (~> 1.1)
88
77
  simplecov-html (~> 0.11)
89
78
  simplecov_json_formatter (~> 0.1)
@@ -93,13 +82,9 @@ GEM
93
82
  simplecov-html (0.12.3)
94
83
  simplecov_json_formatter (0.1.4)
95
84
  slop (3.6.0)
96
- tzinfo (2.0.4)
97
- concurrent-ruby (~> 1.0)
98
- unicode-display_width (2.1.0)
85
+ unicode-display_width (2.4.2)
99
86
  values (1.8.0)
100
- webrick (1.7.0)
101
- yard (0.9.27)
102
- webrick (~> 1.7.0)
87
+ yard (0.9.34)
103
88
  yard-doctest (0.1.17)
104
89
  minitest
105
90
  yard
@@ -108,12 +93,12 @@ PLATFORMS
108
93
  ruby
109
94
 
110
95
  DEPENDENCIES
111
- dokaz
96
+ dokaz (~> 0.0.5)
112
97
  memo_wise!
113
- panolint!
98
+ panolint-ruby!
114
99
  rake
115
- redcarpet (~> 3.5)
116
- rspec (~> 3.11)
100
+ redcarpet (~> 3.6)
101
+ rspec (~> 3.12)
117
102
  simplecov
118
103
  simplecov-cobertura
119
104
  values (~> 1)
data/README.md CHANGED
@@ -6,8 +6,8 @@
6
6
  # `MemoWise`
7
7
 
8
8
  [![Tests](https://github.com/panorama-ed/memo_wise/workflows/Main/badge.svg)](https://github.com/panorama-ed/memo_wise/actions?query=workflow%3AMain)
9
- [![Code Coverage](https://codecov.io/gh/panorama-ed/memo_wise/branch/main/graph/badge.svg)](https://codecov.io/gh/panorama-ed/memo_wise/branches/main)
10
- [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://rubydoc.info/github/panorama-ed/memo_wise)
9
+ [![Code Coverage](https://codecov.io/gh/panorama-ed/memo_wise/branch/main/graph/badge.svg)](https://codecov.io/gh/panorama-ed/memo_wise)
10
+ [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://rubydoc.info/gems/memo_wise)
11
11
  [![Gem Version](https://img.shields.io/gem/v/memo_wise.svg)](https://rubygems.org/gems/memo_wise)
12
12
  [![Gem Downloads](https://img.shields.io/gem/dt/memo_wise.svg)](https://rubygems.org/gems/memo_wise)
13
13
 
@@ -112,38 +112,38 @@ For more usage details, see our detailed [documentation](#documentation).
112
112
 
113
113
  ## Benchmarks
114
114
 
115
- Benchmarks are run in GitHub Actions, and the tables below are updated with every code change. **Values >1.00x represent how much _slower_ each gem’s memoized value retrieval is than the latest commit of `MemoWise`**, according to [`benchmark-ips`](https://github.com/evanphx/benchmark-ips) (2.9.2).
115
+ Benchmarks are run in GitHub Actions, and the tables below are updated with every code change. **Values >1.00x represent how much _slower_ each gem’s memoized value retrieval is than the latest commit of `MemoWise`**, according to [`benchmark-ips`](https://github.com/evanphx/benchmark-ips) (2.11.0).
116
116
 
117
- Results using Ruby 3.1.1:
117
+ Results using Ruby 3.2.2:
118
118
 
119
- |Method arguments|`Dry::Core`\* (0.7.1)|`Memery` (1.4.0)|
119
+ |Method arguments|`Dry::Core`\* (1.0.1)|`Memery` (1.5.0)|
120
120
  |--|--|--|
121
- |`()` (none)|1.11x|12.24x|
122
- |`(a)`|1.71x|9.55x|
123
- |`(a, b)`|1.27x|6.95x|
124
- |`(a:)`|1.58x|18.25x|
125
- |`(a:, b:)`|1.19x|13.31x|
126
- |`(a, b:)`|1.22x|13.29x|
127
- |`(a, *args)`|0.86x|1.84x|
128
- |`(a:, **kwargs)`|0.83x|3.15x|
129
- |`(a, *args, b:, **kwargs)`|0.76x|1.92x|
121
+ |`()` (none)|0.54x|3.62x|
122
+ |`(a)`|1.54x|7.74x|
123
+ |`(a, b)`|1.29x|5.58x|
124
+ |`(a:)`|1.55x|12.37x|
125
+ |`(a:, b:)`|1.15x|8.76x|
126
+ |`(a, b:)`|1.15x|8.75x|
127
+ |`(a, *args)`|0.84x|1.54x|
128
+ |`(a:, **kwargs)`|0.79x|2.13x|
129
+ |`(a, *args, b:, **kwargs)`|0.69x|1.38x|
130
130
 
131
131
  \* `Dry::Core`
132
132
  [may cause incorrect behavior caused by hash collisions](https://github.com/dry-rb/dry-core/issues/63).
133
133
 
134
- Results using Ruby 2.7.5 (because these gems raise errors in Ruby 3.x):
134
+ Results using Ruby 2.7.8 (because these gems raise errors in Ruby 3.x):
135
135
 
136
- |Method arguments|`DDMemoize` (1.0.0)|`Memoist` (0.16.2)|`Memoized` (1.0.2)|`Memoizer` (1.0.3)|
136
+ |Method arguments|`DDMemoize` (1.0.0)|`Memoist` (0.16.2)|`Memoized` (1.1.1)|`Memoizer` (1.0.3)|
137
137
  |--|--|--|--|--|
138
- |`()` (none)|24.22x|2.48x|1.22x|3.08x|
139
- |`(a)`|20.38x|14.06x|10.85x|12.26x|
140
- |`(a, b)`|17.48x|12.67x|10.07x|11.32x|
141
- |`(a:)`|29.72x|24.26x|21.04x|21.72x|
142
- |`(a:, b:)`|24.17x|20.17x|17.81x|18.85x|
143
- |`(a, b:)`|24.20x|20.15x|17.51x|18.05x|
144
- |`(a, *args)`|3.11x|2.23x|1.95x|2.03x|
145
- |`(a:, **kwargs)`|2.96x|2.46x|2.17x|2.28x|
146
- |`(a, *args, b:, **kwargs)`|2.17x|1.86x|1.76x|1.76x|
138
+ |`()` (none)|24.22x|2.42x|26.43x|2.70x|
139
+ |`(a)`|22.08x|15.19x|22.03x|13.67x|
140
+ |`(a, b)`|19.12x|14.01x|18.60x|12.80x|
141
+ |`(a:)`|30.21x|24.29x|26.43x|23.11x|
142
+ |`(a:, b:)`|27.73x|22.97x|25.11x|21.89x|
143
+ |`(a, b:)`|26.87x|22.76x|23.71x|21.26x|
144
+ |`(a, *args)`|3.15x|2.30x|3.18x|2.11x|
145
+ |`(a:, **kwargs)`|2.89x|2.40x|2.69x|2.28x|
146
+ |`(a, *args, b:, **kwargs)`|2.12x|1.82x|1.96x|1.74x|
147
147
 
148
148
  You can run benchmarks yourself with:
149
149
 
@@ -180,7 +180,7 @@ versions:
180
180
 
181
181
  We maintain API documentation using [YARD](https://yardoc.org/), which is
182
182
  published automatically at
183
- [RubyDoc.info](https://rubydoc.info/github/panorama-ed/memo_wise/MemoWise). To
183
+ [RubyDoc.info](https://rubydoc.info/gems/memo_wise). To
184
184
  edit documentation locally and see it rendered in your browser, run:
185
185
 
186
186
  ```bash
@@ -235,7 +235,7 @@ And we've written more about `MemoWise` in a series of blog posts:
235
235
 
236
236
  - [Introducing: MemoWise](https://medium.com/building-panorama-education/introducing-memowise-51a5f0523489)
237
237
  - [Optimizing MemoWise Performance](https://ja.cob.land/optimizing-memowise-performance)
238
- - [Esosteric Ruby in MemoWise](https://jemma.dev/blog/esoteric-ruby-in-memowise)
238
+ - [Esoteric Ruby in MemoWise](https://jemma.dev/blog/esoteric-ruby-in-memowise)
239
239
 
240
240
  ## Logo
241
241
 
@@ -266,9 +266,16 @@ Then carry out these steps:
266
266
 
267
267
  1. Update `CHANGELOG.md`:
268
268
  - Add an entry for the upcoming version _x.y.z_
269
- - Add a link for this version's comparison to the bottom of `CHANGELOG.md`
270
269
  - Move content from _Unreleased_ to the upcoming version _x.y.z_
271
- - Change _Unreleased_ section to say `- Nothing yet!`
270
+ - Update the diff links for this version and _Unreleased_ in `CHANGELOG.md`
271
+ - Change _Unreleased_ section to say:
272
+ ```
273
+ **Gem enhancements:** none
274
+
275
+ _No breaking changes!_
276
+
277
+ **Project enhancements:** none
278
+ ```
272
279
  - Commit with title `Update CHANGELOG.md for x.y.z`
273
280
 
274
281
  2. Update `lib/memo_wise/version.rb`
data/benchmarks/Gemfile CHANGED
@@ -4,17 +4,17 @@ source "https://rubygems.org"
4
4
 
5
5
  git_source(:github) { |repo| "https://github.com/#{repo}.git" }
6
6
 
7
- ruby ">= 2.7.5"
7
+ ruby ">= 2.7.7"
8
8
 
9
- gem "benchmark-ips", "2.10.0"
9
+ gem "benchmark-ips", "2.12.0"
10
10
 
11
11
  if RUBY_VERSION > "3"
12
- gem "dry-core", "0.7.1"
13
- gem "memery", "1.4.0"
12
+ gem "dry-core", "1.0.1"
13
+ gem "memery", "1.5.0"
14
14
  else
15
15
  gem "ddmemoize", "1.0.0"
16
16
  gem "memoist", "0.16.2"
17
- gem "memoized", "1.0.2"
17
+ gem "memoized", "1.1.1"
18
18
  gem "memoizer", "1.0.3"
19
19
  end
20
20
 
@@ -211,7 +211,7 @@ benchmark_jsons = benchmark_lambdas.map do |benchmark|
211
211
  json_file = Tempfile.new
212
212
 
213
213
  Benchmark.ips do |x|
214
- x.config(suite: suite) # rubocop:disable Style/HashSyntax
214
+ x.config(suite: suite)
215
215
  BENCHMARK_GEMS.each do |benchmark_gem|
216
216
  instance = Object.const_get("#{benchmark_gem.klass}Example").new
217
217
 
@@ -126,18 +126,7 @@ module MemoWise
126
126
  def self.original_class_from_singleton(klass)
127
127
  raise ArgumentError, "Must be a singleton class: #{klass.inspect}" unless klass.singleton_class?
128
128
 
129
- # Since we call this method a lot, we memoize the results. This can have a
130
- # huge impact; for example, in our test suite this drops our test times
131
- # from over five minutes to just a few seconds.
132
- @original_class_from_singleton ||= {}
133
-
134
- # Search ObjectSpace
135
- # * 1:1 relationship of singleton class to original class is documented
136
- # * Performance concern: searches all Class objects
137
- # But, only runs at load time and results are memoized
138
- @original_class_from_singleton[klass] ||= ObjectSpace.each_object(Module).find do |cls|
139
- cls.singleton_class == klass
140
- end
129
+ find_attached_object(klass)
141
130
  end
142
131
 
143
132
  # Convention we use for renaming the original method when we replace with
@@ -208,5 +197,42 @@ module MemoWise
208
197
  end
209
198
  end
210
199
  private_class_method :target_class
200
+
201
+ if Module.singleton_class.respond_to?(:attached_object)
202
+ # In Ruby3.2+, for singleton classes, `#attached_object` returns the object this class is for
203
+ # https://bugs.ruby-lang.org/issues/12084
204
+ #
205
+ # @param klass [Class]
206
+ # Singleton class to find the original class of
207
+ #
208
+ # @return Class
209
+ # Original class for which `klass` is the singleton class.
210
+ def self.find_attached_object(klass)
211
+ klass.attached_object
212
+ end
213
+ else
214
+ # :nocov:
215
+ # @param klass [Class]
216
+ # Singleton class to find the original class of
217
+ #
218
+ # @return Class
219
+ # Original class for which `klass` is the singleton class.
220
+ def self.find_attached_object(klass)
221
+ # Since we call this method a lot, we memoize the results. This can have a
222
+ # huge impact; for example, in our test suite this drops our test times
223
+ # from over five minutes to just a few seconds.
224
+ @original_class_from_singleton ||= {}
225
+
226
+ # Search ObjectSpace
227
+ # * 1:1 relationship of singleton class to original class is documented
228
+ # * Performance concern: searches all Class objects
229
+ # But, only runs at load time and results are memoized
230
+ @original_class_from_singleton[klass] ||= ObjectSpace.each_object(Module).find do |cls|
231
+ cls.singleton_class == klass
232
+ end
233
+ end
234
+ # :nocov:
235
+ end
236
+ private_class_method :find_attached_object
211
237
  end
212
238
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MemoWise
4
- VERSION = "1.7.0"
4
+ VERSION = "1.8.0"
5
5
  end
data/lib/memo_wise.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "set"
3
+ # Disable RuboCop here because Ruby < 3.2 does not load `set` by default.
4
+ require "set" # rubocop:disable Lint/RedundantRequireStatement
4
5
 
5
6
  require "memo_wise/internal_api"
6
7
  require "memo_wise/version"
@@ -30,12 +31,12 @@ module MemoWise
30
31
  # [calling the original](https://medium.com/@jeremy_96642/ruby-method-auditing-using-module-prepend-4f4e69aacd95)
31
32
  # constructor.
32
33
  #
33
- # - **Q:** Why is [Module#prepend](https://ruby-doc.org/core-3.1.0/Module.html#method-i-prepend)
34
+ # - **Q:** Why is [Module#prepend](https://ruby-doc.org/3.2.1/Module.html#method-i-prepend)
34
35
  # important here
35
36
  # ([more info](https://medium.com/@leo_hetsch/ruby-modules-include-vs-prepend-vs-extend-f09837a5b073))?
36
37
  # - **A:** To set up *mutable state* inside the instance, even if the original
37
38
  # constructor will then call
38
- # [Object#freeze](https://ruby-doc.org/core-3.1.0/Object.html#method-i-freeze).
39
+ # [Object#freeze](https://ruby-doc.org/3.2.1/Object.html#method-i-freeze).
39
40
  #
40
41
  # This approach supports memoization on frozen (immutable) objects -- for
41
42
  # example, classes created by the
@@ -84,7 +85,7 @@ module MemoWise
84
85
  # @param target [Class]
85
86
  # The `Class` into to prepend the MemoWise methods e.g. `memo_wise`
86
87
  #
87
- # @see https://ruby-doc.org/core-3.1.0/Module.html#method-i-prepended
88
+ # @see https://ruby-doc.org/3.2.1/Module.html#method-i-prepend
88
89
  #
89
90
  # @example
90
91
  # class Example
@@ -99,7 +100,7 @@ module MemoWise
99
100
  #
100
101
  # This is necessary in addition to the `#initialize` method definition
101
102
  # above because
102
- # [`Class#allocate`](https://ruby-doc.org/core-3.1.0/Class.html#method-i-allocate)
103
+ # [`Class#allocate`](https://ruby-doc.org/3.2.1/Class.html#method-i-allocate)
103
104
  # bypasses `#initialize`, and when it's used (e.g.,
104
105
  # [in ActiveRecord](https://github.com/rails/rails/blob/a395c3a6af1e079740e7a28994d77c8baadd2a9d/activerecord/lib/active_record/persistence.rb#L411))
105
106
  # we still need to be able to access MemoWise's instance variable. Despite
@@ -254,7 +255,7 @@ module MemoWise
254
255
  )
255
256
  end
256
257
 
257
- # Override [Module#instance_method](https://ruby-doc.org/core-3.1.0/Module.html#method-i-instance_method)
258
+ # Override [Module#instance_method](https://ruby-doc.org/3.2.1/Module.html#method-i-instance_method)
258
259
  # to proxy the original `UnboundMethod#parameters` results. We want the
259
260
  # parameters to reflect the original method in order to support callers
260
261
  # who want to use Ruby reflection to process the method parameters,
data/memo_wise.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  require_relative "lib/memo_wise/version"
4
4
 
5
- Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
5
+ Gem::Specification.new do |spec|
6
6
  spec.name = "memo_wise"
7
7
  spec.version = MemoWise::VERSION
8
8
  spec.summary = "The wise choice for Ruby memoization"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: memo_wise
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Panorama Education
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2022-04-04 00:00:00.000000000 Z
14
+ date: 2023-10-30 00:00:00.000000000 Z
15
15
  dependencies: []
16
16
  description:
17
17
  email:
@@ -26,6 +26,7 @@ files:
26
26
  - ".dokaz"
27
27
  - ".github/PULL_REQUEST_TEMPLATE.md"
28
28
  - ".github/dependabot.yml"
29
+ - ".github/workflows/dependency-review.yml"
29
30
  - ".github/workflows/main.yml"
30
31
  - ".gitignore"
31
32
  - ".rspec"
@@ -70,7 +71,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
71
  - !ruby/object:Gem::Version
71
72
  version: '0'
72
73
  requirements: []
73
- rubygems_version: 3.3.7
74
+ rubygems_version: 3.4.6
74
75
  signing_key:
75
76
  specification_version: 4
76
77
  summary: The wise choice for Ruby memoization