Getting Started with Ruby on Rails – What Tools do you Use?
A friend recently asked us, here at Highgroove:
“I am wanting to get into Ruby and Ruby on Rails development – what tools should I use, so I can start with a leg up?”
It’s a great question, and once we answered, our friend said: “you should put this on-line.” So here goes…
We use many different Ruby versions – each client’s project may require a different version (ruby 1.8, ruby 1.9, JRuby, etc.), so we use a tool called RVM to allow us to switch between Ruby versions on a per project basis. If you’re brand new, the default Ruby 1.8.7 should be fine.
We like to “build tools from source,” which means we use guides like Hivelogic’s Installing Ruby, RubyGems, and Rails on Slow Leopard, and for that reason, most of us use homebrew, too.
We use TextMate to edit code in projects, but only because we wrote the book on it. A few of us use Vim, and because of the internal competition (can Textmate do this? Can Vim do this?), we’re always getting more productive with both.
For deployment we use the cloud platforms, either RailsMachine, EngineYard, Amazon EC2, Rackspace Cloud, or Heroku. Heroku is the way to go if you’re new to Ruby on Rails. We also can’t live without Scout, once a Ruby on Rails application is up and running.
We use Basecamp for Project Management, and Pivotal Tracker for tracking feature development. We use test/unit to write unit testing, RSpec when the time is right, and Cucumber for speeding up development (and getting it done right). We also use Selenium (in conjunction with Cucumber) for doing high level feature development. If you’re just getting started, stick to test/unit, and then add in RSpec and Cucumber when you realize why you really need these tools.
In a nut-shell, we always do feature development off a list of stories, either in an iteration, or from a moving, constantly prioritized back-log, that includes descriptions, screenshots, and what we call “acceptance criteria”, which is just a fancy word for: “how will we know when the feature we built is working?”
What tools would you recommend?