Stubber / mocker request.remote_ip

Pour faker une adresse IP d’appel, j’utilisais ça :
Seulement, Rubocop n’était pas content. Avec ça,
Rubocop est content, et c’est la manière la plus simple de le faire 😉

Ruby 2.1.5 avec Rbenv et Ubuntu 16.04

L’autre jour j’ai eu besoin d’intervenir sur un ancien projet Rails, qui tourne sur un serveur en Ruby 2.1.5 (sortie en novembre 2014, et sans support depuis mars 2017).

Avant d’envisager une montée de version, il fallait déjà que j’arrive à tester la version actuelle. Je pensais l’affaire rapide avec Rbenv : rbenv install 2.1.5  et le tour était joué.

Vous vous en doutez, la commande a échouée lamentablement. En regardant les logs j’ai compris que le problème était lié au paquet libssl-dev

/usr/include/openssl/asn1_mac.h:10:2: error: #error « This file is obsolete; please update your software. »

Grâce à Google, j’ai compris d’où venait mon problème : les anciennes versions de Ruby (inférieures à la version 2.3) ne sont compatibles qu’avec la version 1.0 du paquet libssl-dev.

Hors Ubuntu 16.04 est fourni avec le paquet en version 1.1.0. Il a donc fallu que je downgrade en version 1.0 le paquet fautif avec la commande suivante

J’ai pu ensuite installer Ruby 2.1.5 avec Rbenv tout simplement.

 

Ruby On Rails – Des tâches récurrentes simples avec Whenever

Il arrive que dans la vie d’un projet on ait besoin d’exécuter certaines tâches de manières récurrentes (export/import de données, suppression de vieux comptes, envoi de mail, …).

Sous Linux, la méthode la plus simple est d’utiliser l’utilitaire cron : il nous permet de lancer commandes, et scripts à une date et une heure précise et/ou de manière récurrente.

Exemples.

Donc si on veut mettre en place les tâches récurrentes de notre projet Rails, il nous suffit de :

  1. nous connecter sur le serveur
  2. modifier la crontab pour y inclure nos nouvelles tâches

cron est un utilitaire réputé, il existe donc de très nombreuses ressources pour apprendre à l’utiliser. Mais il y a plusieurs choses qui me gênent :

  • la syntaxe cron pour définir les heures et la récurrence est parfois dure à relire (ex. 0 0 25-31 1,3,5,7,8,10,12 0 my-script.sh )
  • la modification de la crontab peut avoir un impact global pas forcément prévu
  • on ne peut pas connaître l’ensemble des tâches récurrentes d’un projet
  • le fait de devoir aller sur le serveur pour mettre à jour la crontab, oblige à le faire sur chaque machine sur laquelle l’application est déployée, il peut donc y avoir des oublis

C’est pourquoi j’ai pris l’habitude d’utiliser la gem Whenever pour gérer les tâches récurrentes de mes projets Rails

Continuer la lecture de « Ruby On Rails – Des tâches récurrentes simples avec Whenever »