Skip to content

Instantly share code, notes, and snippets.

@jvns

jvns/bundler.md

Last active Sep 28, 2015
Embed
What would you like to do?

why I didn't understand Bundler

Yesterday I was having drinks with @sferik, and I mentioned that I find Bundler really confusing, more confusing than virtualenv. And then he called me on it and was like "okay but why?"

And I think we figured it out! And it wasn't just that I know the Python ecosystem better than the Ruby one (though I do). Here's the story. (it doesn't have much to do with bundler, and it might not be true, but it felt satisfying to me)

In 2012, I wanted to install Octopress. I already had some Rubies on my computer, and Octopress had helpful instructions telling me to bundle install. It did not work and I was real sad.

the story gets real simple real fast: if you want to install a Python package, it almost always works with Python 2.7. If you have any Python on your computer and it was installed in the last couple years, you have Python 2.7.

In 2012, Ubuntu's system Ruby was (we think) Ruby 1.8. Ruby package maintainers actually change the Ruby version they use, and will make changes that are not backwards compatible with Ruby 1.8.

So to install Octopress, I needed to use some gem that Ruby 1.8 did not have. And that meant that I needed to install and set up a new Ruby version, which involves a bunch of PATH changes, which are kind of terrible and confusing, no matter what language you're trying to set up. (yes, even using rbenv. using a new thing is hard!)

so basically we decided: Python is easier to set up because Python programmers are conservative and write everything to work with Python 2.7. Ruby programmers embrace THE FUTURE more quicly and are like WOW NEW FEATURES YAY and suddenly Ubuntu's system Ruby is not good enough to install Octopress and 2012 Julia is confused.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment