Rails multi_db с транзакцией - PullRequest
       4

Rails multi_db с транзакцией

1 голос
/ 22 декабря 2011

Я недавно установил гем multi_db в своем приложении rails 2.3.10, чтобы использовать репликацию главного / подчиненного MySql.

с момента установки гема, каждый раз, когда я использую транзакции в своем коде, например:

MyModel.connection.transaction do ...some code... end

Я получаю исключение: NoMethodError undefined method 'assert_valid_keys' for true:TrueClass

любые идеи о том, как использовать multi_db с транзакциями?

РЕДАКТИРОВАТЬ: iv 'с тех пор, как я установил multi_db

MyModel.connection.transaction do
  test = 1+2
end

, мы нашли что-то интересное и вернули следующее исключение (в большинстве случаев): NoMethodError undefined method 'assert_valid_keys' for true:TrueClass

, но если я запустил:

MyModel.connection.transaction({}) do
  test = 1+2
end

все идет гладко.

моя начинка кишки говорит мне, что multi_db (который основан на самоцвете мазохизма) не "хорошо играет" с одним из других используемых им самоцветов (возможно: deadlock_retry или ar-extensions).

есть идеи?

1 Ответ

0 голосов
/ 24 декабря 2011

multi_db не полностью совместим с ActiveRecord 2.3.10.Он вызывает метод transaction для соединения с аргументами, отличными от допустимых (см. сайт вызова здесь).

Вам придется либо не использовать транзакции, либо понизить Rails, исправитьmulti_db (пожалуйста!), или просто полностью удалите этот драгоценный камень.

Вы можете увидеть здесь , где параметры на transaction изменились в ActiveRecord :: ConnectionAdapters :: DatabaseStatements, еще в январе2009 (до выхода Rails 2.3.0).

...