Module: Kernel

Module | Kernel
In: | lib/rubygems/custom_require.rb lib/rubygems.rb

### Methods

gem require

### External Aliases

require | -> | gem_original_require
| The Kernel#require from before RubyGems was loaded.

### Private Instance methods

gem(gem_name, *version_requirements)

Use Kernel#gem to activate a specific version of `gem_name`.

`version_requirements` is a list of version requirements that the specified gem must match, most commonly "= example.version.number". See Gem::Requirement for how to specify a version requirement.

If you will be activating the latest version of a gem, there is no need to call Kernel#gem, Kernel#require will do the right thing for you.

Kernel#gem returns true if the gem was activated, otherwise false. If the gem could not be found, didn‘t match the version requirements, or a different version was already activated, an exception will be raised.

Kernel#gem should be called before any require statements (otherwise RubyGems may load a conflicting library version).

In older RubyGems versions, the environment variable GEM_SKIP could be used to skip activation of specified gems, for example to test out changes that haven‘t been installed yet. Now RubyGems defers to -I and the RUBYLIB environment variable to skip activation of a gem.

Example:

      GEM_SKIP=libA:libB ruby -I../libA -I../libB ./mycode.rb

require(path)

When RubyGems is required, Kernel#require is replaced with our own which is capable of loading gems on demand.

When you call `require ‘x‘`, this is what happens:

- If the file can be loaded from the existing Ruby loadpath, it is.
- Otherwise, installed gems are searched for a file that matches. If it‘s found in gem ‘y’, that gem is activated (added to the loadpath).

The normal `require` functionality of returning false if that file has already been loaded is preserved.

[Validate]