我可以使用Ruby来自动化一切吗?


11

我在各种平台(Windows,Linux等)上面对每天运行的各种类型的应用程序(基于Web,基于GUI,命令行等)。我有很大的机会通过脚本来自动化任务。但是几乎每种类型的应用程序和平台都有其本机脚本语言或工具(例如Windows的VBScriptPowerShell,Linux的Bash脚本,Web应用程序的Selenium和GUI应用程序的AutoIt等)。学习和维护如此多的脚本语言使我丧命。

我觉得Ruby可以轻松地与各种平台进行互操作,并且表达能力很强。所以我的问题是:

  1. 可以使用Ruby编写所有脚本吗?

  2. 如果是的话,与每个平台的本机脚本语言相比,主要缺点是什么?

Answers:


6

对于Linux,OS X等上的通用脚本语言,Ruby是一个不错的选择。但是我最近需要编写一些脚本,这些脚本可以在2000到7的所有Windows版本上使用。VBScript没有我所需的功能( (例如与SOAP Web服务进行通信)和PowerShell在Windows 2000上不可用,因此我在Microsoft工具箱之外查看,并决定尝试一下Ruby(过去在Linux上使用过)。我并不完全后悔这个决定,但我确实想知道是否有更好的选择。我对Windows上Ruby的主要抱怨是:

  • 据我所知,没有适用于Windows的64位Ruby,这使得尝试访问系统虚拟化区域(如c:\ windows \ system32)变得很困难。最后,我花了一些时间向VBScript掏腰包。也许有一种更好的方法我没弄清楚。
  • 太慢了 我有一个四核CPU和6GB RAM,irb加载需要2+秒。
  • 尽管有Windows特定的库来存储诸如注册表访问和WMI之类的内容,但事情肯定并不总是像您认为的那么容易,并且相对缺乏文档的确会导致某些试验和错误。

尽管如此,事情基本上可以按照您期望的方式运行,并且我喜欢使用Ruby比操作系统中内置的任何工具都要好约一千倍,因此,至少可以说,对于Windows上的通用脚本,您可以做得比Ruby更差。


2

在跨平台(Windows,Linux,MAC)的可移植性以及自动执行不同类型的应用程序的能力方面,Ruby确实符合您的要求。AFAIK可以使用ruby库自动执行浏览器和命令行应用程序,但是我不确定基于GUI的工具(某些平台(如.NET带有Ruby绑定,在这方面可能会有所帮助))。

Ruby有大量的库,因此您应该能够自动执行许多适合脚本编写的任务。例如,您可以操纵不同文本格式的文件,访问网络,数据库等。但是,最好不要在本机红宝石中执行某些任务-例如,对视频进行编码(但是您始终可以使用Ruby调用其他工具来执行此操作)。

如果将它与BATCH和Shell脚本进行比较,则可以使用ruby来执行这些脚本可以执行的几乎所有任务。缺点可能是:

  • 您可能需要其他安装。
  • 其他人可能需要学习ruby来维护您的脚本。
  • 如果某个工具与某些其他脚本语言绑定,那么ruby可能无法在性能甚至访问功能方面与之匹配。例如,当您通过Ruby自动化浏览器时,您可能无法通过浏览器内部完成JavaScript所能完成的所有工作。

Rukuli可能涵盖了一些GUI测试面临的挑战
ljs.dev 2014年

0

我同意上述所有答案,但请记住Windows和POSIX具有特定于平台的差异,因此,如果脚本使用某些特定于平台的内容,则不能保证可以重用您的脚本。

Ruby对于一般的脚本很好,但是对性能却不是很好。无论如何,它允许您识别脚本内部平台并执行外部命令和脚本。


1
您应该知道,不能依靠StackExchange网站上的答案位置,因为相同数量的投票的答案是随机排列的。因此,您不应该说“我同意以上所有答案”之类的话
Adam Harte
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.