Yeah, I had to look this up too, since it's only been around since Ruby 1.9. I use both typically. Some guys try to go one way or the other, but a blog post I found earlier brings up a good point. No matter how much you try to stick to one, you'll always have to use "=>" pretty regularly. If that's the case, is it worth trying to mandate only one? The ":" can only be used on symbols, whereas a hash key can be anything.

This makes sense:
{ key1: 'my string', key2: 7 }

This never looks right to me:
function_name key: :value
where the key and value are both symbols... so I sometimes prefer:
function_name :key => :value

In these cases a "=>" has to be used:
[1,2] => 'asdfasdf'
var_name => 'asdfasdf'
'asdfasdf' => 'asdfasdf'

Other cases where it looks weird to me (maybe just my editor) is when some method option keys use reserved names as symbols:
do: :send_back_to_user
if: :check_user_state

But with the new lambda syntax, I think the ":" actually looks better:
hashrocket with old lamba -  :if => lambda { |task| !task.task_definition.requires_approval? }
hashrocket with new lambda -  :if => -> (task) { !task.task_definition.requires_approval? }
colon with new lambda - if: -> (task) { !task.task_definition.requires_approval? }

The second option is just too much arrow-ey goodness for my liking.

It seems that guys that are trying to find consistency here are trying to make something inherently inconsistent into something consistent. For myself personally, as a general rule of thumb, I try to use the new ":" syntax anytime the hash key is a symbol and the value is not... looks clean and a bit less to type.

Didn't mean to drag this on, but wanted to share what I had found while considering rubocop restrictions.