Puis-je utiliser Ruby pour tout automatiser?

11

Je suis confronté à différents types d'applications (Web, GUI, ligne de commande, etc.) sur différentes plateformes (Windows, Linux, etc.) pour fonctionner au quotidien. Il y a une grande opportunité pour moi d'automatiser des tâches par script. Mais presque tous les types d'applications et de plates-formes ont leur langage ou outils de script natifs (tels que VBScript et PowerShell pour Windows, les scripts Bash pour Linux, Selenium pour les applications Web et AutoIt pour les applications GUI, etc.). Cela me tue d'apprendre et de maintenir autant de langages de script.

J'ai le sentiment que Ruby peut interagir facilement avec diverses plates-formes, et c'est très expressif. Ma question est donc:

  1. Est-il possible d'utiliser Ruby pour tout scénariser?

  2. Si tel est le cas, quels sont les principaux inconvénients par rapport au langage de script natif de chaque plate-forme?

TomCaps
la source

Réponses:

6

Ruby est un bon choix pour un langage de script à usage général sous Linux, OS X, etc. Mais j'ai récemment eu besoin d'écrire des scripts qui fonctionneraient sur toutes les versions de Windows de 2000 à 7. VBScript n'avait pas les fonctionnalités dont j'avais besoin ( parler aux services Web SOAP par exemple) et PowerShell n'est pas disponible pour Windows 2000, j'ai donc regardé en dehors de la boîte à outils Microsoft et j'ai décidé de donner un coup de main à Ruby (l'ayant utilisé sur Linux dans le passé). Je ne regrette pas exactement la décision, mais je me demande s'il aurait pu y avoir un meilleur choix. Mes principales plaintes concernant Ruby sous Windows étaient les suivantes:

  • Il n'y a pas de Ruby 64 bits pour Windows (pour autant que je sache), ce qui a rendu difficile l'accès aux zones virtualisées du système comme c: \ windows \ system32. J'ai fini par bombarder VBScript pour certains de ces trucs; il y a peut-être une meilleure façon de ne pas comprendre.
  • C'est lent. J'ai un processeur quad-core et 6 Go de RAM et irb prend 2+ secondes à charger.
  • Bien qu'il existe des bibliothèques spécifiques à Windows pour des choses comme l'accès au registre et WMI, les choses ne sont certainement pas toujours aussi faciles que vous le pensez et le manque relatif de documentation entraîne des essais et des erreurs.

Pourtant, les choses fonctionnent essentiellement comme vous vous attendez et j'aime travailler avec Ruby environ mille fois mieux que tout ce qui est intégré dans le système d'exploitation, donc au moins, je dirais que vous pourriez faire pire que Ruby pour les scripts à usage général sur Windows .

Martin
la source
2

Ruby semble répondre à vos exigences en matière de portabilité entre plates-formes (Windows, Linux, MAC) et de capacité à automatiser différents types d'applications. AFAIK, vous pouvez automatiser les navigateurs et les applications en ligne de commande à l'aide des bibliothèques ruby, mais je ne suis pas sûr des outils basés sur l'interface graphique (certaines plates-formes comme .NET ont des liaisons Ruby qui peuvent être utiles à cet égard).

Ruby possède un grand nombre de bibliothèques, vous devriez donc être en mesure d'automatiser de nombreuses tâches adaptées aux scripts. Par exemple, vous pouvez manipuler des fichiers dans différents formats textuels, accéder au réseau, à la base de données, etc. Cependant, il n'est peut-être pas préférable d'effectuer certaines tâches dans Ruby natif - par exemple, l'encodage de vidéos (mais vous pouvez toujours invoquer d'autres outils à l'aide de Ruby pour le faire).

Si vous le comparez aux scripts BATCH et Shell, ruby ​​peut être utilisé pour effectuer presque toutes les tâches que ces scripts peuvent effectuer. L'inconvénient pourrait être:

  • Vous pourriez avoir besoin d'une installation supplémentaire.
  • D'autres peuvent avoir besoin d'apprendre le rubis pour maintenir vos scripts.
  • Si un outil a une liaison avec un autre langage de script, ruby ​​peut ne pas être en mesure de faire correspondre cela en termes de performances ou même de capacité d'accéder à la fonctionnalité. Par exemple, vous ne pourrez peut-être pas faire tout ce qui peut être fait via JavaScript depuis l'intérieur d'un navigateur lorsque vous l'automatisez via Ruby.
Satyajit
la source
Rukuli peut couvrir certains des défis de test GUI rencontrés
ljs.dev
0

Je suis d'accord avec toutes les réponses ci-dessus, mais gardez à l'esprit que Windows et POSIX ont des différences spécifiques à la plate-forme, il ne peut donc pas garantir que vous pouvez réutiliser votre script s'il utilise des éléments spécifiques à la plate-forme.

Ruby est très bien pour les scripts généraux mais pas vraiment pour les performances. Quoi qu'il en soit, il vous permet d'identifier la plate-forme à l'intérieur du script et d'exécuter des commandes et des scripts externes.

UN B
la source
1
Vous devez savoir que la position des réponses sur les sites StackExchange ne peut pas être invoquée, car les réponses du même nombre de votes sont placées dans un ordre aléatoire. Donc, vous ne devriez pas dire des choses comme "Je suis d'accord avec toutes les réponses ci-dessus "
Adam Harte