I regard Vagrant as indispensable for Ruby on Rails development. (My setup is at https://github.com/jhsu802701/vagrant-debian-jessie .) Before I learned to use Vagrant, I used VirtualBox directly for Ruby on Rails development.
That said, I also know that most people rely on Ruby on Rails installed directly on the host OS. I never liked this setup, because there was no way to return Ruby on Rails to its initial state. If anything went wrong, then I either had to troubleshoot the Ruby on Rails setup or reinstall Ruby on Rails. I was unable to proceed any further on the project until I resolved this matter. Additionally, there’s also the “works on my machine” problem. There were times when I tried to transfer my Rails app to another machine or deploy it, only to be greeted by very long error messages because of setup details that I forgot. There were also times when I published a Ruby gem, only to get weird errors when I tried to use it. These problems were most likely to crop up when I used “gem install” to install a Ruby gem but forgot to add the gem to the Gemfile/gemspec or when I made changes to the Gemfile/gemspec.
As a result, I insist on using Vagrant so that I can return Ruby on Rails to its initial state. I also insist on including in each project a setup script that handles the setup AND testing. When I rebuild my Vagrant box, git clone the project, and run the setup script, all of the tests should proceed as expected. If that’s the case, then I am assured that I have covered all of my bases. If I get errors, or if strange things happen, then I know that I haven’t covered all of my bases and need to update my setup script/instructions.
That said, I’d like to hear from those of you who are still part of the vast majority who use Ruby on Rails directly on the host OS. How do you deal with the issues that prompted me to use VirtualBox/Vagrant? (I think that gemsets are a popular solution. Is this correct?)