lundi, septembre 14, 2009

Zlib::BufError et repository de gems down

J'ai aidé aujourd'hui quelqu'un qui n'arrivait pas à installer watir sous windows, pourtant il faisait tout comme il faut ?! (install ruby one click installer + "gem install watir")
Il avait toujours le message d'erreur suivant: Zlib::BufError buffer error
En essayant sur ma machine, qui avait déjà watir installé, je me suis rendu compte que j'avais le même problème!
C:\>gem update watir --debug
Exception `NameError' at c:/ruby/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:161 - uninitialized constant Gem::Commands::UpdateCommand
Exception `Gem::LoadError' at c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:827 - Could not find RubyGem test-unit (>= 0)

Updating installed gems
Exception `Gem::LoadError' at c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:827 - RubyGem version error: sources(0.0.1 not > 0.0.1)

Exception `Zlib::BufError' at c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:578 - buffer error
ERROR:  While executing gem ... (Zlib::BufError)
    buffer error
        c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:578:in `read'
        c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:578:in `gunzip'
        c:/ruby/lib/ruby/site_ruby/1.8/rubygems/remote_fetcher.rb:165:in `fetch_path'
        c:/ruby/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb:219:in `load_specs'
        c:/ruby/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb:192:in `list'
        c:/ruby/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb:188:in `each'
        c:/ruby/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb:188:in `list'
        c:/ruby/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb:123:in `find_matching'
        c:/ruby/lib/ruby/site_ruby/1.8/rubygems/commands/update_command.rb:169:in `which_to_update'
        c:/ruby/lib/ruby/site_ruby/1.8/rubygems/commands/update_command.rb:161:in `each'
        c:/ruby/lib/ruby/site_ruby/1.8/rubygems/commands/update_command.rb:161:in `which_to_update'
        c:/ruby/lib/ruby/site_ruby/1.8/rubygems/commands/update_command.rb:75:in `execute'
        c:/ruby/lib/ruby/site_ruby/1.8/rubygems/command.rb:257:in `invoke'
        c:/ruby/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:132:in `process_args'
        c:/ruby/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:102:in `run'
        c:/ruby/lib/ruby/site_ruby/1.8/rubygems/gem_runner.rb:58:in `run'
        c:/ruby/bin/gem:21
Je me suis douté que le serveur de gems était down même si le message d'erreur n'est pas clair du tout!
J'ai trouvé une astuce! On peut transformer sa machine en serveur de gem (mirroir) en lançant la commande:
gem server
On peut voir le résultat aux addresses suivantes:
L'autre personne a juste eu à faire:
gem install watir --source http://xxx.xxx.xxx.xxx:8808/
où xxx.xxx.xxx.xxx est l'ip de la machine où "gem server" a été lancé
Rem: je n'ai pas trouvé l'url que rubygems utilise mais je pense qu'il s'agit de http://gems.rubyforge.org/ et effectivement http://gems.rubyforge.org/gems renvoie une 403 forbidden :(
Technorati tags:

mardi, septembre 08, 2009

Javascript: Orienté Objet

J'ai enfin trouver le temps de regarder comment "bien" programmer en Javascript :)

Je ne suis pas sûr que ça me serve beaucoup, je suis plutôt un "script kiddies" du javascript. Générallement je récupère une lib, je fais quelques lignes de javascript pour faire un petit effet (fade...) et c'est tout!

Mais par curiosité personnelle, je voulais voir comment Javascript gérait l'héritage etc...

En fait c'est assez simple, il suffit de définir une classe et d'utiliser le mot clef "prototype" pour dire que la classe fille hérite de la classe mère.
Je trouve que le concept d'héritage en Javascript ressemble beaucoup à ce qui se passe en ruby avec le mot clef "include".

En tout cas je vous conseille le tutorial que j'ai fait et que je trouve très bien:

Technorati tags: