> Showing 122 changed files with 4,156 additions and 2,915 deletions.<p>Wow, that's a lot of code for a tool which is doing little more than creating, starting, stopping, deleting, and zipping-up VMs. Looking at this diff, all I can say is: Holy Java-ish Ruby, Batman!<p>Most of these classes contain two non-helper methods: init and call. That's not a class; that's a function! I'm reminded of this talk, titled "Stop Writing Classes": <a href="http://news.ycombinator.com/item?id=3717715" rel="nofollow">http://news.ycombinator.com/item?id=3717715</a><p>I've used Vagrant before, but it always felt like overkill. When I had an issue with it, I cracked open the code and was quickly deterred from digging deeper. I hacked my VM back to working by hand and decided to avoid mucking with Vagrant.<p>The next time I need automated development VM provisioning, I plan to write a very small shell script. Here's an example of getting a box up and running with 7ish commands: <a href="http://www.linux-mag.com/id/7673/" rel="nofollow">http://www.linux-mag.com/id/7673/</a> For a complete development environment, you only need to additionally mount a shared filesystem and write an entry into your ssh config.<p>All that said, I do think that there is value in having a command line tool which abstracts various machine provisioning APIs. I know that such a thing exists for cloud providers, but I suspect local VMs have some unique concerns. Regardless, it seems like a task that a shell script is best suited for.