If you're just starting to learn Ruby, the numerous tools used with the language can seem overwhelming. For instance, right from the beginning, you may need to learn about RubyGems, rbenv or RVM, Bundler, and Rubocop, and that's just a start. Later, you will learn about databases and SQL, Rake, Rails, and more. New developers have an even bigger challenge: they also need to learn about the command line and environment, git, a code editor, as well as all the concepts of programming. This toolbox provides the environment that makes Ruby a useful and practical software development language.

Fortunately, you don't need all these tools immediately, nor do you need familiarity with advanced features from the very beginning. All you need to begin is a short introduction to the most commonly used tools. Here at Launch School, for example, we teach many of these tools as they come up in the curriculum. Yes, the introductions come hot and heavy at first, especially for new developers, but nothing is presented before you need it.

Since we already cover much of this material elsewhere, this guide doesn't spend too much time teaching you how to use these tools, though we do have a "how to" chapter. Instead, we concentrate on a handful of tools -- namely Ruby itself, rbenv, RVM, Gems, Bundler, and Rake -- and talk about how they fit into the world of Ruby development and your computer system. The information presented here aims at showing what these tools do, how they do it, how they interact with your computer, and how you can diagnose and even fix problems that arise from their use.

We don't expect you to thoroughly understand every detail on your first pass through this material. The goal here is to help you formulate a mental model of how the pieces fit together; with that mental model, you have a realistic chance at debugging tricky environment issues. These are issues that surround the act of programming. Most professional programmers spend an inordinate amount of time and effort with these non-coding tasks; you likely will too. We want you to learn how to navigate your way through your coding environment with some idea of how everything works.

As with other Launch School materials, we assume that you are using a UNIX-like environment, such as that offered by Macs, Linux, and online programming environments like Cloud9. While you can develop Ruby programs under Windows, doing so is extremely complex; if your system uses Windows, we recommend using an online environment like Cloud9 for your Launch School education.

This book leans heavily on using the command line and knowing a bit about how your system uses the environment. If you need a refresher, take some time to review our Introduction to the Command Line book.

We'll start by discussing the basic Ruby installation.