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:


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