jd a écrit : > Bonjour. Pour donner en quelques mots le contexte, je me suis pris de > faire un plugin (première tentative) pour doter ActiveRecord d'une > fonctionnalité de sérialisation dans le genre de « > serialize :un_attribut[, SaClasse] » mais utilisant Marshal au lieu et > place de YAML, donc quelque chose du genre : « marshalize :un_attribut > [, SaClasse] » (dans un model). > > Il existe une sorte de hooker interne par le module > ActiveRecord::Serialization pour créer ce genre de chose, mais je me > suis dit que c'était une bonne occasion d'étudier les entrailles > d'ActiveRecord, donc de s'en passer pour l'exercice. > > Après un script/generate plugin marshalize, et après avoir généré un > scaffold pour une table de test birds / modèle Bird avec un attribut > songs (type text), mon code ressemble à ceci : > - models/bird.rb : http://pastebin.com/f6acb09db > - vendor/plugins/marshalize : > - init.rb : http://pastebin.com/f3a26d8ad > - lib/marshalize.rb : http://pastebin.com/f59317de3 > > Sur le papier, il me semble avoir suivi à la lettre les indications de > méta-programmation habituelles pour la création d'un plugin, mais > quelle que soit la variante, je bute sur la même erreur, du type : > /opt/ruby1.9/lib/ruby1.9.1/gems/1.9.1/gems/activerecord-2.3.2/lib/ > active_record/base.rb:1964:in `method_missing': undefined method > `marshalize' for #<Class:0xab925d0> (NoMethodError) > > En gros, il me semble que le code du plugin n'ai pas exécuté, ce qui > expliquerait que le mixin n'a pas eu lieu et que la méthode n'est pas > disponible (la ligne 1964 correspond à un appel à super pour le > method_missing d'ActiveRecord, marshalize ne correspondant à aucun > DynamicFinder ou autre). Cela dit, le #<Class:...> m'intringue, je > m'attendais à du #<Bird:...>. Bref, je suis un peu perdu, et préfère > demander conseil en même temps que je recherche la source de mon > erreur ;) > > Aurais-je raté une étape essentielle ? Tu t'es basé sur le code d'un plugin existant ou pas ?
Car j'ai pas l'impression que ca soit la bonne manière de faire pour ajouter ta méthode. Rails est hélas une catastrophe par rapport à Ruby sur l'inclusion de mixins typiquement. -- Cyril Mougel http://blog.shingara.fr/ --~--~---------~--~----~------------~-------~--~----~ Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse [email protected] Pour résilier votre abonnement envoyez un e-mail à l'adresse [email protected] -~----------~----~----~----~------~----~------~--~---
