memo_wise 1.7.0 → 1.8.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 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