Meu código possui um erro mas não consigo resolve-lo, alguém poderia me explicar onde está meu erro? Obs: Se poderem dar um feedback sobre legibilidade e outras dicas, sou todo ouvidos!
def boas_vindas
    puts "Olá"
    puts "Qual o seu nome"
    nome = gets
    print "\n\n"
    print "Olá #{nome.strip} é um prazer te conhecer"
    print "\n\n"
end
def menu_opcao
    puts"Agora esolha uma das opções"
    puts "Escolha:"
    puts "1 - adicao: "
    puts "2 - subtração: "
    puts "3 - multiplicação: "
    puts "4 - divisão: "
    puts "5 - resto da divisão: "
    escolha = gets.to_i
end
def menu_calculadora
    puts "Essa é a sua calculadora"
    puts "Entre com dois valores para realizarmos algumas operações!"
end
def mensagem_final
    puts "Obrigado por testa meu codigo, obrigado por tudo!"
    puts "fim do programa"
end
def soma (x, y)
    puts "A soma de #{x} e #{y} é:"
    resultado = x + y
end
def subtracao (x, y)
    puts "A subtracao de #{x} e #{y} é:"
    resultado = x - y
end
def multiplicacao(x, y)
    puts "O resultado da multiplicacao de #{x} e #{y} é:"
    resultado = x * y
end
def divisao (x, y)
    puts "A divisão de #{x} e #{y} é:"
    resultado = x / y
end
def resto (x, y)
    puts "O resto da divisão de #{x} e #{y} é:"
    resultado = x % y
end
def calculadora (escolha, x, y)
case escolha
    when 1
        soma
        calculadora
    when 2
        subtracao 
        calculadora
    when 3
        multiplicacao
        calculadora
    when 4
        divisao 
        calculadora
    when 5
        resto
        calculadora
    else 6
        puts "Sair? (Sim ou Não)"
        resposta = gets.upcase
        if resposta == "SIM"
            mensagem_final
        else
            puts"Escolha outra opção do menu"
            menu_opcao
            calculadora
        end
    end
end
boas_vindas
menu_calculadora
x = gets.to_i
y = gets.to_i
escolha = menu_opcao
calculadora