Search code examples
rubyrubygemsrequire

When is the 'require' necessary when using a ruby gem?


I noticed for some gems you must include it in the file where you want to use it like this require 'a_gem', but this is not always the case.

I am going to compose a gem by myself. What should I do if I do not want to add the require 'my_gem' to the .rb file when using it?


Solution

  • Usually, an application that is using a gem needs to require the gem:

    require "my_awesome_gem"
    MyAwesomeGem.do_something_great
    

    However, if an application is using bundler, which defines the application's gem in a file called "Gemfile":

    source 'http://rubygems.org'
    gem 'my_awesome_gem'
    

    then the application may invoke bundler in a way that automatically requires all of the gems specified in the Gemfile:

    require "bundler"
    Bundler.require
    MyAwesomeGem.do_something_great
    

    Rails projects use Bundler.require, so a Rails application will not need to explicitly require a gem in order to use it: Just add the gem to the Gemfile and go.

    For more about Bundler.require, see the bundler documentation

    For more about how Rails uses Bundler, see How Does Rails Handle Gems? by Justin Weiss.