¿Puedo usar Ruby para automatizar todo?

11

Me enfrento a varios tipos de aplicaciones (basadas en la web, basadas en GUI, línea de comandos, etc.) en varias plataformas (Windows, Linux, etc.) para operar todos los días. Hay una gran oportunidad para mí de automatizar tareas mediante secuencias de comandos. Pero casi todos los tipos de aplicaciones y plataformas tienen su lenguaje o herramientas de scripts nativos (como VBScript y PowerShell para Windows, scripts Bash para Linux, Selenium para aplicaciones web y AutoIt para aplicaciones GUI, etc.). Me mata aprender y mantener tantos lenguajes de secuencias de comandos.

Tengo la sensación de que Ruby puede interoperar fácilmente con varias plataformas, y es muy expresivo. Entonces mi pregunta es:

  1. ¿Es posible usar Ruby para escribir todo?

  2. Si es así, ¿cuáles son las principales desventajas en comparación con el lenguaje de scripting nativo de cada plataforma?

TomCaps
fuente

Respuestas:

6

Ruby es una buena opción para un lenguaje de script de propósito general en Linux, OS X, etc. Pero recientemente necesité escribir algunos scripts que funcionarían en todas las versiones de Windows desde 2000 hasta 7. VBScript no tenía la funcionalidad que necesitaba ( hablando con los servicios web SOAP, por ejemplo) y PowerShell no está disponible para Windows 2000, así que miré fuera del kit de herramientas de Microsoft y decidí darle una oportunidad a Ruby (habiéndolo usado en Linux en el pasado). No me arrepiento exactamente de la decisión, pero me pregunto si podría haber habido una mejor opción. Mis principales quejas sobre Ruby en Windows fueron:

  • No hay un Ruby de 64 bits para Windows (que yo sepa) que hizo que tratar de acceder a áreas virtualizadas del sistema como c: \ windows \ system32 fuera una simple molestia. Terminé buscando en VBScript algunas de esas cosas; tal vez hay una mejor manera que no descubrí.
  • Es lento. Tengo una CPU de cuatro núcleos y 6 GB de RAM e irb tarda más de 2 segundos en cargarse.
  • Si bien hay bibliotecas específicas de Windows para cosas como el acceso al registro y WMI, las cosas definitivamente no siempre son tan fáciles como crees que podrían ser, y la relativa falta de documentación resulta en una prueba y error.

Aún así, las cosas funcionan básicamente de la manera que esperabas y me gusta trabajar con Ruby mil veces mejor que cualquier cosa integrada en el sistema operativo, por lo que, como mínimo, diría que podrías hacer algo peor que Ruby para las secuencias de comandos de propósito general en Windows .

Martín
fuente
2

Ruby parece ajustarse a sus requisitos con respecto a la portabilidad entre plataformas (Windows, Linux, MAC) y la capacidad de automatizar diferentes tipos de aplicaciones. AFAIK puede automatizar navegadores y aplicaciones de línea de comandos usando bibliotecas ruby, pero no estoy seguro acerca de las herramientas basadas en GUI (Algunas plataformas como .NET tienen enlaces Ruby que pueden ser útiles en este sentido).

Ruby tiene una gran cantidad de bibliotecas, por lo que debería poder automatizar muchas tareas adecuadas para las secuencias de comandos. Por ejemplo, puede manipular archivos en diferentes formatos de texto, acceder a la red, a la base de datos, etc. Sin embargo, puede que no sea mejor realizar algunas tareas en ruby ​​nativo, por ejemplo, codificar videos (pero siempre puede invocar otras herramientas usando Ruby para hacerlo).

Si lo está comparando con BATCH y Shell Scripts, ruby ​​se puede usar para realizar casi cualquier tarea que estos scripts puedan hacer. La desventaja podría ser:

  • Es posible que necesite una instalación adicional.
  • Otros pueden necesitar aprender ruby ​​para mantener sus guiones.
  • Si una herramienta se vincula con algún otro lenguaje de secuencias de comandos, es posible que Ruby no pueda igualar eso en términos de rendimiento o incluso de la capacidad de acceder a la funcionalidad. Por ejemplo, es posible que no pueda hacer todo lo que se puede hacer a través de JavaScript desde un navegador cuando lo esté automatizando a través de Ruby.
Satyajit
fuente
Rukuli puede cubrir algunos de los desafíos de prueba de GUI que enfrenta
ljs.dev
0

Estoy de acuerdo con todas las respuestas anteriores, pero tenga en cuenta que Windows y POSIX tienen diferencias específicas de la plataforma, por lo que no puede garantizar que pueda reutilizar su script si utiliza algunas cosas específicas de la plataforma.

Ruby está bien para las secuencias de comandos generales, pero no es realmente bueno para el rendimiento. De todos modos, le permite identificar la plataforma dentro del script y ejecutar comandos y scripts externos.

AB
fuente
1
Debe saber que no se puede confiar en la posición de las respuestas en los sitios de StackExchange, porque las respuestas de la misma cantidad de votos se ordenan al azar. Así que no deberías decir cosas como "Estoy de acuerdo con todas las respuestas anteriores "
Adam Harte