Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

83 lines (59 sloc) 2.382 kB

Style Guide

Rather than write a full style guide, please follow by examples you see in the code. If you send me a patch, I will not reject it for style reasons (but I will fix it before it gets committed).


We support logging structured data, so please do that.

Rather than this:"Some error occured in request #{request} on input #{input} from client #{ip}")

Do this:"Some error occured in this request", :request => request, :input => input, :client => ip)

Code Style

  • indentation: 2 spaces
  • between methods: 1 line
  • sort your requires
  • long lines should wrap at 80 characters. If you wrap at an operator (or, +, etc) start the next line with that operator.
  • parentheses on function definitions/calls
  • explicit is better than implicit

The point is consistency and documentation. If you see inconsistencies, let me know, and I'll fix them :)

Short example:

  require "something from a gem" # from gem 'thing'

  # some documentation about this class
  class Foo < Bar
    # some documentation about this function
    def somefunc(arg1, arg2, arg3)
      # comment
      puts "Hello"
      if (some_long_condition \
          or some_other_condition)
        puts "World"
      end # if <very short description>

      # Long lines should wrap and start with an operator if possible.
      foo = some + long + formula + thing \
            + stuff + bar;

      # Function calls, when wrapping, should align to the '(' where reasonable.
      some_function_call(arg1, arg2, arg3, some_long_thing,
                         alignment_here, arg6)
      # If it seems unreasonable, wrap and indent 4 spaces.
          arg2, arg3, arg4)

      case foo
        when "bar"
          puts "Hello world"
        when /testing/
          puts "testing
          puts "I got nothin'"
      end # case foo

    end # def somefunc
  end # class Foo

Specific cases

Hash synatx

Use of the "hash colon" syntax (ruby 1.9) is not accepted: { foo: "bar" }


String#[] with one numeric argument must not be used due to bugs between ruby versions.

  • Do not use this: "foo"[0]
  • Use this: "foo"[0,1]
Jump to Line
Something went wrong with that request. Please try again.