Posso usar o Ruby para automatizar tudo?


11

Enfrento vários tipos de aplicativos (baseados na Web, GUI, linha de comando etc.) em várias plataformas (Windows, Linux etc.) para operar todos os dias. Há uma grande oportunidade para eu automatizar tarefas por script. Mas quase todo tipo de aplicativo e plataforma tem sua linguagem ou ferramentas nativas de script (como VBScript e PowerShell para Windows, scripts Bash para Linux, Selenium para aplicativos da Web e AutoIt para aplicativos da GUI, etc.). Isso me ajuda a aprender e manter tantas linguagens de script.

Tenho a sensação de que Ruby pode interoperar com várias plataformas facilmente, e é muito expressivo. Então, minha pergunta é:

  1. É possível usar Ruby para escrever tudo?

  2. Em caso afirmativo, quais são as principais desvantagens em comparação com a linguagem de script nativa de cada plataforma?

Respostas:


6

Ruby é uma ótima opção para uma linguagem de script de uso geral no Linux, OS X, etc. Mas recentemente precisei escrever alguns scripts que funcionariam em todas as versões do Windows de 2000 a 7. O VBScript não tinha a funcionalidade necessária ( conversando com serviços Web SOAP, por exemplo) e o PowerShell não está disponível para Windows 2000, então olhei para fora do kit de ferramentas da Microsoft e decidi experimentar Ruby (tendo usado no Linux no passado). Não me arrependo exatamente da decisão, mas me pergunto se poderia ter havido uma escolha melhor. Minhas principais queixas sobre Ruby no Windows foram:

  • Não há Ruby para Windows de 64 bits (tanto quanto eu saiba) que fez com que tentar acessar áreas virtualizadas do sistema, como c: \ windows \ system32, fosse uma chatice. Acabei usando o VBScript para algumas dessas coisas; talvez haja uma maneira melhor de não descobrir.
  • É lento. Eu tenho uma CPU quad-core e 6 GB de RAM e o irb leva mais de 2 segundos para carregar.
  • Embora existam bibliotecas específicas do Windows para itens como acesso ao registro e WMI, as coisas definitivamente nem sempre são tão fáceis quanto você pensa que podem ser e a relativa falta de documentação resulta em alguma tentativa e erro.

Ainda assim, as coisas funcionam basicamente da maneira que você esperaria e eu gosto de trabalhar com Ruby cerca de mil vezes melhor do que qualquer coisa embutida no sistema operacional; portanto, no mínimo, eu diria que você poderia fazer pior que Ruby para scripts de uso geral no Windows .


2

O Ruby parece atender aos seus requisitos em relação à portabilidade entre plataformas (Windows, Linux, MAC) e capacidade de automatizar diferentes tipos de aplicativos. AFAIK, você pode automatizar navegadores e aplicativos de linha de comando usando bibliotecas ruby, mas não tenho certeza sobre ferramentas baseadas em GUI (algumas plataformas como o .NET possuem ligações Ruby que podem ser úteis nesse sentido).

O Ruby possui um grande número de bibliotecas, portanto, você deve poder automatizar muitas tarefas adequadas para scripts. Por exemplo, você pode manipular arquivos em diferentes formatos de texto, acessar rede, banco de dados e assim por diante. No entanto, pode não ser melhor executar algumas tarefas no ruby ​​nativo - por exemplo, codificar vídeos (mas você sempre pode invocar outras ferramentas usando o Ruby para fazer isso).

Se você estiver comparando-o com os scripts BATCH e Shell, o ruby ​​poderá ser usado para executar praticamente qualquer tarefa que esses scripts possam executar. A desvantagem pode ser:

  • Você pode precisar de instalação adicional.
  • Outros podem precisar aprender ruby ​​para manter seus scripts.
  • Se uma ferramenta tiver ligação com alguma outra linguagem de script, o ruby ​​poderá não conseguir corresponder isso em termos de desempenho ou até capacidade de acessar a funcionalidade. Por exemplo, talvez você não consiga fazer tudo o que pode ser feito via JavaScript a partir de um navegador ao automatizá-lo via Ruby.

Rukuli pode abranger alguns dos desafios enfrentados teste GUI
ljs.dev

0

Concordo com todas as respostas acima, mas lembre-se de que o Windows e o POSIX têm diferenças específicas da plataforma, portanto, não é possível garantir que você possa reutilizar seu script se ele usar algumas coisas específicas da plataforma.

Ruby é bom para scripts gerais, mas não é ótimo para desempenho. De qualquer forma, permite identificar a plataforma dentro do script e executar comandos e scripts externos.


1
Você deve saber que não é possível confiar na posição das respostas nos sites do StackExchange, porque respostas da mesma quantidade de votos são colocadas em uma ordem aleatória. Portanto, você não deve dizer coisas como "concordo com todas as respostas acima "
Adam Harte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.