lundi, 21 décembre 2009
Par Bounga le lundi, 21 décembre 2009, 15:19 - Trucs et astuces
Après bien longtemps sans le moindre signe de vie, voici un petit billet rapide pour vous faire savoir que je suis toujours présent et que je continu à développer en Ruby !
Vous est-il déjà arrivé d'avoir besoin, en Rails, d'un modèle qui se comporte comme un modèle ActiveRecord mais qui n'en ai pas un ? Typiquement, un modèle auquel aucune table n'est associé en base.
Le cas le plus simple où l'on peut avoir besoin de ce genre de classe serait par exemple un modèle qui gère les prises de contact (formulaire de contact) depuis le site.
Votre formulaire de contact doit valider les infos qui lui sont passées (est-ce que les champs obligatoires sont remplis, est-ce que l'email semble valide, …) avant d'envoyer par mail cette prise de contact à l'admin mais vous n'avez absolument pas besoin d'enregister cette prise de contact en base et donc aucune envie de créer une table dédiée pour simplement satisfaire ActiveRecord !
Il existe des plugins qui font ça me direz-vous. Certes oui, c'est vrai. Mais j'aime comprendre comment fonctionne les choses et j'aime autant me passer d'un plugin pour une chose qui me paraît aussi simple.
Lire la suite...
lundi, 22 juin 2009
Par Bounga le lundi, 22 juin 2009, 12:16 - Documentations
Beaucoup d'entre vous connaissent Ruby grâce à son fort potentiel Web au travers du framework Ruby on Rails. Mais Ruby excelle dans de nombreux domaines et s'avère particulièrement efficace dans l'écriture de DSL (Domain Specific Language).
Les DSL existent depuis toujours et vous les utilisez peut-être même sans vous en rendre compte. C'est un concept très à la mode ces derniers temps parce qu'avec les langages modernes, il n'a jamais été aussi facile d'en développer un.
Le but d'un DSL (du moins en Ruby) est de proposer à l'utilisateur un langage simple qui va lui permettre d'accomplir des tâches ciblées. L'utilisateur écriera du Ruby sans même s'en rendre compte.
Nous allons voir dans ce billet comment tirer parti de ces possibilités et créer notre propre DSL.
Lire la suite...
une annexe
mardi, 19 mai 2009
Par Bounga le mardi, 19 mai 2009, 10:08 - Les liens indispensables
Un poste rapide pour vous faire part d'une lecture que j'ai faite ce matin, un site dédié au comparatif de deux excellents frameworks JavaScript. Ce site / article a été rédigé par Aaron Newton de Clientcide. Autant dire que c'est loin d'être un débutant qui en est à l'origine ...
Lire la suite...
vendredi, 24 avril 2009
Par Bounga le vendredi, 24 avril 2009, 12:12 - Les liens indispensables
Avec l'intégration de Rack dans Ruby on Rails, de nouveaux outils commencent à voir le jour.
L'un d'eux est particulièrement remarquable et va faciliter la vie de nombreux développeurs.
Rack::Bug est un middleware qui va vous permettre d'inspecter dans le détail vos requêtes, directement depuis votre navigateur, sur la page en cours de développement.
Lire la suite...
jeudi, 12 mars 2009
Par Bounga le jeudi, 12 mars 2009, 12:43 - Trucs et astuces
Un petit post rapide qui pourra en aider plus d'un je pense.
J'ai voulu utiliser la fonctionnalité de synchronisation des contacts avec GMail. Cette fonctionnalité est incluse dans l'application "Carnet d'adresses" de Mac OS X (10.5) si vous posséder un iPod ou un iPhone (ou que vous ayez bidouiller pour l'activer en modifiant les fichiers de configuration .plist).
Malheureusement pour de nombreuses personnes, même si la configuration se passe sans souci, aucune synchronisation ne se fait.
Une solution radicale existe en passant par le terminal :
/System/Library/PrivateFrameworks/GoogleContactSync.framework/Versions/A/Resources/gconsync --sync com.google.ContactSync --syncmode fast
Et voilà, après quelques secondes, tous vos contacts sont synchronisés.
Si vous voulez forcer Gmail à avoir raison en cas de conflit, vous pouvez utiliser le mode de synchronisation "pullthetruth"
/System/Library/PrivateFrameworks/GoogleContactSync.framework/Versions/A/Resources/gconsync --sync com.google.ContactSync --syncmode pullthetruth
Pour forcer le rafraîchissement de vos contact, vous pouvez utiliser le mode de synchronisation "refresh"
/System/Library/PrivateFrameworks/GoogleContactSync.framework/Versions/A/Resources/gconsync --sync com.google.ContactSync --syncmode refresh
vendredi, 6 février 2009
Par Bounga le vendredi, 6 février 2009, 11:11 - Documentations
J'ai très récemment décidé de switcher du couple Apache / Mongrel à Nginx / Thin pour mes applis Rails, les différences de performance sont visibles à l'oeil nu et les ressources utilisées (mémoire et CPU) ont été très largement réduites. Un vrai bonheur !
Sur ma lancée, j'ai décidé de migrer également mon blog pour pouvoir me séparer d'Apache. Mon blog, comme vous le savez peut-être, tourne sous DotClear en mode PATH_INFO ce qui permet d'avoir des URLs plus élégantes.
J'ai donc voulu partager avec vous mon expérience et vous propose une documentation sur la mise en place d'un DotClear en mode PATH_INFO avec Nginx.
Voici ma petite recette qui semble très bien fonctionner (surtout depuis la ré-écriture complète de la config suite aux problèmes liés à l'espace d'administration).
Lire la suite...
vendredi, 30 janvier 2009
Par Bounga le vendredi, 30 janvier 2009, 16:27 - Documentations
Une nouvelle fonctionnalité très intéressante vient d'être introduite dans Rails Edge et fera son chemin dans Rails 2.3 à priori. Ce sont les Templates.
Ces templates permettent, via du code Ruby, de créer des gabarits de projet qui permettent d'automatiser la phase de personnalisation de votre projet Rails quasi-obligatoire avant d'écrire la moindre ligne de code.
Les Templates sont donc des fichiers Ruby écrit à l'aide d'un DSL qui permettent d'ajouter dynamiquement des plugins, gems, initializers ou encore de modifier des fichiers existants dans votre projet Rails nouvellement créé.
Lire la suite...
Par Bounga le vendredi, 30 janvier 2009, 15:26 - Développement
Mini-billet pour vous annoncer que j'ai publié la version 2.0.0 de acts_as_nice_url qui, pour mémoire, permet de générer facilement des URL significatives dans vos projets Rails.
Cette release marque un tournant important puisque le plugin se base maintenant sur la méthode parameterize introduite dans Rails 2.2.
Pour ceux qui souhaitent continuer à utiliser ce plugin avec d'anciennes versions de Rails, il faudra se tourner vers la version 1.0.0 (qui elle fait plus ou moins la travail de la méthode parameterize qui n'existait pas avant).
Le code est disponible, comme à l'habitude, sur BitBucket.
mercredi, 14 janvier 2009
Par Bounga le mercredi, 14 janvier 2009, 23:04 - Développement
MouseTracker est une librairie Javascript qui permet de créer des fantômes pour la souris. Ces fantômes suivront à la trace votre souris en reproduisant ses mouvements exacts. Je vous l'accorde, ce n'est pas la lib la plus utile du monde mais elle a pour mérite de m'avoir permis de découvrir MooTools
Cette librairie nécessite l'utilisation de MooTools >= 1.2.
Lire la suite...
vendredi, 9 janvier 2009
Par Bounga le vendredi, 9 janvier 2009, 10:56 - Geek attitude
D'après le LightHouse de Rails, la version 2.3 de Rails devrait sortir le 31 janvier.
Lire la suite...
lundi, 5 janvier 2009
Par Bounga le lundi, 5 janvier 2009, 17:01 - Documentations
Vous avez, ces derniers mois, voté pour les sujets d'articles qui vous intéressent le plus. Nous pouvons maintenant clore ce sondage et publier les résultats :
- 31.58 % Ruby : création d'un DSL (Domain Specific Language)
- 31.58 % Ruby : Programmation système
- 10.53 % Ruby on Rails : astuces RJS
- 10.53 % Ruby on Rails : découverte des helpers méconnus
- 5.26 % Ruby on Rails : REST
- 5.26 % Ruby on Rails : Astuces script/console
- 5.26 % Javascript : Découverte de Prototype et Scriptaculous
- 0 % Ruby : l'objet self et les contextes
- 0 % Ruby : Utilisation de Private / Protected / Public
- 0 % Ruby : Ajouter les modules Enumerable et Comparable à vos classes
- 0 % Ruby on Rails : déploiement avec Capistrano et Mercurial
- 0 % Mac OS X : Intégration de RSpec dans Growl
Les prochains articles seront donc, dans l'ordre :
- Ruby : création d'un DSL (Domain Specific Language)
- Ruby : Programmation système
- Ruby on Rails : astuces RJS
- Ruby on Rails : découverte des helpers méconnus
- Ruby on Rails : REST
- Ruby on Rails : Astuces script/console
- Javascript : Découverte de Prototype et Scriptaculous
Je laisse donc tomber les articles qui n'ont obtenus aucun vote (je les garde tout de même sous le bras, on ne sait jamais) et je vais me concentrer sur la rédaction des articles que vous avez sélectionnés. J'essayerai de les publier à intervalles réguliers, soit un par semaine, le lundi.
Je vous donne donc rendez-vous lundi prochain avec l'article sur la création d'un DSL en Ruby !
Par Bounga le lundi, 5 janvier 2009, 12:56 - Geek attitude
L'annonce a fait du bruit pendant ces vacances de Noël, moi qui commençait à découvrir Merb et prendre goût à ces aspects qui le caractérisent, j'ai accueilli la nouvelle à bras ouverts.
Les équipes de développement de Rails et de Merb se sont rapprochés et veulent unir leurs efforts pour fusionner les deux projets et ainsi tirer le meilleur de chacun.
Personnellement, connaissant les caractères des principaux acteurs des deux projets, je n'aurai jamais crû ça possible ! Mais il faut croire que tout le monde a réussi à trouver un terrain d'entente et je peux vous assurer que cela ne laisse présager que de bonnes choses.
En quoi les choses vont changer ? Je vais vous l'expliquer.
Lire la suite...
lundi, 8 décembre 2008
Par Bounga le lundi, 8 décembre 2008, 16:47 - Développement
J'ai eu récemment besoin d'utiliser les sliders scriptaculous de manière massive. Il s'avére qu'en utilisant du javascript et de l'HTML pur sans passer par des helpers, ça devient très vite fastidieux à mettre en place mais surtout à maintenir.
J'ai donc voulu me tourner vers le plugin de Thomas Fuchs mais je me suis vite rendu compte qu'il n'était plus maintenu et qu'il ne chargeait même pas dans Rails 2.x.
Pour me simplifier la vie, j'ai donc décidé de forker le projet pour le mettre à jour et l'améliorer par la même occasion.
Lire la suite...
Par Bounga le lundi, 8 décembre 2008, 14:03 - Développement
Je viens tout juste de releaser Flash Helper 1.0.2
Le plugin Flash Helper est maintenant disponible en Gem ce qui permet de l'installer une fois pour toute sur le système et de pouvoir ensuite l'utiliser sans avoir à l'ajouter dans vendor/plugins pour chaque projet.
Lire la suite...
mardi, 2 décembre 2008
Par Bounga le mardi, 2 décembre 2008, 14:58 - Geek attitude
L'équipe de BitBucket vient de mettre en place un miroir du dépôt officiel de Ruby on Rails. Il est donc possible dès maintenant de travailler sur les sources de Rails à l'aide de votre SCM préféré, j'ai nommé Mercurial ou Hg pour les intimes.
Lire la suite...
lundi, 24 novembre 2008
Par Bounga le lundi, 24 novembre 2008, 10:08 - Développement
Suite à mon ticket qui proposait un patch d'ajout du support de Mercurial à script/plugin, une discussion s'est ouverte proposant de développer un gestionnaire de SCM qui aurait pour but d'être facilement extensible par un système de plugin ce qui permettrait à tout un chacun d'ajouter très facilement le support pour son SCM préféré.
A terme, nous aurons donc une API extensible qui permettra de gérer les plugins, quelques soit le SCM utilisé pour le développement / hébergement. Ce gestionnaire de plugin devrait être extensible par système de plugins et de gems. Ce gestionnaire fonctionnera pour tout le système. Vous donc n'aurez pas à ré-installer la gestion de votre SCM pour chaque projet.
On pourra donc installer des plugins via, par exemple, Git, Mercurial, SVN, Bazaar, …
Il sera possible de gérer les versions des plugins qu'on installe, chose qui manque cruellement à l'heure actuelle.
Un ticket à été ouvert sur le LH de rails.
Je pense aider Daniel Schierbeck à écrire ce gestionnaire et me pencherai également sur l'écriture du plugin de gestion de Mercurial.
Le développement en cours est visible sur GitHub.
Toutes les idées sont bienvenues !
Par Bounga le lundi, 24 novembre 2008, 09:26 - Geek attitude
Rails 2.2 est sortie. Cette release amène quelques nouveautés très intéressantes. Je pense notamment au système d'i18n intégré mais aussi à l'ajout du support des Hash dans les conditions appelant les tables de jointures.
Bref je vous conseille de jeter un oeil aux release notes et au billet sur le blog.
Bon amusement.
mercredi, 12 novembre 2008
Par Bounga le mercredi, 12 novembre 2008, 08:09 - Développement
Un tout petit billet pour une toute petite nouvelle, un patch que j'ai proposé à Sven Fuch apportant quelques corrections mineures au projet de traduction a été accepté.
Ce projet de traduction devrait faire partie intégrante de Rails 2.2.
Voici le patch.
jeudi, 30 octobre 2008
Par Bounga le jeudi, 30 octobre 2008, 19:19 - Documentations
J'ai mis en ligne un petit document (en anglais) qui explique pas à pas comment créer son premier patch pour rails et tenter de le faire intégrer.
Vous pourrez le trouver ici.
Bonne lecture.
mercredi, 29 octobre 2008
Par Bounga le mercredi, 29 octobre 2008, 10:33 - Développement
Comme vous le savez, mon SCM préféré est Hg mais ce dernier n'est malheureusement pas supporté par l'utilitaire script/plugin de Rails.
A ce jour, il n'y a donc qu'un seul moyen d'installer un plugin Rails dont le repository utilise
$ cd vendor/plugins
$ hg clone http://www.host.com/hg_repo
Le but du patch que j'ai proposé est de permettre d'utiliser directement script/plugin pour simplifier les choses :
$ script/plugin install http://www.host.com/hg_repo
Lire la suite...