diff options
Diffstat (limited to 'config/initializers/0_inject_enterprise_edition_module.rb')
-rw-r--r-- | config/initializers/0_inject_enterprise_edition_module.rb | 34 |
1 files changed, 1 insertions, 33 deletions
diff --git a/config/initializers/0_inject_enterprise_edition_module.rb b/config/initializers/0_inject_enterprise_edition_module.rb index a00075990eb..41d1043af38 100644 --- a/config/initializers/0_inject_enterprise_edition_module.rb +++ b/config/initializers/0_inject_enterprise_edition_module.rb @@ -58,39 +58,7 @@ module InjectEnterpriseEditionModule end def const_get_maybe_false(mod, name) - # We're still heavily relying on Rails autoloading instead of zeitwerk, - # therefore this check: `mod.const_defined?(name, false)` - # Is not reliable, which may return false while it's defined. - # After we moved everything over to zeitwerk we can avoid rescuing - # NameError and just check if const_defined? - # mod && mod.const_defined?(name, false) && mod.const_get(name, false) - result = mod && mod.const_get(name, false) - - if result.name == "#{mod}::#{name}" - result - else - # This may hit into a Rails issue that when we try to load - # `EE::API::Appearance`, Rails might load `::Appearance` the first time - # when `mod.const_get(name, false)` is called if `::Appearance` is not - # loaded yet. This can be demonstrated as the following: - # - # EE.const_get('API::Appearance', false) # => Appearance - # EE.const_get('API::Appearance', false) # => raise NameError - # - # Getting a `NameError` is what we're expecting here, because - # `EE::API::Appearance` doesn't exist. - # - # This is because Rails will attempt to load constants from all the - # parent namespaces, and if it finds one it'll load it and return it. - # However, the second time when it's called, since the top-level class - # is already loaded, then Rails will skip this process. This weird - # behaviour can be worked around by calling this the second time. - # The particular line is at: - # https://github.com/rails/rails/blob/v6.1.3.2/activesupport/lib/active_support/dependencies.rb#L569-L570 - mod.const_get(name, false) - end - rescue NameError - false + mod && mod.const_defined?(name, false) && mod.const_get(name, false) end end |