Preview Ruby 4.1 is a preview. It can change before the final release. Switch to Ruby 4.0 →
Kernel#autoload_relative
static VALUE
rb_f_autoload_relative(VALUE obj, VALUE sym, VALUE file)
{
VALUE klass = rb_class_real(rb_vm_cbase());
if (!klass) {
rb_raise(rb_eTypeError, "Can not set autoload on singleton class");
}
return rb_mod_autoload_relative(klass, sym, file);
}
Registers filename to be loaded (using Kernel::require) the first time that const (which may be a String or a symbol) is accessed. The filename is interpreted as relative to the directory of the file where autoload_relative is called.
autoload_relative(:MyModule, "my_module.rb")
If const is defined as autoload, the file name to be loaded is replaced with filename. If const is defined but not as autoload, does nothing.
The relative path is converted to an absolute path, which is what will be returned by Kernel#autoload? for the constant.
Raises LoadError if called without file context (e.g., from eval).
Ruby version changes
-
4.1
-
Kernel#autoload_relativeandModule#autoload_relativeare added. These methods work likeautoload, but resolve the file path relative to the file where the method is called, similar torequire_relative. This makes it easier to autoload constants from files in the same directory without hardcoding absolute paths or manipulating$LOAD_PATH. [Feature #15330]
-