This concludes our exploration of the Ruby toolbox. Specifically, we've looked at basic Ruby installations, RubyGems, Ruby Version Managers, and the Bundler and Rake gems.

We haven't actually shown you how to use most of these tools; that wasn't our intent. Instead, we've focused on how these tools work and how they fit into your system. You can use all of these tools effectively without knowing this kind of detail; however, when something goes wrong, knowing how they work and where they are installed is an essential part of diagnosing problems.

This wasn't a complete discussion of all tools in Ruby; the Ruby toolbox is enormous and constantly evolving, so a more thorough book would likely be out of date by the time you read it. That doesn't mean you can't learn more. In fact, the Launch School curriculum will introduce you to many more tools, such as the Sinatra, Sequel, and Rails Gems, and general development tools like PostgreSQL that aren't specific to Ruby. With time and experience, you will learn all about these tools, and be able to troubleshoot them yourself as you become familiar with them.


One thing to keep in mind as you become more comfortable with the Ruby tools is how they relate to each other.

Your Ruby Version Manager is at the top level -- it controls multiple installations of Ruby and all the other tools.

Within each installation of Ruby, you can have multiple Gems -- even 1000s of Gems if you want. Each Gem becomes accessible to the Ruby version under which it is installed. If you want to run a Gem in multiple versions of Ruby, you need to install it in all of the versions you want to use it with.

Each Gem in a Ruby installation can itself have multiple versions. This frequently occurs naturally as you install updated Gems, but can also be a requirement; sometimes you just need a specific version of a Gem for one project, but want to use another version for your other projects.

Ruby projects are programs and libraries that make use of Ruby as the primary development language. Each Ruby project is typically designed to use a specific version (or versions) of Ruby, and may also use a variety of different Gems.

The Bundler program is itself a Gem that is used to manage the Gem dependencies of your projects. That is, it determines and controls the Ruby version and Gems that your project uses, and attempts to ensure that the proper items are installed and used when you run the program.

Finally, Rake is another Gem. It isn't tied to any one Ruby project, but is, instead, a tool that you use to perform repetitive development tasks, such as running tests, building databases, packaging and releasing the software, etc. The tasks that Rake performs are varied, and frequently change from one project to another; you use the Rakefile file to control which tasks your project needs.

Useful Links