Как запустить eval в основной привязке - PullRequest
2 голосов
/ 03 марта 2012

Как можно получить основную привязку? Другими словами, в следующем коде, как я могу сделать так, чтобы eval игнорировал все назначения и т.д., ранее сделанные в some_codes ... some_codes?

some_codes
...
some_codes
eval(string_to_be_executed, binding)

Ответы [ 2 ]

2 голосов
/ 03 марта 2012

Я закончил тем, что сделал это, что выглядит немного элегантно, чем ответ Бена, который я принял.

В начале первого загружаемого файла назначьте что-то вроде:

$main_binding = binding

Затем, при необходимости, я могу использовать его как:

eval(string_to_be_evaluated, $main_binding)
2 голосов
/ 03 марта 2012

Самый простой способ - просто создать привязку в верхней части файла:

block = Proc.new{}
# some_codez
# ...
# some more of teh codez
eval(string_to_be_evaluated, block.binding)
...