Какой ORM использовать в одном процессе несколько соединений дб sinatra приложение?

Проверенный ActiveRecord, DataMapper, Продолжение: некоторое использование globals (статические переменные) некоторые требуют открытого соединения дб прежде, чем загрузить исходный файл моделями. Что ORM лучше для использования в sinatra приложении, которое использует различные базы данных.

5
задан Bill the Lizard 27 December 2010 в 15:09
поделиться

3 ответа

DataMapper разработан для использования с несколькими базами данных.

Вы можете настроить несколько репозиториев, просто сказав что-то вроде DataMapper.setup (: repository_one, «mysql: // localhost / my_db_name») .

DataMapper затем отслеживает все репозитории, которые были настроены в хэше, на который вы можете ссылаться и использовать для определения области:

DataMapper.repository (: repository_one) {MyModel.all}

(Область по умолчанию просто DataMapper .repository, который можно настроить, сказав DataMapper.setup (: default, «postgres: // localhost / my_primary_db») или тому подобное)

8
ответ дан 18 December 2019 в 11:54
поделиться

Лично я предпочитаю Sequel для всех моих ORM и базового доступа к базе данных, и именно его я использую с Sinatra/Padrino и в любое другое время, когда мне нужно получить доступ к базе данных вне Rails.

Я использовал DataMapper, но мне показалось, что Sequel проще и гибче, но, возможно, это просто так устроен мой мозг. ActiveRecord хорош сам по себе, но я думаю, что он лучше всего работает в сочетании с Rails.

Что "лучше"? Я думаю, что это субъективно и в основном связано с тем, как работает ваш мозг.

2
ответ дан 18 December 2019 в 11:54
поделиться

Похоже, что в большинстве ORM можно использовать разные базы данных. Для DataMapper посмотрите ответ knowtheory. Для Sequel вы можете передать обработчик базы данных в модель:

class Tag < Sequel::Model(db)
end

где db - открытая база данных. Для ActiveRecord вы можете использовать метод establish_connection.

5
ответ дан 18 December 2019 в 11:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: