What happens at the RubiABQ Meetup?

Ever wonder what people discuss at the RubiABQ meetup? It’s been a pretty wide and eclectic set of topics over the last year, and sometimes it’s even Ruby. The last several meetups have been deep into Ruby and Rails topics. Last night we started with a continuation talk about Forwardable. This involved a comparison of ivars vs constants and a conversation about the singleton class.

We moved onto a discussion of the Paper Trail gem, which provides a great audit trail for your Ruby apps. Cliff did an excellent deep drive of a similar gem he wrote about seven years ago before Paper Trail existed called Access Milestones. It involved a clever modification of all tables adding start and end times which allowed keeping multiple versions of records to show modification history. Some careful monkey patching of find and other routines allowed looking at the data at any time slice.

We moved onto a discussion of work flow tools used by the Ruby community. This was prompted by a similar discussion we had in the WordPress Developers group and I was curious how similar or different the tools would be for Ruby. I think this will be continued in a future meeting as we didn’t get into all aspects of work flow, which can be quite complex in the Ruby or Rails world.

Tools for work flow

Deployment tools

Capistrano is probably the most popular deployment tool for RoR. Capistrano is a remote server automation tool that is based on rake, the Ruby version of Unix make.

Vlad the deployer is another deployment tool mentioned by the group. Vlad is also based on rake, and was created at a time when Capistrano wasn’t using rake.

Heroku is a service that pulls from github for deployment. People like the ease of use of Heroku, but it gets expensive quickly. It’s a nice way to build a proof of concept quickly. Heroku is for people who don’t have devops support, but do have money.

Another service like Heroku is EngineYard. It hasn’t been as flexible as Heroku in the past, having it’s own gem sets and requiring their devops to install a set of gems for you.

Databases

Whereas the PHP world often uses MySQL for database support, Ruby folks seem to prefer Postgres. There was some discussion of how MySQL fails without notifying the user that it has failed, where Postgres will always tells you when something has gone wrong. Disadvantages of Postgres include it being less widely available and often more difficult to install.

Editors

Tools for managing your environment

One challenge in the RoR world that is a larger issue than in the PHP world is managing multiple versions of Ruby and Rails. There are several tools for using this, the most popular being rbenv and rvm.

This led into a discussion of how to manage Open Source software. Rubyists seem to often use MacOSX as an operating system environment. We discussed MacPorts vs Brew for software installation.

Spring, RSpec, and Guard are a combination of tools for monitoring file changes and automagically running unit tests. Spring is a Rails application preloader, RSpec is a tool for unit testing, and Guard is an event watcher and test runner.