Bounga's Home

dimanche, 7 janvier 2007

Ruby : encapsuler un bloc de code dans un objet

En Ruby, il est possible d'encapsuler un morceau de code dans un objet. Grâce à cela, il vous est possible d'utiliser ce même morceau de code à plusieurs endroits ou encore d'exécuter un morceau de code donné en fonction du contexte courant. En somme, toute la puissance des blocs embarqués dans un objet.

Cette possibilité est offerte par les objets de type Proc. Nous essayerons de voir dans ce billet comment mettre à profit l'utilisation des Proc pour simplifier votre code et le rendre un peu plus dynamique.

Lire la suite...

lundi, 25 décembre 2006

Ruby : utiliser la notion d'infini dans votre code

Il peut arriver dans certains cas que vous ayez besoin d'utiliser la notion d'infini dans votre code.

En Ruby c'est possible ! Il suffit de connaître l'astuce.

Lire la suite...

dimanche, 24 décembre 2006

Ruby : comprendre le chemin de consultation des méthodes

Lorsqu'un objet reçoit un message, l'interpréteur recherche une méthode du même nom définie dans la classe de l'objet, dans l'une de ses super-classes ou dans un module qui a été mixé dans l'une de ces classes (mixin).

Mais savez-vous comment tout cela fonctionne ? Comment sont gérés les cas ambigus tels qu'une méthode définie à la fois dans la classe et le mixin. Quelle méthode sera exécutée par l'objet ?

Comme toujours, comprendre tous les détails du fonctionnement de Ruby vous permettra d'écrire du code plus propre, plus concis mais surtout plus puissant. Nous allons donc voir dans cet article comment fonctionne le chemin de consultation des méthodes.

Lire la suite...

dimanche, 17 décembre 2006

Ruby : yield et les blocs de code

Comme vous le savez sûrement, quand vous appelez une méthode vous pouvez lui fournir un bloc de code qui permet de définir son comportement. Ce bloc de code contient du code Ruby traditionnel. Vous l'avez très certainement déjà utilisé sous l'une des deux formes suivantes :

objet.methode { #bloc de code }	

objet.methode do
  # bloc de code
end
	

Un exemple d'utilisation courante dans la vie d'un programmeur Ruby peut-être le suivant :

(1..10).find_all { |i| i % 3 == 0 } # => [3, 6, 9]
  

Ici, à l'aide de find_all, on parcourt les entiers de 1 à 10 pour trouver ceux qui sont des multiples de 3. Le comportement de find_all est définit par notre bloc de code placé entre les accolades.

Cette construction permet des utilisations très puissantes et cela grâce à yield. Nous allons donc voir dans cet article à quoi sert yield et comment l'utiliser pour rendre vos méthodes plus dynamiques.

Lire la suite...

lundi, 11 décembre 2006

Rails : Gérer des pages 404 et 500 dynamiques

Par défaut, dans Rails, les pages 404 (page inexistante) et 500 (erreur de l'application) sont des pages statiques. Vous ne pouvez donc pas y utiliser vos layouts ou même y insérer du contenu de façon dynamique en fonction de l'erreur qui s'est produite.

Une solution existe, vous permettant de générer une page aussi dynamique que vous le souhaitez. Cette solution passe par l'utilisation de rescue_action_in_public. Voyons comment la mettre en place.

Lire la suite...

samedi, 9 décembre 2006

Ruby : les paramètres de méthode

Savoir manipuler correctement les paramètres de méthode permet de facilement s'approprier une API existante mais aussi d'être en mesure de créer une API élégante, cohérente, compréhensible, puissante et facile à prendre en main. Pour arriver à ce résultat, il faut être conscient des différentes possibilités qui existent et de comment les utiliser. Ce billet va tenter de vous expliquer tous les détails de la création d'une liste d'arguments.

Lire la suite...

mercredi, 6 décembre 2006

HappyCodr: une liste de sites écrits en Ruby on Rails

Un billet rapide pour vous faire découvrir ce site sympa qu'est HappyCodr: Ruby on Rails Showcase.

Le but de ce petit site est de lister les sites écrits en Ruby on Rails. Il vous permet également de publier l'adresse de vos propres sites pour les faire découvrir à tout le monde.

Un moyen sympa de voir les nouveautés qui apparaissent chaque jour sur le toile.

Ca vaut le coup d'oeil.

dimanche, 3 décembre 2006

Ruby: gérer les erreurs à l'aide des exceptions

Lorsqu'on développe à l'aide d'un langage objet, comme Ruby, il est courant d'avoir recourt aux exceptions pour traiter les erreurs. Malheureusement de nombreux développeurs ne sont pas à l'aise avec ce type de traitement et continuent à utiliser les tests conditionnels (if / case / etc) pour traiter les erreurs inattendues alors que ces tests sont prévus pour la logique du code plutôt que pour la gestion des erreurs.

Nous allons donc voir pourquoi et comment les exceptions peuvent simplifier votre code.

Lire la suite...

dimanche, 26 novembre 2006

Ruby : les affections d'objets aux variables

Cela fait maintenant quelques temps que je n'avais pas posté de billet mais le temps m'a manqué avec mon embauche chez webpulser. J'ai décidé de faire une petite série d'articles sur Ruby (on Rails) dans lesquels j'essayerai de vous donner des petites astuces et de vous faire comprendre des techniques avancées utilisées en Ruby et Rails.

Si le temps me le permet, je posterai un billet par semaine en abordant à chaque fois un sujet très précis qui vous permettra de mieux maîtriser votre code et donc d'être plus productif et efficace.

Les thèmes abordés seront très largement inspirés de mes différentes lectures, notamment The Ruby Way, Ruby For Rails et Rails Recipes.

Cette semaine, nous commenceront en douceur puisque le billet sera dédié aux manipulations d'objets et plus particulièrement aux affections de ces objets à des variables.

Lire la suite...

lundi, 30 octobre 2006

Parution dans 01 Informatique

Le numéro 1878 (octobre 2006) de 01 Informatique propose un article sur Ruby on Rails et tente d’y expliquer pourquoi le framework remporte un tel succès.

J’ai l’honneur d’y être cité assez brièvement et je tenais donc à poster un billet à ce propos ;-).

Espérons que cet article accélérera l’entrée de Rails dans les entreprises et que les décideurs commenceront à considérer ce framework comme une vraie solution de remplacement à J2EE et PHP.

vendredi, 6 octobre 2006

MacBook de retour !

Après trois semaines d'attente, j'ai enfin récupéré mon MacBook. Ce n'est finalement pas la carte mère qui a été changée mais juste le bloc radiateur / ventilateur. Tout semble fonctionner à merveille maintenant, je vais enfin pouvoir me pencher à nouveau sur mes différents projets et profiter de cette superbe machine :)

mardi, 12 septembre 2006

MacBook en réparation

Après plusieurs arrêts intempestifs de mon nouveau (2 mois) MacBook et la lecture de plusieurs articles qui signalent le problème chez de nombreux utilisateurs de cette machine, j'ai décidé de l'amener en réparation dans un Apple Center. Le problème est visiblement connu et touche quasiment toutes les machines sur le marché. La garantie va donc jouer sans problème.

Lire la suite...

mardi, 5 septembre 2006

Déployer vos applications Rails avec Apache, Mongrel et Capistrano

J'étais sur le point d'écrire une documentation sur la méthode à suivre pour mettre en place une configuration de type Apache en front (avec proxy blancer), un cluster de serveurs Mongrel et Capistrano pour automatiser le déployement puis j'ai découvert un superbe article qui explique toute la procédure à suivre pour mettre en place ce type d'architecture.

Lire la suite...

lundi, 4 septembre 2006

Top applications sous Mac OS X

Cela fait maintenant deux mois que je suis passé à Mac OS X, j'ai donc eu le temps de me faire la main, de découvrir et tester les applications disponibles sur cette plate-forme. Je vous propose donc un petit billet pour vous présenter les quelques applications qui me servent le plus régulièrement et les avantages que je leurs ai trouvé.

Lire la suite...

jeudi, 31 août 2006

Intégration officielle du core-team de Spread

Je fais partie depuis mardi soir de l'équipe de développement officielle du projet Spread.

Spread un CMS écrit en Ruby on Rails qui regroupe de nombreux concepts intéressants tels que les bibliothèques multimédias, les insertions d'éléments multimédias ajaxifiés, une mise en page souple, une gestion de l'arborescence ajaxifiée et une aide contextuelle permanente.

Spread rend la gestion de contenu simple et agréable en profitant des possibilités ouvertes par Ajax et Ruby on Rails. Il répond aux besoins essentiels des créateurs de contenu sans compétences techniques tels que les PME et associations.

Nous allons maintenant faire en sorte que la première version publique de Spread sorte au plus vite !

Vous avez un Mac récent et iWeb ne veut pas fonctionner, une solution existe !

En voulant tester les diverses applications livrées avec mon Mac j'ai été confronté à un problème. J'ai lancé iWeb et j'ai constaté que l'ensemble des fonctionnalités disponibles dans les menus étaient grisées. Impossible de faire quoi que ce soit, même pas d'ajouter une page. Pas idéal pour créer des pages web :-)

Lire la suite...

dimanche, 27 août 2006

RoR : De l'utilisation de has_and_belongs_to_many (un formulaire pour plusieurs tables)

Il est fréquent de devoir associer des enregistrements d'une table à un ou plusieurs enregistrements d'une autre table. En modélisation SQL, c'est ce qu'on appel une relation N <=> N. En Ruby on Rails, on décrit cela dans les modèles à l'aide de has_and_belongs_to_many. Je vais ici tenter de vous expliquer comment mettre en oeuvre une telle relation dans un seul et unique formulaire qui sera capable de gérer tous les aspects liés à un enregistrement en une seule opération.

Lire la suite...

samedi, 26 août 2006

Tester efficacement les redirections en Ruby on Rails

Ruby on Rails permet de mettre facilement en place des tests fonctionnels qui nous permetttent de savoir si nos controlleurs se comportent comme on le souhaite.

Un test fréquent est de voir si, dans certaines conditions, notre controlleur nous redirige bien vers une page donnée. Malheureusement la méthode assert_redirected_to qui nous permet de faire cela ne fonctionne pas comme on pourrait s'y attendre.

Lire la suite...

vendredi, 25 août 2006

Un aide-mémoire des One-Liners Ruby

Pour ceux qui ne le savent pas, les One-Liners sont des morceaux de code courts, éxecutables depuis la console qui permettent de remplir des tâches utiles et répétives de façon automatisée. Les exemples les plus répandus sont bien souvent écrits en Perl mais les équivalents existent en Ruby et sont tout aussi efficaces. J'ai donc décidé de mettre à disposition un document PDF qui reprend les snippets les plus utilisés pour le plus grand plaisir de tous les Rubyistes ;-)

Lire la suite...

samedi, 5 août 2006

Des snippets Ruby qui facilitent la vie

Certains sites ne cessent de nous apporter des petites merveilles au fil des jours, c'est le cas de http://www.bigbold.com, le blog d'une société de développement Ruby on Rails anglaise. Deux morceaux de code très intéressants y ont été publiés récemment.

Le premier est un helper pour Rails qui permet de traiter plus falicement les affichages des flashs pour les niveaux notice, warning et error. Cet helper supporte également la gestion des erreurs ActiveRecord::Errors.

Le deuxième permet de mettre facilement en place un démon pour n'importe laquelle de vos application écrite en Ruby. Vous pourrez donc grâce au module proposé, créer votre service, le démarrer et le stopper facilement et proprement.

- page 2 de 7 -