Erreur très obscure

Bonjour,

Je rencontre actuellement un bug qu’il m’est très difficile de corriger
faute d’information dessus.

Voici ce que j’ai dans mes logs :

Processing NewsletterController#create (for 192.168.1.90 at 2008-09-05
14:23:11) [POST]
Session ID:
BAh7CToMY3NyZl9pZCIlNDk4OGM4OWVlOGQxOTY2NTI3NTdhNGExMjA0ZTdh
Nzg6D2FjY291bnRfaWRpBiIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6
Rmxhc2g6OkZsYXNoSGFzaHsABjoKQHVzZWR7ACIeYWNjb3VudHNfcGFnaW5h
dGlvbl9zdGF0ZXsJOhNzb3J0X2RpcmVjdGlvbiIIQVNDOgtvZmZzZXRpADoK
bGltaXRpFDoPc29ydF9maWVsZCIHaWQ=–3e53ea50e4c3740d45e5fda67783e4cc592790ed
Parameters:
{“authenticity_token”=>“f4143c953614aab6b2056ebe5f20b21f1c06403e”,
“action”=>“create”, “controller”=>“app/newsletter”, “content”=>“test”,
“name”=>“essai”}
e[4;35;1mNewsletter Columns (0.005000)e[0m e[0mSHOW FIELDS FROM
newsletterse[0m

ArgumentError (wrong number of arguments (2 for 0)):
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/attribute_methods.rb:240:in
send' C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/attribute_methods.rb:240:inmethod_missing’
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/base.rb:2361:in
send' C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/base.rb:2361:inattributes=’
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/base.rb:2360:in
each' C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/base.rb:2360:inattributes=’
C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/base.rb:2130:in
initialize' /app/models/newsletter.rb:3:ininitialize’
/app/controllers/app/newsletter_controller.rb:12:in new' /app/controllers/app/newsletter_controller.rb:12:increate’
[…]

Et voici le code correspondant :

  1. def create
  2. @newsletter = Newsletter.new(:name => params[:name], :content =>
    params[:content])
  3. respond_to do |format|
  4.  if @newsletter.save
    
  5.    format.ext_json { render :json =>
    

@newsletter.to_ext_json(:success => true) }
17. else
18. format.ext_json { render :json =>
@newsletter.to_ext_json(:success => false) }
19. end
20. end
21. end

J’avoue être un peu perdu avec ce “ArgumentError (wrong number of
arguments (2 for 0))” qui ne m’indique pas plus de chose sur l’origine
possible de mon problème… La ligne 12 qui semble incriminée ne me
semble pas incorrecte

Juste un correctif sur le log.

La ligne “/app/models/newsletter.rb:3:in `initialize’” vient de mon
dernier essai de correction via les informations que j’ai pu lire ici :

L’erreur se produit sans aussi

Bonjour,
“controller”=>“app/newsletter”
C’est normal ça ?
D’habitude on voit plutot “controller”=>“newletter”
Ou c’est une architecture voulue ?

Le 5 septembre 2008 14:40, Tony C. [email protected] a
écrit :

Tony C. a écrit :

Juste un correctif sur le log.

La ligne “/app/models/newsletter.rb:3:in `initialize’” vient de mon
dernier essai de correction via les informations que j’ai pu lire ici :

Ce n’est pas recommandé de définir initialize dans ta classe AR::B,
ça peut être risqué voire dangereux.

Normalement tu aurais dû détecter le pb en écrivant un test
unitaire testant l’écriture : Newsletter.new :name => …, …

– Jean-François.


http://twitter.com/underflow_

Le 5 septembre 2008 15:26, Tony C. a écrit :

Pour le test unitaire, effectivement j’aurais du le faire mais celà ne
m’aurait amené qu’a poster ici un peu plus tot car l’erreur était
exactement la meme.

1/ Détecter un bug plus tôt, les avis peuvent diverger mais moi je
trouve ça mieux. Plus tôt un bug est détecté, mieux c’est.

2/ L’erreur est peut être la même mais le contexte n’est pas
le même.

Si ton appli a un bug, potentiellement ça peut être la faute
à Rails, le système d’exploitation, la solution de déploiement
(Mongrel, Phusion Passenger, etc.), les dépendances, le
contrôleur, la vue, le modèle, javascript, les routes, Ruby, le client
web, un problème de configuration, etc.

Si tu sais que ton bug est au niveau du modèle (et quel modèle en
particulier) grâce à tes tests unitaires, ça limite considérablement
le champ d’investigation car tu sais que ce n’est pas la faute à
Mongrel, Chrome ou Prototype.

Avoir moins de paramètres à tenir compte facilite la résolution du
problème, les erreurs à ce niveau là sont normalement moins
obscures.

Enfin, ça évite de perdre de temps sur les fausses pistes du genre,
‘app/newsletter’ c’est normal ?

– Jean-François.


http://twitter.com/underflow_

app/newsletter car il s’agit d’une application d’un projet qui en
comporte d’autres (bref, c’est juste pour ranger un peu ;))

Pour le test unitaire, effectivement j’aurais du le faire mais celà ne
m’aurait amené qu’a poster ici un peu plus tot car l’erreur était
exactement la meme.

Je viens de trouver…L’erreur vient du 3ème champs de ma table
newsletter “send”. J’ai complètement oublié qu’il s’agit d’un mot
réservé.