Я решил это.
Ситуация состояла в том, что я динамически создавал определения для создания оптимизированного синтаксического анализатора, и я строил его, используя постепенно добавляемые строки.Как вы можете себе представить, было много экранирования, особенно с запросами MySQL.Когда я тестировал в irb, я забыл, что с помощью
puts parser
... вычисляется строка при печати, удаляя при этом один уровень экранирования.
Решение было простым: eval моя строка перед class_eval'ing.
fetchclass = Object.const_set(
characteristics['shortname'],
Class.new { class_eval( eval parser ) } )