Что касается решения ruby 1.9, я не уверен на 100%, но ruby 1.9.2 добавляет метод Method # parameters, который возвращает параметры в массиве: символов
irb(main):001:0> def sample_method(a, b=0, *c, &d);end
=> nil
irb(main):002:0> self.method(:sample_method).parameters
=> [[:req, :a], [:opt, :b], [:rest, :c], [:block, :d]]
Не уверен, что у них есть решение и для параметров блока.