From: "jeremyevans0 (Jeremy Evans) via ruby-core" Date: 2024-11-19T20:35:40+00:00 Subject: [ruby-core:119970] [Ruby master Bug#20871] Including methods in Enumerable doesn't make them available in Array Issue #20871 has been updated by jeremyevans0 (Jeremy Evans). I was able to reproduce this but in Ruby 3.2.6, 3.3.6, and master. Backing out commit:6118e8a47394409b53164b60e79fadf348b97db3 (the commit to master that commit:edeb0319f7a95dfe3f9b895bcf32371dd8514726 was based on), fixes the problem, so I was too quick to dismiss that as a cause. My apologies for that. We could revert commit:6118e8a47394409b53164b60e79fadf348b97db3 in master (with similar reverts for 3.2 and 3.3), and reopen #20716. Looking at the change in commit:6118e8a47394409b53164b60e79fadf348b97db3, it seems like adding module Foo to the subclasses list is breaking something. I'm not sure when I'll have time to try to fix this, it might not be until next month. So if anyone else has time and can find a way to fix #20716 without causing the breakage in this issue, that would be awesome. ---------------------------------------- Bug #20871: Including methods in Enumerable doesn't make them available in Array https://bugs.ruby-lang.org/issues/20871#change-110706 * Author: sanderd17 (Sander Deryckere) * Status: Open * ruby -v: 3.3.6 * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- Today, our CI pipeline started failing after the automatic update from v3.3.5 to v3.3.6. After researching, it turned out that our core extensions to the `Array` class weren't loaded anymore. The core-extensions code looks like this: ```ruby module CoreExt module Enumerable def average sum(&:to_f) / count if any? end # def ... end end Enumerable.include CoreExt::Enumerable ``` After some debugging, it turned out that the `average` method was included in the `instance_methods` of `Enumerable`, but not in the `instance_methods` of `Array`. Explicitly adding `Array.include CoreExt::Enumerable` fixes CI for our case. The very strange thing is that it only happens on a release branch we are still maintaining. It doesn't happen on our main development branch (which also updated to v3.3.6 today). I have been unable to find the difference between both branches so far (they diverged a couple of months ago, but the base system is still regularly updated on both, and pretty similar). After some digging around, I assume this commit is related to our issue: https://github.com/ruby/ruby/commit/edeb0319f7a95dfe3f9b895bcf32371dd8514726 -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/