書きかけの自作メール振り分けプログラムにこんなの(以下は断片)があった。

def register_action(sym, &block)
__send__(:define_method, sym) do |*options|
options = options.shift || {}
block.call(options)
end

register_action(:to_folder) do |options| ... end

引数の受け取り方になんか制限つきそうな気が……