Tôi có thể sử dụng Ruby để tự động hóa mọi thứ không?


11

Tôi phải đối mặt với nhiều loại ứng dụng khác nhau (dựa trên web, dựa trên GUI, dòng lệnh, v.v.) trên các nền tảng khác nhau (Windows, Linux, v.v.) để hoạt động hàng ngày. Có một cơ hội tuyệt vời để tôi tự động hóa các tác vụ bằng cách viết kịch bản. Nhưng hầu hết mọi loại ứng dụng và nền tảng đều có ngôn ngữ hoặc công cụ kịch bản gốc (như VBScriptPowerShell cho Windows, Bash script cho Linux, Selenium cho các ứng dụng web và AutoIt cho các ứng dụng GUI, v.v.). Nó giết tôi để học và duy trì rất nhiều ngôn ngữ kịch bản.

Tôi có cảm giác rằng Ruby có thể tương tác với các nền tảng khác nhau một cách dễ dàng, và nó rất biểu cảm. Vì vậy, câu hỏi của tôi là:

  1. Có thể sử dụng Ruby để kịch bản mọi thứ?

  2. Nếu có, nhược điểm chính so với ngôn ngữ kịch bản gốc của mỗi nền tảng là gì?

Câu trả lời:


6

Ruby là một lựa chọn tốt cho ngôn ngữ kịch bản mục đích chung trên Linux, OS X, v.v. Nhưng gần đây tôi cần viết một số tập lệnh hoạt động trên mọi phiên bản Windows từ 2000 đến 7. VBScript không có chức năng tôi cần ( nói chuyện với các dịch vụ web SOAP chẳng hạn) và PowerShell không có sẵn cho Windows 2000, vì vậy tôi đã tìm bên ngoài bộ công cụ của Microsoft và quyết định cho Ruby một shot (trước đây đã sử dụng nó trên Linux). Tôi không hối hận chính xác về quyết định này, nhưng tôi tự hỏi liệu có thể có một lựa chọn nào tốt hơn không. Khiếu nại chính của tôi về Ruby trên Windows là:

  • Không có Ruby 64 bit cho Windows (theo như tôi biết) mà đã cố gắng truy cập các khu vực ảo hóa của hệ thống như c: \ windows \ system32 một cách kéo. Cuối cùng tôi đã tách ra VBScript cho một số thứ đó; có lẽ có một cách tốt hơn tôi đã không tìm ra.
  • Nó chậm. Tôi có CPU lõi tứ và RAM 6GB và irb mất hơn 2 giây để tải.
  • Mặc dù có các thư viện dành riêng cho Windows cho các công cụ như truy cập sổ đăng ký và WMI, nhưng mọi thứ chắc chắn không phải lúc nào cũng dễ dàng như bạn nghĩ và việc thiếu tài liệu tương đối sẽ dẫn đến một số thử nghiệm và lỗi.

Tuy nhiên, mọi thứ về cơ bản vẫn hoạt động theo cách bạn mong đợi và tôi thích làm việc với Ruby tốt hơn gấp ngàn lần so với bất kỳ thứ gì được tích hợp trong HĐH, vì vậy, ở mức tối thiểu, tôi nói bạn có thể làm tồi tệ hơn Ruby cho kịch bản mục đích chung trên Windows .


2

Ruby dường như phù hợp với yêu cầu của bạn liên quan đến tính di động trên các nền tảng (Windows, Linux, MAC) và khả năng tự động hóa các loại ứng dụng khác nhau. AFAIK bạn có thể tự động hóa trình duyệt và ứng dụng dòng lệnh bằng thư viện ruby ​​nhưng tôi không chắc về các công cụ dựa trên GUI (Một số nền tảng như .NET có các ràng buộc Ruby có thể hữu ích trong vấn đề này).

Ruby có số lượng lớn các thư viện để bạn có thể tự động hóa nhiều tác vụ phù hợp với kịch bản. Ví dụ: bạn có thể thao tác các tệp ở các định dạng văn bản khác nhau, mạng truy cập, cơ sở dữ liệu, v.v. Tuy nhiên, có thể không tốt nhất khi thực hiện một số tác vụ trong ruby ​​gốc - ví dụ: mã hóa video (nhưng bạn luôn có thể gọi các công cụ khác bằng Ruby để làm điều đó).

Nếu bạn đang so sánh nó với BATCH và Shell ScScript, ruby ​​có thể được sử dụng để thực hiện hầu hết mọi tác vụ mà các tập lệnh này có thể thực hiện. Nhược điểm có thể là:

  • Bạn có thể cần cài đặt bổ sung.
  • Những người khác có thể cần phải học ruby ​​để duy trì kịch bản của bạn.
  • Nếu một công cụ có ràng buộc với một số ngôn ngữ kịch bản lệnh khác, ruby ​​có thể không phù hợp với điều đó về hiệu suất hoặc thậm chí khả năng truy cập chức năng. Ví dụ: bạn không thể thực hiện mọi thứ có thể được thực hiện thông qua JavaScript từ bên trong trình duyệt khi bạn tự động hóa nó thông qua Ruby.

Rukuli có thể bao gồm một số thách thức thử nghiệm GUI phải đối mặt
ljs.dev

0

Tôi đồng ý với tất cả các câu trả lời ở trên nhưng hãy nhớ rằng Windows và POSIX có sự khác biệt cụ thể về nền tảng để không thể đảm bảo rằng bạn có thể sử dụng lại tập lệnh của mình nếu nó sử dụng một số nội dung cụ thể cho nền tảng.

Ruby là tốt cho kịch bản chung nhưng không thực sự tuyệt vời cho hiệu suất. Dù sao, nó cho phép bạn xác định nền tảng bên trong tập lệnh và thực thi các lệnh và tập lệnh bên ngoài.


1
Bạn nên biết rằng không thể dựa vào vị trí của câu trả lời trên các trang web StackExchange, vì các câu trả lời có cùng số phiếu được đặt theo thứ tự ngẫu nhiên. Vì vậy, bạn không nên nói những câu như "Tôi đồng ý với tất cả các câu trả lời ở trên "
Adam Harte
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.