A Fresh Cup is Mike Gunderloy's software development weblog, covering Ruby on Rails and whatever else I find interesting in the universe of software. I'm a full-time Rails developer and contributor, available for long- or short-term consulting, with solid experience in working as part of a distributed team. If you'd like to hire me, drop me a line. I'm also the author of Rails Rescue Handbook and Rails Freelancing Handbook.


A Fresh Cup

Notes on Rails and other development


Double Shot #494

Lots of interesting new stuff showed up over the weekend:

  • i18n - The i18n gem has reached version 0.2.0 with lambda support among other goodies.

  • can_touch_this - A permissions system extracted from rboard.

  • sort_by - Active Record/ Action View extension to produce user-sorted, paginated tables in your views.

  • Posterous now supports TrailerAddict embeds and Github Gist code drops. - With Gist support, Posterous is getting to be an interesting alternative for a quick & dirty coding blog.

  • Installing FreeImage and ImageScience on Debian Linux - Came in handy, though note that the current version of FreeImage has changed.

  • Ruby 1.9.1 & Friends - Ryan Bigg has revised his big blog entry on how to get rails up and running on 1.9.1. It's getting closer to prime time.

  • padlock_authorization - Simple object-based role authorization plugin. If I wasn't rolling my own authorization I'd probably try this one next.

  • Glow - The BBC gets into the JavaScript library business. Big selling points appear to be downlevel browser and multiple version support.

  • Mercurial: The Definitive Guide - Bookmarking in case I'm ever forced to use Mercurial.

  • Phoenix - Real-time editing for web pages, including HTML, CSS, and JavaScript, within the confines of Firefox.

  • Announcing Appsta - Gem that extends the templating facility in Rails 2.3 with knowledge of GitHub and Heroku, among other things.

Big Old Rails Template

A few people have asked me about the Rails application template that I've put together recently. For those who are interested, it's now available for review and download as a gist. To use it, just specify the -m switch when creating a Rails application:

[sourcecode language='ruby']
rails new_app_name -m lark_template.rb

I should warn you of two things. First, it's a pretty heavyweight template, sticking a lot of stuff into the new application. This suits me, because I have a lot of things I use in just about every application, but it may not suit you. Second, Rails templates are not one-size-fits-all; you'd be better off treating this as a starting point to steal from than a finished template to use (though if you want to use it, feel free).

Here's a list of what this template sets up:

Coding Tools
  • Authlogic for user authentication, including password resets, anonymous_only, authenticated_only, admin_only application helpers

  • World's simplest authorization system: manage multiple string roles on users with User#add_role, User#remove_role, User#clear_roles, and User#has_role?

  • Date formats: :us, :us_with_time, :short_day, :long_day

  • live-validations for client-side JavaScript data entry validation. Add :live_validations => true to form_for declarations to hook this up.

  • Paperclip for attachment management

  • /pages/css_test will show most CSS styles in action

  • Searchlogic for magic named scopes and search forms - http://rdoc.info/projects/binarylogic/searchlogic. Includes attribute_equals, attribute_does_not_equal, attribute_begins_with, attribute_like, attribute_ends_with, attribute_greater_than, attribute_null, attribute_blank etc. etc.

  • Stringex for extra string functionality - acts_as_url, String#to_ascii, String#to_html, String#to_url, String#remove_formatting, String.random

  • US State application helpers

  • will-paginate for pagination

Database Tools
  • Hooked up for PostgreSQL

  • admin-data plugin for administrative UI. http://localhost:3000/admin_data will get you to the application's data. On production, only admin can view data, no one can edit (modify config/initializers/admin_data.rb to adjust this)

  • db-populate for seed data

Deployment Tools
  • fast_remote_cache strategy for deployment

  • rubiadhstrano for deployment recipes; automatically uses multiple targets, so: cap production deploy for deployment to production

  • superdeploy for additional Capistrano tasks. cap -T for full list.

External Services
  • Exceptional for error tracking. Go to /pages/kaboom to test after finishing Exceptional setup.

  • New Relic for performance tracking

Testing Tools
  • Shoulda and Test::Unit for testing

  • Mocha for mocking

  • Object Daddy for factories

  • Generated code is already covered by tests

  • parallel-test for faster testing. rake test:parallel:prepare[2] to set up two test databases. rake test:parallel[2] to distribute tests across two cores

  • rack-bug for request/response/perf analysis. http://localhost:3000/__rack_bug__/bookmarklet.html to add bookmarklet to browser.

  • shmacros for additional Shoulda macros: should_accept_nested_attributes_for, should_act_as_taggable_on, should_callback, should_delegate, more

  • More extra shoulda macros: should_have_before_filter, should_have_after_filter

  • metric-fu for static code analysis. rake metrics:all, configure in Rakefile

  • inaction-mailer is installed for development environment, so mails sent during dev will end up as files in /tmp/sent_mails


Double Shot #493

There are days I need to remind myself that I'm happier on the open source side of the fence.


Double Shot #492

A bit sad to watch people get all excited over vaporware. We never learn, do we?


Double Shot #491

My schedule is not full, by the way, in case you need an extra hand to drive a Rails project to a successful conclusion.