Posso usare Ruby per automatizzare tutto?


11

Devo affrontare vari tipi di applicazioni (basate sul Web, basate sulla GUI, da riga di comando, ecc.) Su varie piattaforme (Windows, Linux, ecc.) Per funzionare tutti i giorni. C'è una grande opportunità per me di automatizzare le attività tramite lo scripting. Ma quasi ogni tipo di applicazione e piattaforma ha il suo linguaggio o strumenti di script nativi (come VBScript e PowerShell per Windows, script Bash per Linux, Selenium per applicazioni Web e AutoIt per applicazioni GUI, ecc.). Mi uccide imparare e mantenere così tanti linguaggi di scripting.

Ho la sensazione che Ruby possa interagire facilmente con varie piattaforme ed è molto espressivo. Quindi la mia domanda è:

  1. È possibile usare Ruby per scrivere tutto?

  2. In tal caso, quali sono i principali svantaggi rispetto al linguaggio di scripting nativo di ciascuna piattaforma?

Risposte:


6

Ruby è una buona scelta per un linguaggio di scripting generico su Linux, OS X, ecc. Ma recentemente ho dovuto scrivere alcuni script che funzionassero su ogni versione di Windows dal 2000 al 7. VBScript non aveva le funzionalità di cui avevo bisogno ( parlando con i servizi Web SOAP per esempio) e PowerShell non è disponibile per Windows 2000, quindi ho guardato fuori dal toolkit Microsoft e ho deciso di provare Ruby (dopo averlo usato su Linux in passato). Non rimpiango esattamente la decisione, ma mi chiedo se ci sia stata una scelta migliore. Le mie principali lamentele su Ruby su Windows erano:

  • Non c'è Ruby per Windows a 64 bit (per quanto ne so) che ha reso un tentativo di accedere ad aree virtualizzate del sistema come c: \ windows \ system32. Ho finito per sborsare su VBScript per alcune di quelle cose; forse c'è un modo migliore che non ho capito.
  • È lento. Ho una CPU quad-core e 6 GB di RAM e il caricamento dell'irb richiede 2+ secondi.
  • Mentre ci sono librerie specifiche di Windows per cose come l'accesso al registro e WMI, le cose sicuramente non sono sempre così facili come pensi che potrebbero essere e la relativa mancanza di documentazione provoca qualche prova ed errore.

Tuttavia, le cose funzionano fondamentalmente come ti aspetteresti e mi piace lavorare con Ruby circa mille volte meglio di qualsiasi cosa sia integrata nel sistema operativo, quindi come minimo, direi che potresti fare di peggio di Ruby per gli script generici su Windows .


2

Sembra che Ruby soddisfi le tue esigenze in termini di portabilità tra piattaforme (Windows, Linux, MAC) e capacità di automatizzare diversi tipi di applicazioni. AFAIK puoi automatizzare i browser e le app della riga di comando usando le librerie ruby ​​ma non sono sicuro degli strumenti basati sulla GUI (alcune piattaforme come .NET hanno i collegamenti Ruby che potrebbero essere utili a questo proposito).

Ruby ha un gran numero di librerie, quindi dovresti essere in grado di automatizzare molte attività adatte allo scripting. Ad esempio, è possibile manipolare i file in diversi formati testuali, accedere alla rete, al database e così via. Tuttavia, potrebbe non essere meglio svolgere alcune attività nel ruby ​​nativo, ad esempio la codifica dei video (ma puoi sempre invocare altri strumenti utilizzando Ruby per farlo).

Se lo stai confrontando con BATCH e Shell Scripts, ruby ​​può essere usato per eseguire quasi tutte le attività che questi script possono fare. Lo svantaggio potrebbe essere:

  • Potrebbe essere necessaria un'installazione aggiuntiva.
  • Altri potrebbero aver bisogno di imparare il rubino per mantenere i tuoi script.
  • Se uno strumento ha legami con qualche altro linguaggio di scripting, ruby ​​potrebbe non essere in grado di eguagliarlo in termini di prestazioni o addirittura di accesso alla funzionalità. Ad esempio, potresti non essere in grado di fare tutto ciò che può essere fatto tramite JavaScript dall'interno di un browser quando lo stai automatizzando tramite Ruby.

Rukuli potrebbe affrontare alcune delle sfide dei test della GUI affrontate
ljs.dev,

0

Sono d'accordo con tutte le risposte sopra, ma tieni presente che Windows e POSIX presentano differenze specifiche per la piattaforma, quindi non è possibile garantire che puoi riutilizzare lo script se utilizza alcuni elementi specifici della piattaforma.

Ruby va bene per lo scripting generale ma non è eccezionale per le prestazioni. Ad ogni modo ti permette di identificare la piattaforma all'interno dello script ed eseguire comandi e script esterni.


1
È necessario sapere che non è possibile fare affidamento sulla posizione delle risposte sui siti StackExchange, poiché le risposte dello stesso numero di voti vengono inserite in un ordine casuale. Quindi non dovresti dire cose come "Sono d'accordo con tutte le risposte sopra "
Adam Harte il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.