ブロック付きメソッド呼び出しを記述する際には { ... } あるいは do ... end を使うと思います。
しかしこれらは厳密にいうと異なります。
その違いは 結合強度 です。
{ ... } の場合
some_method other_method { ... }
この式は次のように解釈されます。
some_method(other_method{ ... })
do ... end の場合
some_method other_method do ... end
この式は次のように解釈されます。
some_method(other_method) do ... end
使い分けるべきシーン
{ ... } を使うべき
- メソッドの戻り値を利用する場合
- メソッドチェーン(a.foo{}.bar{}.baz{})をする場合
- 1行で記述できる場合
do ... end を使うべき
- 上記以外の場合、基本こちらを使うべき。
Ref.
- 初めてのRuby