В общем, самый простой способ вызвать метод, для которого у вас есть имя, это использовать send
или __send__
.Здесь:
builder = Builder::XmlMarkup.new
builder.__send__("bank_info") do # same effect as: builder.bank_info do
builder << "Chase"
end
Кстати, есть вариант public_send
, если вы хотите убедиться, что вы не вызываете закрытый метод.Это только в Ruby 1.9, вы можете require "backports"
использовать его в Ruby 1.8.
Примечание: в этом случае send
не работает, как указано @KandadaBoggu, потому что Builder переопределяет его;Вы должны использовать __send__
.