Como prueba, intentá poner al ppio del archivo post.rb (el archivo donde se
define la superclase), un require para cada subclase... si eso anda, el tema
es que no se está disparando el mecanismo de Rails que usa constant_missing
para no necesitar precargar todas las clases y cargarlas a demanda...

Contanos si cambió algo...

Nacho

2008/4/21 Mauro Pompilio <[EMAIL PROTECTED]>:

> 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
>
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a