Buenas!

A ver si me pueden dar una manito con esto. Estoy intentando utilizar el
plugin Interlock [1] para cachear objetos en MemCache combinado con un
modelo de datos basado en Single-Table Inheritance (STI).

*El modelo* es bastante simple:
  Post  < ActiveRecord
  MicroblogPost < Post
  ImagePost < Post

*Interlock* provee "Caching finders", que hace uso del method
overloading de Ruby sobre los "find" de ActiveRecord. Por lo tanto si le
pasamos un entero o un set, Interlock automáticamente los almacenará en
MemCache para futuros accesos.

*El problema* es cuando intento utilizar un modelo que hereda de otro.
Por ejemplo.

>> Post.find(1000,2000,3000)

ArgumentError: undefined class/module MicroblogPost
        from 
/var/lib/gems/1.8/gems/memcache-client-1.5.0/lib/memcache.rb:262:in `load'
        from 
/var/lib/gems/1.8/gems/memcache-client-1.5.0/lib/memcache.rb:262:in 
`get_multi'
        from 
/var/lib/gems/1.8/gems/memcache-client-1.5.0/lib/memcache.rb:261:in `each'


Sin embargo si hago un "MicroblogPost.find(1000)" funciona 
correctamente, e incluso a partir de ese momento funcionaría tambien 
"Post.find(1000)"

Con el Post.find(2000) volvería a fallar porque puede ser un ImagePost y 
vuelta a empezar.

He leído [2] que probablemente tenga que hacer un "require_dependency 
'post'" para volver a cargar el modelo en cada request, pero el tema es 
que tampoco funciona en mi caso.

Lo único que he encontrado útil ha sido un post [3] que implementa un 
before_filter para precargar los modelos que heredan de Post (en mi 
caso) antes de cada request, pero como bien dice el mismo autor, no deja 
de ser un hack.



Comentarios, ideas, experiencias esotéricas similares? :)


Gracias de antemano,
Mauro.

:wq

[1] http://blog.evanweaver.com/files/doc/fauna/interlock/files/README.html
[2] http://wiki.rubyonrails.org/rails/pages/singletableinheritance
[3]
http://www.philsergi.com/2007/06/rails-memcached-undefinded-classmodule.html
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a