No more IE 6 en Ruby

Internet Explorer 6 est bien ancien et ne respecte pas énormément de standards du web, il convient donc de ne plus continuer à intégrer son site internet pour ce genre de navigateur. Il est donc possible de proposer à un utilisateur possédant une telle version d’Internet Explorer de changer et mettre à jour vers un navigateur plus récent. Pour cela il suffit de détecter que le navigateur utilisé est bien IE 6. Ruby propose cette détection via le code suivant :

<% if request.user_agent.try(:include?, « MSIE 6.0 ») %>
Votre message et un lien pour mettre à jour le navigateur.
<% end %>

Comme vous pouvez le remarquer le code proposé vous permet donc de détecter le navigateur utilisé par l’internaute, il suffira de changer la chaine à rechercher pour les autres navigateurs. Ensuite, une fois que la détection est vérifiée, il vous suffi d’afficher un joli message invitant l’internaute à modifier la version de son navigateur avec un lien vers cette nouvelle version et le tour est joué.

Afficher de l’html généré en Rails 3

Avec Rails 2, pour afficher une variable contenant de l’html (par exemple généré par TinyMCE), rien de plus simple :

Avec Rails 3, c’est un peu plus compliqué. La ligne de code précédente, affichera le texte de la variable brut, sans le style html mais avec les balises en tant que texte. Pour parer à ce problème, deux solutions existent :

Et voilà !

Communication entre Flash, Javascript et l’internaute

Dans une animation flash / swf, intégrée sur une page html, rien de plus simple d’utiliser des fonctions prédéfinies en javascript. Pour cela, il suffit d’écrire en ActionScript :

Plus compliqué, exécuter du code suite à une action de l’internaute dans l’animation flash.

  1. Créer un fichier javascript qui contiendra toutes les fonctions utiles.
  2. Appeler le fichier .js entre les balises <head> du fichier html.
  3. En actionscript, faire appel à la fonction javascript via getURL.

Problème getURL et Internet Explorer

Pour faire appel à du javascript dans flash, on utilise getURL. Parfois, avec Internet Explorer, cette fonction ne marche pas. Pour parer à ce problème, il suffit de remplacer :

par

Bien entendu, il est possible de recommander à nos internautes d’utiliser un véritable navigateur, tel Firefox 😉

Parser une URL avec Ruby

Il est très simple de parser une URL sous Ruby. En parsant l’adresse grâce aux points de séparation, comme pour www.domain.com, l’extension sera le dernier élément du tableau ainsi créé.

Du coup, il devient simple d’affecter une variable de session pour la langue du site en fonction de l’extension du nom de domaine :

Et voilà !

Tri « Sort » avec plusieurs paramètres sur un array en ruby

Ruby permet de réaliser des tris sur les tableaux d’objets de manière simple et rapide :

Mais il peut arriver que ce simple tri ne suffise pas s’il est effectué sur un attribut non unique, par exemple un libellé ou un nom, il faut dans ce cas ajouter un second paramètre pour les cas « d’égalité ».

Ruby permet facilement cela :

Et voilà, votre tableau sera en premier lieu trier par le premier paramètre puis en cas d’égalité l’ordre se fera via le second paramètre.

Boucler sur tous les éléments d’un répertoire en Ruby

La classe Dir en Ruby est très pratique, elle permet d’instancier un objet de type répertoire, et donne ainsi l’accès à plusieurs méthodes (voir la documentation de Ruby).

La méthode foreach qui prend en paramètre d’entrée « le chemin physique du répertoire » permet de boucler sur les éléments présents dans ce dossier :

Maintenant vous savez récupérer des fichiers depuis un répertoire sans sous dossiers.

Si votre répertoire contient aussi d’autres dossiers il faudra pousser un peu votre code en utilisant une fonction récursive permettant de descendre dans les sous dossiers.

Et voilà, il ne reste plus qu’à appeler cette méthode pour lister tous les fichiers de votre dossier.

MySQL import : ERROR 1030 (HY000) at line 88: Got error 139 from storage engine

Lors de l’import d’une base de données MySQL au format sql avec la commande,

L’erreur suivante s’affiche :

Voici un lien intéressant :

http://bugs.mysql.com/bug.php?id=25945ENGINE=MYISAM

Il s’agit d’un bug sur InnoDB, le moteur, car la requêtre est trop long, et il faut la V6 de MySQL…

Du coup dans le script sql, il faut aller sur le CREATE TABLE de en question et remplacer :

ENGINE=InnoDB

Par :

ENGINE=MYISAM

Attention, MYISAM est l’ancien moteur de la base de données.

L’import fonctionne à présent.

mise en place d’un captcha

Nous allons créer un captcha simple basé sur la création d’une image via Image Magick et notamment la possibilité de créer une image contenant une chaîne.

Le principe est simple, nous générons une chaîne aléatoire qui sera stockée dans une variable de session et avec laquelle nous allons créer une image. Puis nous vérifierons que l’internaute ait bien écrit dans son formulaire la chaîne demandée.

Sous Ruby on Rails, dans l’action du contrôleur qui appelle le formulaire sur lequel nous souhaitons placer le captcha :

Dans le formulaire, il suffit d’appeler l’image générée précédemment.

Et dans l’action du contrôleur qui récupère le formulaire, vérifier la valeur du champ :

Et voilà !