Passar bloco em um método - Ruby [duplicado]

Esta pergunta já tem uma resposta aqui:

bloco @Code passado para cada um funciona com colchetes, mas não com 'do' - 'end' (ruby) 3 respostas

Tenho uma pequena pergunta sobre a passagem de bloc

def a_method(a, b)
  a + yield(a, b)
end

Isso funciona bem.

k = a_method(1, 2) do |x, y| 
  (x + y) * 3 
end
puts k

Mas isso não vai funcionar.

puts a_method(1, 2) do |x, y| 
  (x + y) * 3 
end
# LocalJumpError: no block given (yield)

Alguém pode me explicar isso gentilmente?

Obrigado. Exemplo extraído de Metaprogramming Ruby de Paolo Perrotta. Grande livro

questionAnswers(2)

yourAnswerToTheQuestion