Ruby acessando variáveis ​​externas em função aninhada

Tenho certeza que há uma resposta simples para isso; Eu simplesmente não consigo encontrar. Fiz uma função aninhada em Ruby e estava tendo problemas para acessar variáveis ​​da função externa dentro da função interna:

def foo(x)
  def bar
    puts x
  end
  bar
  42
end

foo(5)

Eu recebo:NameError: undefined local variable or methodx 'para main: Object

O código analógico do Python funciona:

def foo(x):
  def bar():
    print x
  bar()
  return 42

foo(5)

Então, como faço a mesma coisa em Ruby?