From: "mame (Yusuke Endoh) via ruby-core" Date: 2025-06-05T11:00:44+00:00 Subject: [ruby-core:122451] [Ruby Bug#21384] const_added is triggered twice when using autoload Issue #21384 has been updated by mame (Yusuke Endoh). Briefly discussed at the dev meeting. @matz said that it was not intentional to fire the hook twice. But changing it now would be a compatibility concern, so he decided to keep the current behavior. Conceptually, we may consider this behavior as: * When `autoload` is set, the constant is (virtually) defined (and `const_added` fires) * When the constant is actually defined by the firing of autoload, the constant is conceptually deleted once and defined again (and `const_added` fires again) ---------------------------------------- Bug #21384: const_added is triggered twice when using autoload https://bugs.ruby-lang.org/issues/21384#change-113632 * Author: petekinnecom (Pete Kinnecom) * Status: Closed * Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- As the title says, I've noticed that `const_added` is invoked twice when using `autoload`. I'm wondering if this behavior is intended or perhaps a bug. Here's a small script to reproduce what I'm seeing: ``` ruby require "tmpdir" dir = Dir.mktmpdir File.write( File.join(dir, "const.rb"), "class Const; end" ) def Object.const_added(const_name) super.tap { puts "const_added: #{const_name}" } end $LOAD_PATH << dir puts "before autoload call" autoload :Const, "const" puts "after autoload call" puts Const # Produces output: # # => before autoload call # => const_added: Const # => after autoload call # => const_added: Const # => Const ``` I'm seeing the behavior using the following docker containers ruby:3.2 and ruby:3.5-rc when running like so: `docker run -v ./:/home ruby:3.5-rc ruby /home/script.rb`. Thanks. -- 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/