Como você stringize / serialize o código Ruby?

Eu quero ser capaz de escrever um lambda / Proc no meu código Ruby, serializá-lo para que eu possa escrevê-lo em disco e, em seguida, executar o lambda mais tarde. Mais ou menos como ...

x = 40
f = lambda { |y| x + y }
save_for_later(f)

Mais tarde, em uma execução separada do intérprete Ruby, eu quero poder dizer ...

f = load_from_before
z = f.call(2)
z.should == 42

Marshal.dump não funciona para Procs. Eu sei que o Perl temData :: Dump :: Streamere em Lisp isso é trivial. Mas existe uma maneira de fazer isso em Ruby? Em outras palavras, qual seria a implementação desave<code>_</code>for<code>_</code>later?

Editar: Minha resposta abaixo é legal, mas não fecha variáveis ​​livres (comox) e serializá-los junto com o lambda. Então no meu exemplo ...

x = 40
s = save_for_later { |y| x + y }
# => "lambda { |y|\n  (x + y)\n}"

... a saída da string não inclui uma definição parax. Existe uma solução que leve isso em consideração, talvez serializando a tabela de símbolos? Você pode acessar isso em Ruby?

Editar 2: Atualizei minha resposta para incorporar variáveis ​​locais de serialização. Isso parece aceitável.

questionAnswers(4)

yourAnswerToTheQuestion