¿Por qué los procedimientos almacenados aún no son compatibles con Rails (3+)?

Estoy familiarizado con la larga relación de amor-odio entre Ruby on Rails, DB (MS) -drivers y Stored Procedures y he estado desarrollando aplicaciones de Rails desde la versión 2.3.2.

Sin embargo, de vez en cuando surge una situación en la que un SP es simplemente una mejor opción que la combinación de datos en el nivel de aplicación (mucho más lento). Específicamente, la ejecución de informes que combina datos de varias tablas suele ser más adecuada para un SP.

¿Por qué los procedimientos almacenados todavía están tan mal integrados en Rails o la gema de MySQL? Actualmente estoy trabajando en un proyecto con Rails 3.0.10 y MySQL2 gem 0.2.13 pero, por lo que puedo ver, incluso los últimos Edge Rails y MySQL gem 0.3+ aún hacen berrinches cuando usas SPs.

El problema que ha sido, y sigue siendo, es que la conexión de la base de datos se pierde después de llamar a un 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

¿Es este un problema realmente difícil de abordar, técnicamente, o es una opción de diseño de Rails?

Respuestas a la pregunta(3)

Su respuesta a la pregunta