Почему хранимые процедуры все еще не поддерживаются в Rails (3+)?

Я знаком с давними отношениями любви и ненависти между Ruby on Rails, DB (MS) -драйверами и хранимыми процедурами, и я разрабатывал приложения Rails начиная с версии 2.3.2.

Однако время от времени возникает ситуация, когда SP просто лучший выбор, чем объединение данных на (гораздо более медленном) уровне приложения. В частности, запуск отчетов, который объединяет данные из нескольких таблиц, обычно лучше подходит для SP.

Почему хранимые процедуры все еще так плохо интегрированы в Rails или гем MySQL. В настоящее время я работаю над проектом с Rails 3.0.10 и MySQL2 gem 0.2.13, но, насколько я вижу, даже самые последние Edge Rails и MySQL gem 0.3+ по-прежнему вызывают истерики, когда вы используете SP.

Проблема, которая была и остается в том, что соединение с базой данных теряется после вызова SP.

>> ActiveRecord::Base.connection.execute("CALL stored_proc")
=> #<Mysql::Result:0x103429c90>
>> ActiveRecord::Base.connection.execute("CALL stored_proc")
ActiveRecord::StatementInvalid: Mysql::Error: Commands out of sync; 
[...]
>> ActiveRecord::Base.connection.active?
=> false
>> ActiveRecord::Base.connection.reconnect!
=> nil
>> ActiveRecord::Base.connection.execute("CALL proc01")
=> #<Mysql::Result:0x1034102e0>
>> ActiveRecord::Base.connection.active?
=> false

Это действительно сложная техническая проблема, или Rails это выбор дизайна?

Ответы на вопрос(3)

Ваш ответ на вопрос