Feb/080
Ruby on Rails : Récupérer le contenu d’une session dans la console
Lors de certaines phases de debug avec la console, il peut être utile parfois d'avoir accès au contenu d'une session utilisateur.
Actuellement, j'accède à l'objet session de cette façon :
1 - Rechercher dans le répertoire 'sessions' la session qui m'intéresse. (par exmple, la dernière session créée)
2 - Ouvrir la console est taper :
s = Marshal.load(File.open('/tmp/sessions/ruby_sess.6aa3fe56e4c32cef'))
Ensuite, je peux manipuler l'objet session pour analyser ce qu'il contient et repérer un éventuel bug.
Existe-t-il un moyen plus élégant avec Ruby On Rails pour effectuer ce style de debugging ?
Dec/070
Une commande ruby très pratique
On peut faire des chose très utiles avec une seule ligne de commande ruby (de la même façon qu'avec perl).
Exemple, comment remplacer la chaine 'top' par 'tip' dans tous les fichiers .html avec en plus sauvegarde de tous les fichiers originaux modifiés en .orig
% ruby -i.orig -pe 'sub "top", "tip"' *.html
Remarque, on peut faire la même chose en Perl :
% perl -i'.orig' -pe 's/top/tip/g' *html
Personnellement, j'ai un peu délaissé Perl pour Ruby. La seule raison, je n'ai pas vraiment besoin de beaucoup de performance lorsque je fais de petits scripts (niveau performance, Ruby est loin derrière Perl). Mis à part le fait que je trouve Ruby beaucoup plus classieux que Perl. Mais c'est un autre propos.
Un autre exemple en Ruby, supprimer les espaces à la fin des lignes d'un fichier:
% ruby -pe 'gsub(/\s+$/, $/)' < file.txt
On peut trouver des petits scripts one-liners très utiles pour résoudre de petites taches.
Vous trouverez de nombreux exemples sur cette pages : ruby1line
Dec/070
Une fonction pour simuler la valeur de sûreté d’un mot de passe en Ruby
J'ai trouvé une astuce sur un site de Snippet, utile pour estimer la valeur de sûreté d'un mot de passe. C'est une simple extension de la classe String (ce qui veut dire que tout vos object string possèderons la méthode pwd_strength.
class String SETS = { /[a-z]/ => 26, /[A-Z]/ => 26, /[0-9]/ => 10, /[^\w]/ => 32 } def pwd_strength set_size = 0 SETS.each_pair {|k, v| set_size += v if self =~ k} cb = set_size ** length days = cb.to_f / 1000 / 86400 # 1000 entries per seconds days / 365 end end
Par contre, c'est une simple estimation basé sur les combinaisons possible induites par les caractères qui compose le mot de passe. Mais cela reste tout de même intéressant pour faire une évaluation indicative.
Dec/070
Modifier le groupe et l’utilisateur d’un fichier en Ruby
Ruby est très pratique pour développer des petits scripts d'administration.
Une commande simple en Ruby pour modifier le groupe et l'utilisateur d'un fichier :
require 'fileutils'
FileUtils.chown('user', 'group', 'myfile.txt')
C'est plus simple et plus propre que de faire un appel système via open pipe ...