From: "fxn (Xavier Noria) via ruby-core" Date: 2025-04-08T20:45:58+00:00 Subject: [ruby-core:121595] [Ruby Bug#21193] Inherited callback returns `nil` for `Object.const_source_location` Issue #21193 has been updated by fxn (Xavier Noria). After exchanging impressions with @byroot today, I have created https://github.com/ruby/ruby/pull/13085 to restore the original order of the callbacks. If that is all good, I'll followup with an updated docs + tests patch. ---------------------------------------- Bug #21193: Inherited callback returns `nil` for `Object.const_source_location` https://bugs.ruby-lang.org/issues/21193#change-112648 * Author: eileencodes (Eileen Uchitelle) * Status: Assigned * Assignee: matz (Yukihiro Matsumoto) * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- Since https://github.com/ruby/ruby/pull/12927 the inherited callback no longer can access the `Object.const_source_location`. A simplified reproduction is the following: ```ruby class A def self.inherited(other) super p Object.const_source_location(other.name) end end class B < A end ``` Prior to this change `Object.const_source_location(other.name)` would return `["test.rb", 8]` and now returns `nil`. Shopify's application uses the `inherited` callback to load configuration classes and since it's unable to find these classes they aren't loaded when they are called. It's not clear if this was intended or if there's a workaround. In chatting with folks at GitHub, they have a similar issue (although that case sounds less straightforward). A more accurate example of what we have (I did strip this down a bunch too): ```ruby def self.inherited(config) return super unless config.superclass == Config if (class_name = config.name) && (config_location = Object.const_source_location(class_name)) && (parent_dirname = File.dirname(config_location[0])) config_dirname = File.join(parent_dirname, "config") config.autoload(:Something, File.join(config_dirname, "something.rb")) end super end ``` Original issue: https://bugs.ruby-lang.org/issues/21143 cc/ @byroot @fxn -- 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/