Rubyを使用してすべてを自動化できますか?


11

私は、さまざまなプラットフォーム(Windows、Linuxなど)で毎日動作するさまざまな種類のアプリケーション(Webベース、GUIベース、コマンドラインなど)に直面しています。スクリプトを使用してタスクを自動化する素晴らしい機会があります。しかし、ほとんどすべてのタイプのアプリケーションとプラットフォームには、ネイティブのスクリプト言語またはツール(Windows用のVBScriptPowerShell、Linux用のBashスクリプト、Webアプリケーション用のSelenium、GUIアプリケーション用のAutoItなど)があります。非常に多くのスクリプト言語を学び、維持することは私を殺します。

Rubyはさまざまなプラットフォームと簡単に相互運用できると感じており、非常に表現力があります。だから私の質問は:

  1. Rubyを使用してすべてをスクリプト化することは可能ですか?

  2. その場合、各プラットフォームのネイティブスクリプト言語と比較して、主な欠点は何ですか?

回答:


6

Rubyは、Linux、OS Xなどの汎用スクリプト言語に適しています。しかし、最近、2000〜7のWindowsのすべてのバージョンで動作するスクリプトを記述する必要がありました。VBScriptには必要な機能がありませんでした(たとえば、SOAP Webサービスと通信しています)、PowerShellはWindows 2000では使用できないため、Microsoftツールキットの外を見て、Rubyを試してみることにしました(過去にLinuxで使用していました)。決定を正確に後悔しているわけではありませんが、もっと良い選択があったのではないかと思います。Windows上のRubyについての主な不満は次のとおりです。

  • (私が知る限り)c:\ windows \ system32のようなシステムの仮想化領域にドラッグしようとする64ビットRuby for Windowsはありません。私はそのようなもののためにVBScriptに砲撃しました。多分私が理解しなかったより良い方法があります。
  • 遅いです。クアッドコアCPUと6GB RAMがあり、irbのロードに2秒以上かかります。
  • レジストリアクセスやWMIなどのWindows固有のライブラリがありますが、物事が思っているほど簡単ではないことは間違いありません。

それでも、物事は基本的にあなたが期待する方法で動作し、私はRubyで作業するのがOSに組み込まれているものよりも1000倍優れているので、少なくとも、Windowsでの汎用スクリプトではRubyよりも悪いことができると思います。


2

Rubyは、プラットフォーム(Windows、Linux、MAC)間の移植性、およびさまざまな種類のアプリケーションを自動化する能力に関する要件に適合するようです。知っている限り、Rubyライブラリを使用してブラウザーとコマンドラインアプリを自動化できますが、GUIベースのツールについてはわかりません(.NETなどのプラットフォームには、この点で役立つRubyバインディングがあります)。

Rubyには多数のライブラリがあるため、スクリプトに適した多くのタスクを自動化できるはずです。たとえば、さまざまなテキスト形式のファイルを操作したり、ネットワーク、データベースなどにアクセスしたりできます。ただし、ビデオのエンコードなど、ネイティブのルビーでいくつかのタスクを実行するのが最善ではない場合があります(ただし、Rubyを使用して他のツールをいつでも起動できます)。

BATCHおよびShell Scriptsと比較する場合、rubyを使用して、これらのスクリプトが実行できるほぼすべてのタスクを実行できます。欠点は次のとおりです。

  • 追加のインストールが必要になる場合があります。
  • 他の人は、スクリプトを維持するためにルビーを学ぶ必要があるかもしれません。
  • ツールに他のスクリプト言語とのバインディングがある場合、Rubyはパフォーマンスや機能にアクセスする能力の点でそれと一致しない場合があります。たとえば、Rubyを使用して自動化する場合、ブラウザー内からJavaScriptを使用して実行できるすべての操作を実行できない場合があります。

Rukuliが直面しているGUIテストの課題の一部覆うことができる
ljs.dev

0

上記のすべての回答に同意しますが、WindowsとPOSIXにはプラットフォーム固有の違いがあるため、プラットフォーム固有のものを使用する場合、スクリプトを再利用できることを保証できません。

Rubyは一般的なスクリプト作成には適していますが、パフォーマンスにはあまり適していません。とにかく、スクリプト内のプラットフォームを識別し、外部コマンドとスクリプトを実行できます。


1
StackExchangeサイトでの回答の位置は信頼できないことを知っておく必要があります。同じ票数の回答がランダムな順序で配置されるためです。したがって、「上記のすべての回答に同意します」のようなことを言うべきではありません。
Adam Harte
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.