Comment accélérer le développement rails avec les alias du shell

Vous êtes fatigués de taper régulièrement dans votre terminal :

$ bundle exec rake quelque_chose

Vous n’en pouvez plus de saisir ce genre de commande à chaque fois que vous touchez à la base de données :

$ bundle exec rake db:migrate
$ bundle exec rake db:test:prepare
$ bundle exec annotate --position before

Même un simple :

$ rails g migration BlaBlaBla

vous déprime ? Voici une solution.

Introduction

Le truc que je vous propose n’est pas spécifique à Rails ou à Ruby et je gage que beaucoup d’entre vous le connaisse et le pratique déjà. Mais de temps en temps ça ne fait pas de mal de revenir aux basiques. Voyez donc ce que vous allez obtenir si vous lisez ce post jusqu’à la fin.

Au lieu d’écrire :

$ bundle exec rake spec

vous pourriez obtenir le même résultat avec :

$ bxrs

C’est plus rapide, non ? Mais pourquoi ces 4 lettres « bxrs » ? C’est juste un moyen mnémotechnique qui à du sens pour moi : « Bundle eXec Rake Spec ». Mais vous pourriez choisir n’importe quoi d’autre, « choux » ou « carotte » si vous préférez.

Autre exemple, au lieu d’écrire :

$ bundle exec rake db:migrate &&
bundle exec rake db:test:prepare &&
bundle exec annotate --position before

Est ce que vous ne préféreriez pas écrire seulement :

$ bxmigrate

Si vous êtes intéressés, continuez la lecture…

Les alias de commande

Sur un système *nix, le shell est facilement configurable. (Sur Windows ça doit être possible aussi…) Vous pouvez définir un alias pour une commande, autrement dit en français : un pseudonyme, un nom d’emprunt, un surnom, etc.

Pour expérimenter cela, ouvrez un terminal et saisissez (faites bien attention à ne pas mettre d’espace autour du signe '=') :

$ alias carotte='ls'

Si maintenant vous entrez :

$ carotte

C’est la commande ls qui sera exécutée et vous verrez le contenu du répertoire courant. Voilà, vous avez défini un alias de commande. Celui-là est parfaitement inutile, c’est seulement pour l’exemple.

Pour connaître la définition d’un alias vous faites comme suit :

$ alias carotte
alias carotte='ls'

Pour connaître la liste de tout les alias définis par votre shell vous faites ceci :

$ alias
alias carotte='ls'
alias ls='ls --color=auto'
[...]

J’ai coupé la liste ci-dessus pour ne garder que ce qui m’intéresse. Deux remarques très importantes pour la suite :

  1. Ce que vous mettez entre les guillemets n’est pas limité à une simple commande. Vous pouvez mettre en réalité une ligne de commande, avec des options, des enchaînements, etc.
  2. Les alias sont récursifs. Quand vous saisissez carotte, le shell transforme cela en ls, puis transforme à nouveau en ls --color=auto.

Maintenant fermez votre terminal puis ouvrez en un nouveau. Entrez encore une fois la commande carotte :

$ carotte
bash: carotte : commande introuvable

Boum ! Que s’est il passé ? Lorsque vous entrez alias a='b' dans le shell, votre nouvel alias n’est actif que pour la session courante, autrement dit, il est temporaire. Si vous ouvrez un nouveau terminal, votre alias n’existe pas. Pour rendre vos alias permanents, il faut les saisir une fois pour toutes dans le fichier .bashrc.

Le fichier .bashrc

Il s’agit d’un fichier de configuration du shell qui est lu (et interprété) à chaque fois que vous ouvrez un terminal. Ouvrez donc votre .bashrc dans un éditeur. Il se trouve dans votre dossier home. Comme il s’agit d’un fichier caché faites CTRL-H dans nautilus pour le voir. Une fois ouvert, recherchez le mot « alias ». Vous allez trouvez une section qui ressemble à la suivante :

# Alias définitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

Vous pouvez définir vos alias directement dans le fichier .bashrc, mais il est conseillé de le faire dans un fichier à part. Si le code ci-dessus n’existe pas dans votre .bashrc, ajoutez le. Maintenant ouvrez le fichier .bash_aliases qui se trouve lui aussi dans votre home pour l’éditer. Si ce fichier n’existe pas, créez le. Vous pouvez maintenant écrire dedans :

alias carotte='ls'

Enregistrez le puis ouvrez un nouveau terminal pour voir que ça fonctionne bien.

Des alias pour rails

Voilà, vous savez comment faire et je pourrais donc m’arrêter là. Je vais quand  même donner quelques exemples pour la forme.

# Aliases for ruby on rails.

alias bxr='bundle exec rake'

alias bxrs='bxr spec'

alias bxmigrate='bxr db:migrate && bxr db:test:prepare && bx annotate --position before'

alias railsg='rails generate'

alias railsgm='railsg migration'

À vous maintenant d’inventer vos propres alias, en utilisant des abréviations qui vous parle. Et bien entendu vous n’êtes pas limité au développement rails, vous pouvez en faire pour n’importe quelle commande longue et/ou répétitive.

J’aimerai beaucoup connaître vos propres alias, alors n’hésitez pas à les laisser dans un commentaire.

À bientôt.

Publicités

, , , , , , ,

  1. Poster un commentaire

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :