Как я могу создать дружественную ORM nosql, не загрязняя глобальную область?

Некоторое время я работал над созданием небольшой библиотеки Ruby для взаимодействия с CouchDB, аккуратной небольшой базой документов с HTTP-интерфейсом. Ключевые особенности:

  • объекты документа - прославленные хеши
  • функции JavaScript Map/Reduce написаны на собственном Ruby и проанализированы в JavaScript с помощью S-выражений
  • Вы можете взаимодействовать с несколькими базами данных Couch
  • он должен хорошо интегрироваться с микро-фреймворками, такими как Camping

Я хочу быть в состоянии сделать что-то вроде этого:

@recipes = Recipes.all

Где "Рецепты" - это класс, определяющий пару обязательных ключей, которые есть в документе (имя класса автоматически используется в качестве "доброго" ключа).

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

@recipes.each do |recipe|
    recipe.cost = "too much!!"
    recipe.push!
end

Теперь, очевидно, чтобы иметь возможность "толкать" таким образом, мне нужно, чтобы база данных была… где-то в области видимости… или чтобы сам объект документа содержал ссылку на объект базы данных? Как это делается в устоявшихся ORM, таких как ActiveRecord?

Я не хочу делать, ты знаешь, recipe.push!(@couch_database_object)или что угодно, потому что это отвратительно! Но я не хочу быть грязным подонком.

Любой совет?

0 ответов

Другие вопросы по тегам