I’m at the Ruby Hoedown in Huntsville this weekend. Being around so many brilliant geeks encouraged me to release a gem I’ve had sitting in the hopper for several weeks.

finder_filter encapsulates a pattern I find myself using quite frequently in Rails. Namely, looking up an instance variable before an action. For example:

class UsersController < ActionController::Base before_filter :find_user, :only => [:show, :edit] def show # do something with @user end def edit # do something with @user end def find_user @user = User.find(params[:id) end end

Sticking the finder in a before filter keeps the code DRY, but it still takes several lines to do this. finder_filter reduces this to a single line of code:

class UsersController < ActionController::Base finder_filter :only => [:show, :edit] def show; end def edit; end end

There are other options to customize the column and param used in the lookup. Check out the README for full details.

To install the gem as a plugin in your Rails project:

sudo gem install pelargir-finder_filter --source=http://gems.github.com

Then open environment.rb in your Rails app and add the gem as a dependency in your initializer block:

Rails::Initializer.run do |config| config.gem "pelargir-finder_filter" ... end

If you have any comments or suggestions, I’d love to hear from you. Contact me through the finder_filter project on GitHub.