Issue #6376 has been updated by mame (Yusuke Endoh).

Status changed from Open to Feedback

Of course you know what is defined by the feature you loaded, don't you?
(If not, you must not load such a file; it is very dangerous)

So you can use: defined?(OpenStruct)

-- 
Yusuke Endoh <mame / tsg.ne.jp>
----------------------------------------
Feature #6376: Feature lookup and checking if feature is loaded
https://bugs.ruby-lang.org/issues/6376#change-26407

Author: trans (Thomas Sawyer)
Status: Feedback
Priority: Normal
Assignee: 
Category: core
Target version: 2.0.0


$LOADED_FEATURES is useful to know what "files" have been loaded. But it doesn't really tell us what "features" have been loaded. If there where were a way to look-up a load path, without actually loading it then it would be possible to compare that to $LOADED_FEATURES and thus know. e.g.

    require 'ostruct'
    $LOADED_FEATURES #=> [..., "/home/trans/.local/lib/ry/rubies/1.9.3-p125/lib/ruby/1.9.1/ostruct.rb"]

    path = require_path('ostruct') #=> "/home/trans/.local/lib/ry/rubies/1.9.3-p125/lib/ruby/1.9.1/ostruct.rb"
    $LOADED_FEATURES.include?(path)

Of course, it would be nice to also have:

    required?('ostruct')  #=> true

These methods could be class methods of special module, if it's important to keep the Kernel more tidy, e.g. `Ruby.required?('ostruct')`.

I am currently working on a project where I need this (and have a couple of other projects that could use it too) and I've had to implement the whole thing from scratch, which isn't simple, nor fast, nor am I 100% confident that it specs exactly to Ruby's own lookup procedure. So it would be much better if Ruby would expose its lookup functionality.




-- 
http://bugs.ruby-lang.org/