Как мне извлечь или проанализировать буквальный текстовый код функции или блока Ruby?

#ruby #couchdb

#ruby #couchdb

Вопрос:

Я пытаюсь интегрировать работу с CouchDB в веб-фреймворк Camping. Ранее я использовал выражения S для разбора простых блоков Ruby в JavaScript и просто писал встроенный JavaScript в строках, когда мне нужно было что-то более сложное.

Затем я обнаружил сервер просмотра и хочу перейти к использованию Ruby для отображения и сокращения функций.

На данный момент я могу сделать что-то вроде этого:

 view = CouchDB::View.new :myview do
    map do |doc|
        emit(doc._id, doc.price) if doc.kind == "Product"
    end
    reduce do |values|
        return sum(values)
    end
end
 

Я хотел бы иметь для этого аналогичный синтаксис, но чтобы фактический текст этих блоков (или методов, или чего-то еще) был чем-то, что я могу напрямую прочитать и отправить в базу данных, в которой хранятся представления. Возможно ли это сделать так, чтобы это не было по-настоящему злым, например, просто поместить их в строку или прочитать файл и каким-то образом проанализировать его для текста представлений?

Ответ №1:

Вы могли бы использовать что-то вроде ruby2ruby для анализа содержимого блока.

Это даст вам маркированную версию блока, но не буквальный текст, поскольку разметка отбрасывается, когда исходный код компилируется в байт-код.

Комментарии:

1. Хм, да. Думаю, тогда я мог бы написать свой собственный простой сервер просмотра, который мог бы обрабатывать байт-код. Было бы неплохо сохранить представления, понятные для человека.

2. Генератор rdoc документации способен индексировать методы и идентифицировать исходные блоки, поэтому вы можете заглянуть туда, чтобы посмотреть, работает ли это для вас.