Rails Conventions

As I have been hacking away at Ruby On Rails I have found a number of conventions to make things easier to hack on software. The following is a list of various conventions I have adopted.

Coding style

  • Two spaces, no tabs
  • Blocks use { } if its a one liner, otherwise use do … end
  • Surround equal signs with spaces, @myvar = 'foo', not @myvar='foo'
  • Surround hash assignments with spaces, :foo => 'bar', not :foo=>'bar'
  • Class.method(my_arg) — not method( my_arg ) or method my_arg

Derived from Typos code conventions


  • config/databases.yml: Should NOT store the config/database.yml in source control. Instead store config/database.yml.example and make users copy the file to config/database.yml. Add config/database.yml into ignore list as appropriate for source control system (svn:ignore, .cvsignore etc) to avoid being warned about non-source controlled file.
  • db/create.VENDOR.sql: Store creation scripts for the database in separate SQL files.

Standard Flash Usage

Place messages in the flash according to the following conventions

  • * :notice* for positive feedback. eg. “User successfully updated.”
  • * :message* for neutral feedback. eg. “User has 3 grace logins remaining.”
  • * :warning* for negative feedback. eg. “User does not exist or password does not match.”

The view would then present this information in the following manner

<% for name in FLASH_[:notice, :warning, :message] %> <% if flash[name] %> <%= "<div id=\"#{name}\">#{flash[name]}</div>" %> <% end %> <% end %>

Derived from the email thread RFC: Standardising flash usage amongst Rails applications & generators