Ruby uzyskujący dostęp do zmiennych zewnętrznych w funkcji zagnieżdżonej

Jestem pewien, że jest na to prosta odpowiedź; Po prostu nie mogę tego znaleźć. W Ruby stworzyłem zagnieżdżoną funkcję i miałem problem z dostępem do zmiennych z zewnętrznej funkcji wewnątrz funkcji wewnętrznej:

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

foo(5)

Dostaję:NameError: undefined local variable or methodx 'dla main: Object`

Analogiczny kod Pythona działa:

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

foo(5)

Jak mam zrobić to samo w Ruby?