It is a profoundly erroneous truism, repeated by all copy-books and by eminent people when they are making speeches, that we should cultivate the habit of thinking of what we are doing. The precise opposite is the case. Civilization advances by extending the number of important operations which we can perform without thinking about them. Operations of thought are like cavalry charges in a battle — they are strictly limited in number, they require fresh horses, and must only be made at decisive moments.
Alfred North Whitehead
Step 1: Upgrade RubyGems
gem update --system
As of my writing these words, the latest version will work with all released versions of Ruby back to 1.9.3. If you’re stuck running 1.8.7, consider fixing that first, but you may also refer to the previous, more complicated version of this post.
Step 2: make RubyGems Gemfile-aware
Starting with version 2.2.0, setting this environment variable to
RubyGems to automatically recurse upwards through the working directory and its
parents, looking for a
Gemfile. If it finds one, it will resolve all dependencies
and their versions, and activate them.
Step 3: There is no Step 3, go away
That a gem is “activated” means a few things:
gem install -gon the command line will install it.
- `require ‘gemname’” in a ruby file will resolve to it.
- If it has a command
$(gem environment gemdir)/bin/foowill run it.
If you don’t have that directory in your
will print a little warning telling you exactly what to add, but you’re probably using
either rvm, rbenv, or chruby; they all manage that automatically.
You don’t need to type
bundle exec anymore. You don’t need to type
anymore. You don’t need to type
gem install bundler anymore.
You don’t need binstubs, shell aliases, gemsets, git hooks, cd hooks, or version manager plugins.
Why are you still here.
Step 4: As there is no Step 3, there is definitely no Step 4
You may have heard this one before. Here’s how I tell it:
A kid’s mother tells him she’s going to teach him how to use their new washing machine.
First they gather all the dirty clothes in the house and pack them in.
“Now we measure in the soap.”
“Now we set the timer and start it running.”
“Now, we go to the library, and you choose out your favorite three books, and we come home, and read them together.”
The moral of the story is that the washing machine is not for washing clothes; it’s for not washing clothes.
Step 5: Now you’re really asking for it
I told that story partly because
bundle exec makes me angry enough that I have trouble
discussing it directly. Please, for your own sake, do what it takes to stop typing it.