Je dois, à partir d'un script bash, vérifier si certaines gemmes Ruby sont installées.
Je pensais pouvoir faire quelque chose comme
if ! gem list <name>; then do_stuff; fi
mais les tests sur la ligne de commande en utilisant echo $?
montrent que gem list <name>
renvoie 0, peu importe si le nom est réellement trouvé.
Est-ce que cela signifie que je dois utiliser grep pour filtrer la sortie de la liste des gemmes, ou existe-t-il une meilleure façon de vérifier si une gemme est installée?
--version
, par exemple:gem list -i compass --version 0.12.4
.Il semble que la
gem spec
commande échoue avec une erreur si la gemme nommée n'est pas installée. Donc:Je ne sais pas si c'est la manière canonique de résoudre cela, mais cela fonctionne.
la source
Vous pouvez également utiliser la
extrait d'utilisationquery
sous-commande de lagem
commande.Recherche également des versions spécifiques à l'aide du
-v
commutateur.la source
gem query
: "La commande de requête est la base des commandes list et search. Vous devriez vraiment utiliser les commandes list et search à la place. Cette commande est trop difficile à utiliser." ... ne veux pas créer de mauvaises habitudes dans la communauté SO! :-)