そこでskeletonですよ

Ruby が PHP に負けている点 #2: 複文の終わりを表す予約語が end しかない - kなんとかの日記

Ruby では end しかないから、if 文や for 文がネストしたときに end を書き忘れたりタイプ ミスしたりすると、どこを間違えたのか探し出すのが非常に困難である。エディタの自動イン デントに任せれば見つかるというやつもいるけど、Ruby の文法は正しく解析するのが非常に困 難で、Emacsruby-mode ですらよくインデントを間違うから、あてにならん。

また 9 割がたはエディタの自動インデントで検出できるのはその通りなんだが、エディタでは 検出できない残りの 1 割が実際には大きな問題である。なにせ、発生したときに間違った箇所 を発見するのが困難なため、1 割しか発生しなくても大きな作業コストとなるのだ。正直、エ ディタで見つかるから問題ないと主張しているやつは、問題を正面から取り組むことから逃げ ているだけだと思う。

ごもっともorz
Rubyは人に優しいが機械には厳しい言語だと思う。パーザ泣かせ。

Lispサイキョw

1 ファイルに長く書きすぎるのが悪い、コードを細かくファイルに分割してメソッド定義も短 くするよう心がければ、end の間違いは発見しやすいという人もいる。しかし eRuby をしょっ ちゅう使っている身からすると、eRuby ではその方法は使えない。また eRuby では <% for item in @list %> と <% end %> の間が数十行になるのは珍しいことではないから、こんな方 法もあるとはいえ、end の問題はふつうの Ruby コードよりも深刻だ。

通常のRubyスクリプトならばruby-electric-spaceでendを自動入力してくれる。

eRubyに対してはskeletonやらyasnippetやらでendを自動入力させる設定を書くといいんじゃないかな。あとは<% %>を色付けするとか。