Почему хранимые процедуры до сих пор не поддерживаются в 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?

10
задан ChrisDekker 25 July 2012 в 19:30
поделиться