Ruby 1.9.3 のドキュメントを調べると、Array#<<との両方Array#pushが、現在の配列の末尾に要素を追加することを実装するように設計されています。ただし、両者には微妙な違いがあるようです。
私が遭遇したのは、*演算子を使用して他の配列全体の内容を現在の配列に追加できることですが、#push.
a = [1,2,3]
b = [4,5,6]
a.push *b
=> [1,2,3,4,5,6]
代わりに使用しようとする#<<と、ドット演算子や括弧で使用されているかどうかに応じて、さまざまなエラーが発生します。
#<<が同じように機能しないのはなぜ#pushですか? 一方は実際にはもう一方のエイリアスではありませんか?