# Require\_gem versus gem

**URL:** <https://www.ruby-forum.com/t/require-gem-versus-gem/87595>\
**Category:** Rails\
**Created:** [March 4, 2007, 5:56am UTC](https://www.ruby-forum.com/t/require-gem-versus-gem/87595 "2007-03-04T05:56:27Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![snacktime](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7feea3/32.png) [@snacktime](https://www.ruby-forum.com/u/snacktime)\
**Post date:** [March 4, 2007, 5:56am UTC](https://www.ruby-forum.com/t/require-gem-versus-gem/87595/1 "2007-03-04T05:56:27Z")

</div>

Trying to figure out why require\_gem works and gem doesn’t. using  
just gem, I get uninitialized constant ActiveRecord (NameError). Use  
require\_gem and it works, but tells me that require\_gem is obsolete.

require ‘rubygems’  
gem ‘activerecord’

def connect(environment)  
conf = YAML::load(File.open(File.dirname( **FILE** ) +  
‘/config/database.yml’))  
ActiveRecord::Base.establish\_connection(conf[environment])  
end

connect(‘development’)

Chris

---

<div class="post-metadata">

**Author:** ![snacktime](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7feea3/32.png) [@snacktime](https://www.ruby-forum.com/u/snacktime)\
**Post date:** [March 4, 2007, 6:04am UTC](https://www.ruby-forum.com/t/require-gem-versus-gem/87595/2 "2007-03-04T06:04:27Z")

</div>

On Sat, Mar 03, 2007 at 08:55:40PM -0800, snacktime wrote:

> end
> 
> connect(‘development’)

require\_gem was a wrapper around require that accepted an optional  
second  
argument to specify a version constraint.

the new gem method is not a wrapper around require. it simply registers  
a  
version constraint on the named gem. when you subsequently call require,  
that  
version constraint is verified.

so if you just want to require activerecord and you don’t care what  
vesrion,  
just do require ‘activerecord’. otherwise, use the gem method first to  
specify which versions.

of course, you still have to require ‘rubygems’ first if you want to  
require  
a gem, whether you want to specify a specific version constraint or not.

## marcel

Marcel Molina Jr. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![snacktime](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7feea3/32.png) [@snacktime](https://www.ruby-forum.com/u/snacktime)\
**Post date:** [March 4, 2007, 6:12am UTC](https://www.ruby-forum.com/t/require-gem-versus-gem/87595/3 "2007-03-04T06:12:28Z")

</div>

Ah ok that makes sense, thanks for the explanation!

Chris
