2013/5/2 Nicolas Ledez <[email protected]>

> Bonjour,
>
> J'essaye de faire un serveur Sinatra avec un initialize personnalisé :
> class TrafficLightPiServer < Sinatra::Base
>
>   def initialize(line_mapping)
>
> Tout marche bien dans mes specs. Par contre pas moyen de le démarrer 
> "normalement".
>
> s = TrafficLightPiServer.new(line_mapping)
> s.run!
>
> undefined method `run!' for #<Sinatra::Wrapper:0x007f8d2b87fb08>
>
> Sinon :
> s = TrafficLightPiServer.new(line_mapping)
> TrafficLightPiServer.run!
>
> Alors ça boot, mais ça ne marche pas longtemps :
>
> Internal server error
>
> >> Listening on localhost:4567, CTRL+C to stop
> !! Unexpected error while processing request: wrong number of arguments (0 
> for 1)
>
>
> Ce qui est logique. Une idée de comment faire ?
>
>
> Le code est ici :
>
> https://github.com/nledez/traffic_light_pi_server/blob/master/lib/traffic_light_pi_server.rb
>
> Et les specs ici :
>
> https://github.com/nledez/traffic_light_pi_server/blob/master/spec/lib/traffic_light_pi_server_spec.rb
>
>
Cela ne marche pas tout simplement car c'est une mauvaise idée de
surchargés l'initialize.

https://github.com/sinatra/sinatra/blob/master/lib/sinatra/base.rb#L858

Comme tu vois ici, il est déjà défini avec un argument que tu changes
allégrement.

Donc si tu veux continuer dans cette mauvaise idée de surcharger new,
utilise un deuxieme arg pour définir ton parametre.

Sinon la solution officiel est d'utiliser les set de configuration.

-- 
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]
--- 
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes 
Railsfrance.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, 
envoyez un e-mail à l'adresse [email protected].
Pour plus d'options, visitez le site https://groups.google.com/groups/opt_out .


Répondre à