Ruby – Syntax for putting a block on a single line

rubysyntax

So I've got a Ruby method like this:

def something(variable, &block)
  ....
end

And I want to call it like this:

something 'hello' { do_it }

Except that isn't working for me, I'm getting a syntax error. If I do this instead, it works:

something 'hello' do
  do_it
end

Except there I'm kind of missing the nice look of it being on one line.

I can see why this is happening, as it could look like it's a hash being passed as a second variable, but without a comma in between the variables…but I assume that there must be a way to deal with this that I'm missing. Is there?

Best Solution

You need to parenthesize your argument:

something('hello') { do_it }

That should work.