Чи можна використовувати Ruby для автоматизації всього?


11

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

У мене таке відчуття, що Ruby може взаємодіяти з різними платформами легко, і це дуже виразно. Отже, моє питання:

  1. Можна використовувати Ruby для сценарію всього?

  2. Якщо це так, то які основні недоліки порівняно з рідною мовою сценаріїв кожної платформи?

Відповіді:


6

Ruby - чудовий вибір для мови сценаріїв загального призначення для Linux, OS X тощо. Але мені нещодавно потрібно було написати кілька сценаріїв, які працювали б у кожній версії Windows з 2000 по 7 рік. VBScript не мав потрібного мені функціоналу ( наприклад, розмовляючи з веб-сервісами SOAP) та PowerShell недоступний для Windows 2000, тому я заглянув поза набором інструментів Microsoft і вирішив дати знімок Рубі (використовував його в 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, але я не впевнений у інструментах на основі GUI (Деякі платформи, такі як .NET, мають прив'язки Ruby, які можуть бути корисними в цьому плані).

У Ruby є велика кількість бібліотек, тому ви повинні мати можливість автоматизувати безліч завдань, що підходять для сценаріїв. Наприклад, ви можете маніпулювати файлами в різних текстових форматах, мережі доступу, базі даних тощо. Однак, можливо, не найкраще виконувати деякі завдання в рідному рубіні - наприклад, кодування відео (але ви завжди можете використовувати інші інструменти, використовуючи Ruby для цього).

Якщо ви порівнюєте його з BATCH та Shell Scripts, рубін можна використовувати для виконання практично будь-яких завдань, які ці сценарії можуть виконувати. Недоліком може бути:

  • Можливо, вам знадобиться додаткова установка.
  • Іншим, можливо, доведеться вивчити рубін, щоб підтримувати ваші сценарії.
  • Якщо інструмент має прив'язку до якоїсь іншої мови сценаріїв, рубін може не відповідати цьому за показниками продуктивності або навіть можливістю доступу до функціональності. Наприклад, ви, можливо, не зможете зробити все, що можна зробити через JavaScript з браузера, коли ви автоматизуєте це через Ruby.

Rukuli може охопити деякі проблеми тестування графічного інтерфейсу
ljs.dev

0

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

Ruby чудово підходить для загального сценарію, але не дуже хороший для продуктивності. У будь-якому випадку це дозволяє ідентифікувати платформу всередині скрипту та виконувати зовнішні команди та сценарії.


1
Ви повинні знати, що на позицію відповідей на сайтах StackExchange не можна покладатися, оскільки відповіді на однакову кількість голосів ставляться у випадковому порядку. Тож не варто говорити такі речі, як "Я згоден з усіма відповідями вище "
Адам Харте
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.