Recently the Rails community got their panties in a wad about the Kickstarter for Rails.app.
I disagree with Yehuda’s methods, but I do agree that there’s a problem. Follow me down the path of installing Rails on an OS X machine, in the eyes of a newbie:
- Hmm, I need Ruby 1.9. OS X comes with Ruby 1.8. Ok, umm, how do I build 1.9 on OS X?
- Oh, people are pointing me at ruby-build or RVM
Make not found?!!”
- Oh, I need to install a 2GB XCode, off the App Store. OK.
- Darn, someone pointed out that I could have downloaded some Unix tool thingy at a tenth of the size. Whatever. I can use XCode as an editor, so I guess that works.
rvm install 1.9.2
rvm use 1.9.2
gem install bundler, because someone told me to.
- WTF?!! “Failed to build native extension”.
- Great, pass some oddball command to rvm and it worked
- Ok, I need to install MySQL because I need a database. I hope this one labeled 10.6 works, and I hope I get the right format and architecture
gem install mysql, because someone told me to.
- Could not build native extension. Again. Same error message, different reason, and a different solution. This is getting old.
- Great! My setup’s all working. Oh, there’s an update to OS X? Better download that…
- WTF broke now?
- Ok I fixed it.
- Great! My setup’s all working. Oh, I have updates on the Mac App Store. I better Update All.
- Hmm. I got a new version of XCode. I hope my Ruby didn’t break.
- Why do I need to
bundle exec everything?! (Oh, there’s a solution for that?!!)
- We’re moving to Ruby 1.9.3.
rvm install 1.9.3. Great, another error
Some of these are exaggerated, and some of these have been resolved by the community at large. A few of these stump even me, a professional Rails developer. Example: I haven’t been able to build Ruby 1.9.2 since Xcode 4.3. Yes, I know:
rvm get latest, and pray.
This is why I do all my Rails development on virtual machines, thanks to Vagrant and Puppet. With Vagrant + Puppet I have an environment I totally control, and I know will remain stable (and reproducibly stable).
We’re also discounting people who have to try the latest and greatest, like the OMG I’M A DEVELOPER, SO I HAVE TO RUN THE MOUNTAIN LION BETAS TO DO PRODUCTION WORK people.