Project

General

Profile

Feature #12639 ยป feature_loaded.patch

segiddins (Samuel Giddins), 07/31/2016 01:04 AM

View differences:

lib/rubygems/core_ext/kernel_require.rb
private :gem_original_require
end
if defined?(loaded_feature?)
def gem_loaded_feature?(path)
loaded_feature?(path)
end
else
def gem_loaded_feature?(path)
false
end
end
private :gem_loaded_feature?
##
# When RubyGems is required, Kernel#require is replaced with our own which
# is capable of loading gems on demand.
......
# that file has already been loaded is preserved.
def require path
RUBYGEMS_ACTIVATION_MONITOR.enter
path = path.to_path if path.respond_to? :to_path
return false if gem_loaded_feature?(path)
RUBYGEMS_ACTIVATION_MONITOR.enter
spec = Gem.find_unresolved_default_spec(path)
if spec
......
private :require
end
load.c
return rb_feature_provided(feature, 0);
}
VALUE
rb_f_loaded_feature(VALUE obj, VALUE fname)
{
return rb_provided(RSTRING_PTR(rb_str_encode_ospath(fname))) ? Qtrue : Qfalse;
}
int
rb_feature_provided(const char *feature, const char **loading)
{
......
rb_define_method(rb_cModule, "autoload?", rb_mod_autoload_p, 1);
rb_define_global_function("autoload", rb_f_autoload, 2);
rb_define_global_function("autoload?", rb_f_autoload_p, 1);
rb_define_global_function("loaded_feature?", rb_f_loaded_feature, 1);
ruby_dln_librefs = rb_ary_tmp_new(0);
rb_gc_register_mark_object(ruby_dln_librefs);
    (1-1/1)