Project

General

Profile

Feature #4233

autoload Can't Require Gems

Added by Run Paint Run Run over 5 years ago. Updated almost 4 years ago.

Status:
Assigned
Priority:
Normal
[ruby-core:34104]

Description

=begin
Is it intentional that when used via autoload, require can't handle Gem names?

 run@desktop:~/mir/ruby$  →  ruby -e 'p require "nokogiri"'
 true
 run@desktop:~/mir/ruby$  →  ruby -e 'autoload(:N, "nokogiri"); p N'
 -e:1:in `<main>': cannot load such file -- nokogiri (LoadError)

=end

History

#1 Updated by Yui NARUSE over 5 years ago

  • Status changed from Open to Assigned
  • Assignee set to Hiroshi Nakamura
  • Target version set to 2.0.0

#2 Updated by Hiroshi Nakamura over 4 years ago

  • Tracker changed from Bug to Feature

#3 [ruby-core:49745] Updated by Yusuke Endoh almost 4 years ago

  • Assignee changed from Hiroshi Nakamura to Eric Hodel

Is this really a feature request? Looks a (low-priority?) bug to me.
drbrain, what do you think about this?

--
Yusuke Endoh mame@tsg.ne.jp

#4 [ruby-core:49775] Updated by Eric Hodel almost 4 years ago

  • Assignee changed from Eric Hodel to Hiroshi Nakamura

=begin
If I'm reading load.c correctly, autoload_provided() uses rb_feature_provided() which checks $LOAD_PATH only. This will cause autoload to fail if the gem has not been activated yet.

If autoload's specification only allows autoloading from $LOAD_PATH this is not a bug. The documentation for Kernel#autoload does not say how the file will be loaded, but Module#autoload says:

Registers filename to be loaded (using Kernel::require) the first
time that module (which may be a String or a symbol) is accessed
in the namespace of mod.

Which implies it is a bug. Perhaps this documentation is wrong.

Since nahi is the autoload expert, I have assigned this back to him.

=end

#5 [ruby-core:49978] Updated by Yusuke Endoh almost 4 years ago

  • Target version changed from 2.0.0 to next minor

Thank you drbrain for the explanation!
Recently, nahi is not so active. So, I'm sorry but I recognize this as a (bad) spec of 2.0.0.

--
Yusuke Endoh mame@tsg.ne.jp

Also available in: Atom PDF