John Hawthorn

Rails logging to console

One of the best tools in a rails developers arsenal is the rails console, being extremely useful for brainstorming, debugging, and testing. Having it log active record queries directly to the console can improve readability and convenience over looking through the development logs to see what SQL queries have been run.

before:

ruby > User.first => #<User id: 1, ...

after:

ruby > User.first User Load (0.4ms) SELECT "users".* FROM "users" LIMIT 1 => #<User id: 1, ...

This works with both rails 2 and rails 3 by adding the following lines to ~/.irbrc

if ENV.include?('RAILS_ENV') && !Object.const_defined?('RAILS_DEFAULT_LOGGER') # for rails 2 require 'logger' RAILS_DEFAULT_LOGGER = Logger.new(STDOUT) elsif defined?(Rails) # for rails 3 require 'logger' ActiveRecord::Base.logger = Logger.new(STDOUT) end

The same can be accomplished though editing environment.rb but I’d prefer to use this method as it will apply to any rails project without modification.