Ruby on Rails test checkbox

Attention, un comportement différent du HTML standard en ce qui concerne les checkbox et Ruby on Rails. Vous avez sûrement déjà tester la présence d’un « name » de checkbox dans votre variable $_POST en php afin de savoir si cette checkbox avait été cochée (par sa simple présence vous saviez qu’elle l’était et en son absence vous saviez qu’elle n’était pas cochée). Et bien cela n’est plus possible en Ruby on Rails, en effet, Rails créé un hidden et il y a donc un passage obligatoire dans la variable params il faut donc faire le test sur la valeur plutôt que la présence.

moteur de recherche interne à un site internet

Le moteur de recherche libre (recherche de tout ou partie d’un mot sur tout un site), est un fonctionnalité courante mais qui peut s’avérer complexe à mettre en œuvre, notamment lorsqu’il s’agit de réaliser la recherche dans de nombreuses sources (multiples bases de données, fichiers…) et assez tolérante (accents, mais aussi fautes de frappe, caractères manquants…).

Une possibilité simple est de réaliser la recherche dans des fichiers de caches précédemment générés, via la fonction agrep (une recherche approximative).

La ligne suivante permet de fournir la liste des fichiers html qui contiennent le texte test, à un caractère près.

Liaison de 1 à 1 en Ruby on Rails

Pour réaliser une telle liaison, il est simple de s’apercevoir que l’on peut mettre l’identifiant de l’un dans la table de l’autre et ceci sans contrainte si ce n’est le sens même de cette liaison, exemple :
Prenons une personne qui possède une voiture, il est simple de penser que la personne possède une voiture et non que la voiture possède une personne. On peut donc indiquer que la voiture est une caractéristique de la personne (Objet avec plus d’importance). On va donc stocker la liaison dans la table personne avec l’identifiant de la voiture.

En Ruby on Rails, 2 liaisons belongs_to ne fonctionne pas, il faut donc ajouter une colonne voiture_id dans la table personne puis indiquer une liaison :

belongs_to :voiture

dans le model de Personne et une liaison :

has_one :personne

dans le model de Voiture.

Ainsi, vous venez de créer une liaison de un à un entre une personne et une voiture.

GIT et mise à jour auto du dépôt privé

Nous allons configurer Git pour un workflow proche d’une simple mise à jour via ftp d’un serveur depuis un client, par exemple un serveur Web depuis les postes de développement. Cela nécessite qu’il mette à jour automatiquement un dépôt privé, sur le serveur, lorsqu’une modification a été réalisée dans le dépôt public.

Pour cela, une fois que git est installé et que vos dépôts public et privé sont en place sur le même serveur, il suffit d’ajouter, dans le fichier « hooks/post-update » de votre dépôt public, avant « exec git-update-server-info » :

Ceci entraînera une action après chaque mise à jour de ce dépôt public. L’action appelée entraînera la mise à jour de votre dépôt privé en faisant un « git pull ». Pour que cette action puisse s’exécuter, il vous faut donner au fichier « hooks/post-update » les droits en exécution avec un chmod.

Et voilà, une synchronisation entre votre dépôt public et privé via Git.

Nombre de pages d’un PDF avec ImageMagick et Ruby

Pour connaître le nombre de pages d’un pdf, on peut utiliser ImageMagick et la commande :

Gestion Favicon sur les navigateurs

Généralement déposer un fichier favicon.ico à la racine de votre site permet à celui-ci de l’utiliser automatiquement comme favicon.

Exception sous IE si le .ico n’est pas créé correctement, dans ce cas le favicon ne s’affiche pas.

Une solution efficace permettant de récupérer un favicon lisible par IE, sur ce site http://www.convertico.com

Après avoir remplacé votre ancien favicon, un petit coup de « vider votre cache » et normalement plus de soucis.

Nouvelles typos sur le Web

Vous en avez assez de Arial, Verdana et Trebuchet sur vos sites web ?  Alors passez à @font-face ! Très simple d’utilisation à l’aide du site www.fontsquirrel.com.

Démonstration :
– Allez sur le site www.fontsquirrel.com/fontface/generator, ajoutez une typo (au format otf) puis générez votre kit .
– Dé-zippez ce dernier et ouvrez le fichier stylesheet.css. Copiez la propriété @font-face dans votre feuille de style habituelle :
@font-face {
font-family: "Typo";
font-style: normal;
font-weight: normal;
src: url("typo.eot?") format("eot"),
url("typo-webfont.woff") format("woff"),
url("typo-webfont.ttf") format("truetype"),
url("typo-webfont.svg#webfontrTwnpuIE") format("svg");
}

– Copiez les fichiers de police fournis dans le zip (formats eot, woff, ttf et svg) dans le même répertoire que votre fichier css.

Et voilà, il n’y a plus qu’à tester !

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é.