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
Cliff uses Emacs. Rubymine by Jetbrains is a nice IDE for Ruby. Sublime Text was mentioned as well.
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.
Testing and Continuous Integration
Selenium is a browser automation tool.
NightWatch is a javascript library that runs against a Selenium server.
Sauce Labs runs a service to help with automated browser testing.
jqUnit and Jasmine are other testing tools that were mentioned.
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.
Jira by Atlassian is an issue tracker.
Bamboo is Atlassian’s continuous integration product.
TeamCity is a CI product by Jetbrains.
There may have been a couple of more tools mentioned at the end of the Meetup that I missed.
Random Information
-
El Capitan – next MacOSX – will not allow modification of /usr/bin
- When on a 100 mile run, with an ice pack on your neck, don’t leave your backup ipod in the path of melting ice if you want tunes for the last 20 miles. 🙂 [ From Cliff ]
PostScript
Frank LaFond posted a great list of tools that we might look at in a future meeting. Thanks Frank!
Text Editors
- I use RubyMine
- Most used vim or Sublime
Teams
- Hipchat, using API for automated tool posting
- Github
- YouTrack, Jira
Deployment
- Capistrano
- Saltstack (uses Vagrant and VirtualBox)
- Docker (investigating)
- Custom code
- TeamCity, CircleCI (continuous integration)
Productivity
- iTerm, tmux
- Sequel Pro
- Zapier
Testing
- RSpec
- Capybara
- Sauce Labs
- Litmus, Email on Acid (mail client renderers)
- metric_fu (static analysis including caine, churn, flay, reek, roodi, saikuro)
- simplecov
Security
- brakeman (static analysis)
- OSSEC