Initialiser une application avec des données nécessaires à son bon fonctionnement n'était pas vraiment aidée par rails et ses normes : faut il créer un script distinct ? utiliser un jeu de fixtures ? un controlleur de configuration de l'application ? une migration ?
# · Lire toute l'histoire · Aucun commentaireLa page de présentation de la keynote de ce mois de janvier (iPad) contient quelques surprises concernant la photo de Steve Jobs.

Ayant besoin dans un projet de créer des archives zip depuis un code ruby, j'ai cherché dans un premier temps du côté de gems ou librairies purement ruby pour faire cela. Je n'ai pu trouver que quelques librairies dont certains semblent obsolètes ou non maintenues.
Décidant tout de même de tester une de ces librairies (rubyzip), je me suis posé la question des performances de ces librairies en comparaison d'une implémentation en C. Etant donné que je n'ai que l'archivage d'un répertoire à effectuer, sans contrôle d'erreur fin, pourquoi ne pas créer l'archive en passant par un bon vieux binaire zip disponible de facto sur pratiquement tous les systèmes.
# · Lire toute l'histoire · 2 commentairesAyant parlé avant d'une librairie ruby pour flickr, je me suis lancé dans un petit test de cette librairie en l'incorporant à une application ruby on rails. L'idée est simple : nous avons des utilisateurs qui peuvent avoir un compte flickr. Les accès à ce compte seront stockés dans la base de données pour donner à l'utilisateur un accès à ses données flickr à tout moment sans qu'il ne doive se ré-authentifier sur flickr.
# · Lire toute l'histoire · Aucun commentaireL'Objective-C pouvant être percu comme une imposante librairie tournant au dessus du C/C++, il ne semble pas impossible pour ce langage compilé de fournir des mécanismes de réflexion. Une des possibilités appréciée dans l'intercession est l'ajout de fonctions au runtime, en fonction du contexte rencontré par le programme lors de son exécution. En ruby, ceci est relativement aisé avec method_missing, il existe un mécanisme similaire en Objective-C.
Le côté réflection de l'Objective-C est fourni à travers la class NSObject, classe racine de toutes les autres classes. La lecture de la documentation de cette classe peut fournir des éléments intéressants, comme les méthodes permettant de déterminer la classe ainsi que la classe parente : class et superclass.
# · Lire toute l'histoire · Aucun commentaireEncore une librairie cliente pour flickr, mais enfin une implémentation vraiment différente cette fois-ci : aucun des appels ou presque n'est implémenté dans la librairie, tout est créé dynamiquement.
Dans un premier temps, il ne faut pas oublier 2 choses : flickr offre une API très bien construite permettant ce genre de chose et ruby de part son dynamisme permet de l'utiliser pleinement.
# · Lire toute l'histoire · Aucun commentaireAyant besoin d'une petite console effectuant des appels sur un webservice, je me suis lancé à la découverte de readline. Cependant, la documentation officielle est totalement innexistante.
Après quelques recherches, j'ai pu trouver un tutoriel donnant les principales fonctions de readline.
L'idée derrière readline est simple : fournir une librairie permettant simplement d'éditer des lignes de commandes au moment de leur frappe. La gestion des racourcis ctrl+a et ctrl+e, ainsi que l'historique sont des exemples des fonctions supportées par readline.
# · Lire toute l'histoire · Aucun commentaireVoici une petite liste de quelques petites commandes commandes unix pour spécifiques Mac os X.
# · Lire toute l'histoire · Aucun commentaireLes blocks représentent une fonctionnalité puissante de Ruby. Mais comment sont ils traités d'un point de vue langage ?
Ruby étant totalement objet, derrière les blocks se cache en fait une classe Ruby : Proc. De la déclaration en utilisant les accolades '{}' ou l'ensemble do..end resulte une instance de la classe Proc :
class MyClass
def envelope(myblock)
myblock.call
end
end
m = MyClass.new
p = Proc.new { puts 'test' }
m.envelope p
Les blocks en Ruby est une des fonctions incontournables qui rendent ce langage si attrayant. En simplifié, il s'agit d'un boût de code que l'on peut passer à des fonctions. Ce code peut prendre des paramètres si nécessaire. On les appelle plus communément fonction annonyme.
Une des utilisations principales de ces blocks est fait lors de l'itération d'éléments Enumerable :
[1,2,3].each do |item| puts item + 5 end