[Rails Fr] Problème avec attachement_fu

Salut à tous,

Je suis en train de train de travailler sur un projet dans lequel je
souhaites uploader des images.

Je me suis servi de ce tutorial :
http://www.clarkware.com/cgi/blosxom/2007/02/24 que je trouve très bien
fait, mais malheureusement ça ne fonctionne pas bien.

Donc mon problème est le suivant : quand j’upload une image j’ai
l’erreur
firefox suivante (ce n’est pas une erreur rails) :
We’re sorry, but something went wrong.

We’ve been notified about this issue and we’ll take a look at it
shortly.
Si ensuite je retourne à la page affichant les images d’une personne,
l’image apparait tout de même, mais le thumbnail ne s’affiche pas.
En effet, lorsque je regarde dans ma base, la colonne thumbnail est
NULL.
Donc tout se passe bien mais à priori le plantage survient au moment de
la
création du thumbnail

J’ai testé différentes choses mais j’ai toujours le même problème que je
ne
comprends pas et quand je regarde dans le log (je vous passerais le
message
entier) j’ai ça (si ça peut vous aider) :

TypeError (singleton can’t be dumped):
/opt/local/lib/ruby/1.8/pstore.rb:349:in dump' /opt/local/lib/ruby/1.8/pstore.rb:349:in dump’
/opt/local/lib/ruby/1.8/pstore.rb:330:in transaction' /opt/local/lib/ruby/1.8/cgi/session/pstore.rb:81:in update’
/opt/local/lib/ruby/1.8/cgi/session/pstore.rb:88:in close' /opt/local/lib/ruby/1.8/cgi/session.rb:324:in close’
blablabla

Rendering
/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/templates/rescues/layout.rhtml
(500 Internal Error)
singleton can’t be dumped
/opt/local/lib/ruby/1.8/pstore.rb:349:in dump' /opt/local/lib/ruby/1.8/pstore.rb:349:in dump’
/opt/local/lib/ruby/1.8/pstore.rb:330:in transaction' /opt/local/lib/ruby/1.8/cgi/session/pstore.rb:81:in update’
/opt/local/lib/ruby/1.8/cgi/session/pstore.rb:88:in `close’
blablabla

Merci d’avance à qui saura m’aider,

Romain

Je n’en suis pas certain, il faudrais jeter un oeil au code source,
mais:

singleton can’t be dumped

Ca donne l’impression qu’un objet qui inclu “singleton” est
sérialisé.Hors si je me souviens bien la sérialisation “par défaut” ne permet
pas de sérialiser un bojet singleton.

Bon, après comme j’ai dit plus haut il faudrais jeter un oeil au code
source pour vérifier mes dire :-p. Dès que j’ai 5 minutes j’essaie de
voir ça, mais ça peut peut-être te donenr une piste.


Yannick “Pouype” Francois
http://www.typouype.org
http://www.rubyfrance.org

Bon, après comme j’ai dit plus haut il faudrais jeter un oeil au code
source pour vérifier mes dire :-p. Dès que j’ai 5 minutes j’essaie de
voir ça, mais ça peut peut-être te donenr une piste.

Bon en fait c’etais plus rapide que je ne pensais. L’erreur vient bien
de
là:
(pstore.rb ligne 349)

This method is just a wrapped around Marshal.dump.

def dump(table) # :nodoc:
Marshal::dump(table)
end

Marshal ne permet pas de sérialiser certain type d’objet:

"
Some objects cannot be dumped: if the objects to be dumped include
bindings, procedure or method objects, instances of class IO, or
singleton objects, a TypeError will be raised. If your class has
special serialization needs (for example, if you want to serialize in
some specific format), or if it contains objects that would otherwise
not be serializable, you can implement your own serialization strategy
by defining two methods, _dump and _load: The instance method _dump
should return a String object containing all the information necessary
to reconstitute objects of this class and all referenced objects up to
a maximum depth given as an integer parameter (a value of -1 implies
that you should disable depth checking). The class method _load should
take a String and return an object of this class.
"

Mais tu peux très bien te créer un sérialiser qui le permet. Ou bien,
si tu connais l’objet que tu souhaite sérialiser, peut-être, le
modifier pour ne pas utiliser Singleton ?


Yannick F.
http://www.typouype.org
http://www.rubyfrance.org