From: "jeremyevans0 (Jeremy Evans)" Date: 2021-10-21T16:13:54+00:00 Subject: [ruby-core:105739] [Ruby master Bug#17379] Refinement with modules redefinition bug Issue #17379 has been updated by jeremyevans0 (Jeremy Evans). Status changed from Open to Closed Refinement#include is now deprecated and will be removed in Ruby 3.2. ---------------------------------------- Bug #17379: Refinement with modules redefinition bug https://bugs.ruby-lang.org/issues/17379#change-94238 * Author: marcandre (Marc-Andre Lafortune) * Status: Closed * Priority: Normal * Assignee: ko1 (Koichi Sasada) * ruby -v: ruby 3.0.0dev (2020-12-05T10:40:00Z master 9dbb2bfd73) [x86_64-darwin18] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- Depending on the circumstance, a refinement can be modified even after being used: ```ruby def foo [:base] end module M def foo super << :M end end module Ext refine Object do include M end end using Ext p 'asd'.foo unless ENV['SKIP'] # => [:base, :M] (ok) module M def foo super << :new_ref end end p 'asd'.foo # => depends (not ok) ``` Running this gives: ``` $ ruby refinement.rb [:base, :M] [:base, :M] # => ok $ SKIP=t ruby refinement.rb [:base, :new_ref] # => should be [:base, :M] ``` -- https://bugs.ruby-lang.org/ Unsubscribe: