Skip to content

Commit 2e674e3

Browse files
transclaude
andcommitted
Fix 3.2.0 load failures; release 3.2.1
3.2.0 deleted/renamed a number of method files but left stale require_relative lines pointing at them, so `require 'facets'` raised LoadError (issues #312, #315). Comment out the dead requires (the methods are now provided by Ruby) and correct the hash/to_proc -> hash/setter require after the rename (PR#313). Also stop Kernel::As from redefining object_id, which emitted a warning on every load (issue #310). Add a Rubytest-native regression test (test/core/load_paths_tc.rb) that statically verifies every require_relative target across lib/ resolves, so this class of breakage can't recur unnoticed. Released as a 3.2.x patch to restore loadability of the published line (3.2.0 cannot be yanked). The breaking-change/major-version concern from issue #314 is deferred to a future release. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 795d310 commit 2e674e3

16 files changed

Lines changed: 123 additions & 20 deletions

File tree

HISTORY.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,37 @@
11
# Facets Release History
22

3+
## 3.2.1 / 2026-06-14
4+
5+
Patch release that fixes the broken 3.2.0 release. 3.2.0 shipped with stale
6+
`require_relative` lines pointing at method files that had been removed or
7+
renamed, so `require 'facets'` raised `LoadError`. This restores loadability
8+
and adds a regression guard so it cannot recur. (The breaking-change and
9+
versioning concern raised in issue #314 is left for a future major release.)
10+
11+
Changes:
12+
13+
* New Features
14+
15+
* Add `OpenDSL` — build free-form, pluggable DSL modules from a block.
16+
* Add `PIC` — COBOL-style edited-picture pattern matching as a simple
17+
alternative to regular expressions.
18+
19+
* Bug Fixes
20+
21+
* Fix `LoadError` on `require 'facets'`: remove stale `require_relative`
22+
lines left pointing at removed method files, and correct the
23+
`hash/to_proc` -> `hash/setter` require after the rename.
24+
(issues #312, #315; PR#313)
25+
* Fix `range.rb` requiring the removed `range/overlap`. (PR#318)
26+
* Stop `Kernel::As` from redefining `object_id`, which emitted a
27+
"redefining 'object_id' may cause serious problems" warning on load.
28+
(issue #310)
29+
30+
* Internal
31+
32+
* Add a load-path regression test that verifies every `require_relative`
33+
target across the library resolves to an existing file.
34+
335
## 3.2.0 / 2026-04-01
436

537
Modernization release targeting Ruby 3.1+. Cleans up long-standing

facets.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Gem::Specification.new do |s|
22
s.name = 'facets'
3-
s.version = '3.2.0'
3+
s.version = '3.2.1'
44
s.summary = 'The premier collection of extension methods for Ruby.'
55
s.description = 'Facets is the premier collection of extension methods for the Ruby ' \
66
'programming language. Facets extensions are unique by virtue of their ' \

lib/core/facets/array.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
require_relative 'array/squeeze.rb'
4444
require_relative 'array/store.rb'
4545
require_relative 'array/thru.rb'
46-
require_relative 'array/to_h.rb'
46+
#require_relative 'array/to_h.rb' # removed: now provided by Ruby
4747
require_relative 'array/traverse.rb'
4848
require_relative 'array/uniq_by.rb'
4949

lib/core/facets/dir.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
require_relative 'dir/ascend.rb'
22
require_relative 'dir/descend.rb'
3-
require_relative 'dir/each_child.rb'
3+
#require_relative 'dir/each_child.rb' # removed: now provided by Ruby
44
require_relative 'dir/multiglob.rb'
55
require_relative 'dir/parent.rb'
66
require_relative 'dir/recurse.rb'

lib/core/facets/enumerable.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
require_relative 'enumerable/ewise.rb'
1010
require_relative 'enumerable/exclude.rb'
1111
require_relative 'enumerable/expand.rb'
12-
require_relative 'enumerable/filter.rb'
12+
#require_relative 'enumerable/filter.rb' # removed: now provided by Ruby
1313
require_relative 'enumerable/find_yield.rb'
1414
require_relative 'enumerable/frequency.rb'
1515
require_relative 'enumerable/graph.rb'
@@ -31,7 +31,7 @@
3131
require_relative 'enumerable/purge.rb'
3232
require_relative 'enumerable/recursively.rb'
3333
require_relative 'enumerable/squeeze.rb'
34-
require_relative 'enumerable/sum.rb'
34+
#require_relative 'enumerable/sum.rb' # removed: now provided by Ruby
3535
require_relative 'enumerable/value_by'
3636
#require_relative 'enumerable/unassociate.rb'
3737
require_relative 'enumerable/uniq_by.rb'

lib/core/facets/essentials.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
require_relative 'kernel/true'
1717

1818
### Object
19-
require_relative 'object/itself'
19+
#require_relative 'object/itself' # removed: now provided by Ruby
2020

2121
### Array
2222
require_relative 'array/delete_values'
@@ -37,11 +37,11 @@
3737
require_relative 'enumerable/value_by'
3838

3939
### File
40-
require_relative 'file/write'
40+
#require_relative 'file/write' # removed: now provided by Ruby
4141

4242
### Hash
4343
require_relative 'hash/autonew'
44-
require_relative 'hash/compact'
44+
#require_relative 'hash/compact' # removed: now provided by Ruby
4545
#require_relative 'hash/data'
4646
require_relative 'hash/delete_values'
4747
require_relative 'hash/except'

lib/core/facets/file.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@
1111
require_relative 'file/sanitize.rb'
1212
require_relative 'file/split_all.rb'
1313
require_relative 'file/split_root.rb'
14-
require_relative 'file/write.rb'
14+
#require_relative 'file/write.rb' # removed: now provided by Ruby
1515
require_relative 'file/writelines.rb'
1616

lib/core/facets/hash.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
require_relative 'hash/symbolize_keys.rb'
4141
require_relative 'hash/to_mod.rb'
4242
require_relative 'hash/to_options.rb'
43-
require_relative 'hash/to_proc.rb'
43+
require_relative 'hash/setter.rb'
4444
require_relative 'hash/to_struct.rb'
4545
require_relative 'hash/traverse.rb'
4646
require_relative 'hash/update.rb'

lib/core/facets/kernel/as.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ def cache
9999
private :cache
100100
end
101101

102-
# Privatize all methods except #binding an operators.
103-
private(*instance_methods.select { |m| m !~ /(^__|^\W|^binding$)/ })
102+
# Privatize all methods except #binding, #object_id and operators.
103+
private(*instance_methods.select { |m| m !~ /(^__|^\W|^binding$|^object_id$)/ })
104104

105105
def initialize(subject, ancestor)
106106
@subject = subject

lib/core/facets/matchdata.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
require_relative 'matchdata/match.rb'
1+
#require_relative 'matchdata/match.rb' # removed: now provided by Ruby
22
require_relative 'matchdata/matchset.rb'
33

0 commit comments

Comments
 (0)