У вас, по сути, есть два звонка на power
без какой-либо причины (я дикий догадывался, что вы ожидали карри там, но дело не в том, как карри делается в ruby.)
Первый вызов power
с блоком не передает ни одного аргумента, в то время как оба обычных аргумента являются обязательными. Должен быть один вызов, передающий аргументы блока и :
power(2, 3) { |a, b| print "#{a**b}" }