Heads up! To view this whole video, sign in with your Courses account or enroll in your free 7-day trial. Sign In Enroll
Preview
Start a free Courses trial
to watch this video
In this video, we go deeper in to the gem environment and briefly explore how Ruby knows how to load a gem.
This video doesn't have any notes.
Related Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
RubyGems does a few
tricks when using a gem.
0:00
First off, gems are installed to
a specific place on the file system.
0:04
This is usually your Ruby installation
location, but it can also be changed.
0:09
Ruby then needs to modify the load path
very slightly to take the gem location
0:14
into account.
0:19
Let's take a look at the gem
environment now using workspaces.
0:21
If we take a look at our file system here,
0:26
we can see that we have money and
money example.rb.
0:29
If we go up a level, we can see
that there is a .local directory.
0:33
Now this is something that
is work space specific.
0:40
So if I type Gem environment, we can see
0:43
that /home/treehouse/.local/gems
is in our path.
0:48
This is where gems are installed
to in a workspace.
0:54
We can see if we go into
the gems directory.
0:59
We have our bin directory,
build info, cache, extensions, doc,
1:03
gems and specifications.
1:07
This is where any gems that we
install will go on the file system.
1:09
So here is the gems directory.
1:15
And we can see the different names
of the gems that we have installed,
1:18
followed by their versions.
1:21
And you'll notice this corresponds
to our gem list command.
1:24
And the gems that don't
come with Ruby by default
1:29
are going to be installed right here.
1:32
So I'm gonna clear my screen here for
a second and go into irb.
1:35
Now, when Ruby is loading
a file it looks for
1:41
it in a special variable
called the load path.
1:45
And we can actually look
at the load path right now.
1:49
That's a constant that's going to be
inside of every Ruby application.
1:53
And we can see the different places
that Ruby searches for files to load.
1:58
Now, if we tried to use
the Money gem right now,
2:03
You'll see we get
uninitialized constant money.
2:10
But, when we require it.
2:13
This is all of a sudden, loaded and
2:19
we have access to the money class,
because of the money gem.
2:22
So let's keep these load paths in mind for
a second right now,
2:28
and I'm going to clear my screen.
2:32
And print the load path
to the screen again.
2:35
And you can see once we do that, Ruby
has added to the front of this load path
2:38
array the money gem location and
any of its dependencies.
2:45
Now as a file naming structure in a gem,
most of the gem's library files
2:52
are in a lib directory below
the main gem directory.
2:57
And that is what gets
appended to the load path.
3:03
Since Ruby searches the load path for
3:07
different files to load, it now
knows to look in these places first.
3:09
So, require will search
your ruby gems location for
3:15
the name of the gem, and
then take the most recent version and
3:19
append the lib directory
if the gem exists.
3:23
You need to sign up for Treehouse in order to download course files.
Sign upYou need to sign up for Treehouse in order to set up Workspace
Sign up