Могу ли я использовать Ruby для автоматизации всего?

11

Я сталкиваюсь с различными типами приложений (веб-приложений, графических интерфейсов, командной строки и т. Д.) На разных платформах (Windows, Linux и т. Д.) Для повседневной работы. Для меня есть прекрасная возможность автоматизировать задачи с помощью сценариев. Но почти у каждого типа приложений и платформ есть свой родной язык сценариев или инструменты (такие как VBScript и PowerShell для Windows, сценарии Bash для Linux, Selenium для веб-приложений и AutoIt для приложений с графическим интерфейсом и т. Д.). Это убивает меня, чтобы выучить и поддерживать так много языков сценариев.

У меня есть ощущение, что Ruby может легко взаимодействовать с различными платформами, и это очень выразительно. Итак, мой вопрос:

  1. Можно ли использовать Ruby для написания всего?

  2. Если да, то каковы основные недостатки по сравнению с родным языком сценариев каждой платформы?

TomCaps
источник

Ответы:

6

Ruby - прекрасный выбор для языка сценариев общего назначения в Linux, OS X и т. Д. Но недавно мне нужно было написать несколько сценариев, которые работали бы на каждой версии Windows с 2000 по 7. VBScript не имел необходимой мне функциональности ( например, для веб-служб SOAP), а PowerShell недоступен для Windows 2000, поэтому я посмотрел за пределы инструментария Microsoft и решил попробовать Ruby (ранее он использовался в Linux). Я не очень сожалею о решении, но мне интересно, если бы был лучший выбор. Моими основными жалобами на Ruby в Windows были:

  • Насколько мне известно, 64-разрядного Ruby для Windows не было, что затрудняло доступ к виртуализированным областям системы, таким как c: \ windows \ system32. Я закончил тем, что выкладывал VBScript для некоторых из этих вещей; может быть, есть лучший способ, который я не понял.
  • Это медленно. У меня есть четырехъядерный процессор и 6 ГБ оперативной памяти, а для загрузки irb требуется более 2 секунд.
  • Хотя существуют специальные библиотеки для Windows для таких вещей, как доступ к реестру и WMI, все определенно не всегда так просто, как вы думаете, и относительное отсутствие документации действительно приводит к пробам и ошибкам.

Тем не менее, все в основном работает так, как вы ожидаете, и мне нравится работать с Ruby примерно в тысячу раз лучше, чем что-либо встроенное в ОС, поэтому, как минимум, я бы сказал, что вы можете сделать хуже, чем Ruby, для сценариев общего назначения в Windows ,

Мартин
источник
2

Кажется, что Ruby соответствует вашим требованиям в отношении переносимости между платформами (Windows, Linux, MAC) и способности автоматизировать различные типы приложений. AFAIK. Вы можете автоматизировать браузеры и приложения командной строки, используя библиотеки ruby, но я не уверен насчет инструментов на основе графического интерфейса (некоторые платформы, такие как .NET, имеют привязки Ruby, которые могут быть полезны в этом отношении).

Ruby имеет большое количество библиотек, поэтому вы сможете автоматизировать множество задач, подходящих для написания сценариев. Например, вы можете манипулировать файлами в различных текстовых форматах, получать доступ к сети, базе данных и так далее. Тем не менее, может быть не лучше выполнять некоторые задачи в нативном ruby, например, кодировать видео (но вы всегда можете вызвать другие инструменты, используя Ruby для этого).

Если вы сравниваете его со сценариями BATCH и Shell, ruby ​​может использоваться для выполнения практически любых задач, которые могут выполнять эти сценарии. Недостатком может быть:

  • Вам может понадобиться дополнительная установка.
  • Другим, возможно, придется изучать ruby ​​для поддержки ваших сценариев.
  • Если инструмент связан с каким-либо другим языком сценариев, ruby ​​может не соответствовать этому с точки зрения производительности или даже возможности доступа к функциональности. Например, вы не сможете делать все, что можно сделать с помощью JavaScript из браузера, когда автоматизируете его с помощью Ruby.
Satyajit
источник
Rukuli может покрыть некоторые проблемы тестирования GUI
ljs.dev
0

Я согласен со всеми приведенными выше ответами, но имейте в виду, что Windows и POSIX имеют различия в зависимости от платформы, поэтому он не может гарантировать, что вы сможете повторно использовать свой сценарий, если он использует некоторые специфичные для платформы вещи.

Ruby отлично подходит для общих сценариев, но не очень хорош для производительности. В любом случае это позволяет идентифицировать платформу внутри скрипта и выполнять внешние команды и скрипты.

AB
источник
1
Вы должны знать, что на позицию ответов на сайтах StackExchange нельзя полагаться, поскольку ответы с одинаковым количеством голосов располагаются в случайном порядке. Поэтому вы не должны говорить такие вещи, как «Я согласен со всеми ответами выше »
Адам Харт