Ruby'yi her şeyi otomatikleştirmek için kullanabilir miyim?


11

Her gün çalışmak için çeşitli platformlarda (Windows, Linux vb.) Çeşitli uygulama türleriyle (web tabanlı, GUI tabanlı, komut satırı vb.) Karşılaşıyorum. Komut dosyası yazarak görevleri otomatikleştirmem için büyük bir fırsat var. Ancak hemen hemen her tür uygulama ve platformun yerel komut dosyası dili veya araçları vardır ( Windows için VBScript ve PowerShell , Linux için Bash komut dosyaları, web uygulamaları için Selenium ve GUI uygulamaları için AutoIt gibi). Bu kadar çok komut dosyası dili öğrenmek ve sürdürmek beni öldürüyor.

Ruby'nin çeşitli platformlarla kolayca birlikte çalışabileceğini hissediyorum ve çok etkileyici. Benim sorum şu:

  1. Her şeyi kodlamak için Ruby kullanmak mümkün müdür?

  2. Öyleyse , her platformun yerel komut dosyası dili ile karşılaştırıldığında ana dezavantajları nelerdir?

Yanıtlar:


6

Ruby, Linux, OS X, vb. Genel amaçlı bir betik dili için iyi bir seçimdir. Ancak son zamanlarda 2000'den 7'ye kadar her Windows sürümünde çalışacak bazı komut dosyaları yazmam gerekiyordu. VBScript, ihtiyacım olan işlevselliğe sahip değildi ( Örneğin SOAP web hizmetleriyle konuşuyor) ve PowerShell Windows 2000 için kullanılamıyor, bu yüzden Microsoft araç setinin dışına baktım ve Ruby'ye bir şans vermeye karar verdim (geçmişte Linux'ta kullandım). Karardan tam olarak pişman değilim, ama daha iyi bir seçim olup olmadığını merak ediyorum. Windows'ta Ruby ile ilgili ana şikayetlerim şunlardı:

  • Windows için 64-bit Ruby (bildiğim kadarıyla), sistemin c: \ windows \ system32 gibi sanallaştırılmış alanlarına erişmeyi deneyen bir sürükleme yok. Bazı şeyler için VBScript bombardımanı sona erdi; belki de çözemediğim daha iyi bir yol var.
  • Yavaş. Dört çekirdekli bir CPU'um ve 6GB RAM'im var ve irb yüklemesi 2+ saniye sürüyor.
  • Kayıt defteri erişimi ve WMI gibi şeyler için Windows'a özel kütüphaneler olsa da, işler kesinlikle düşündüğünüz kadar kolay değildir ve göreli belge eksikliği bazı deneme yanılmalarına neden olur.

Yine de, işler temelde beklediğiniz gibi çalışır ve Ruby ile işletim sisteminde yerleşik olan her şeyden yaklaşık bin kat daha iyi çalışmayı seviyorum, bu yüzden en azından Windows'ta genel amaçlı komut dosyası yazmak için Ruby'den daha kötü yapabileceğinizi söyleyebilirim .


2

Ruby, platformlar arasında taşınabilirlik (Windows, Linux, MAC) ve farklı türdeki uygulamaları otomatikleştirme yeteneği ile ilgili gereksinimlerinizi karşılamaktadır. AFAIK, ruby ​​kütüphanelerini kullanarak tarayıcıları ve komut satırı uygulamalarını otomatikleştirebilirsiniz, ancak GUI tabanlı araçlardan emin değilim (.NET gibi bazı platformlarda bu konuda yardımcı olabilecek Ruby bağları vardır).

Ruby'nin çok sayıda kütüphanesi vardır, bu nedenle komut dosyası oluşturmaya uygun birçok görevi otomatikleştirebilmeniz gerekir. Örneğin, dosyaları farklı metin biçimlerinde, erişim ağında, veritabanında vb. Manipüle edebilirsiniz. Bununla birlikte, yerel yakutta bazı görevler yapmak en iyisi olmayabilir - örneğin, videoları kodlamak (ancak her zaman Ruby'yi kullanarak bunu yapmak için diğer araçları çağırabilirsiniz).

BATCH ve Kabuk Komut Dosyaları ile karşılaştırıyorsanız, ruby ​​bu komut dosyalarının yapabileceği hemen hemen tüm görevleri gerçekleştirmek için kullanılabilir. Dezavantajı şunlar olabilir:

  • Ek kurulum gerekebilir.
  • Diğerlerinin senaryolarınızı korumak için yakut öğrenmesi gerekebilir.
  • Bir aracın başka bir komut dosyası dili ile bağlanması durumunda, ruby ​​bunu performans veya hatta işlevselliğe erişme yeteneği açısından eşleştiremeyebilir. Örneğin, Ruby aracılığıyla otomatikleştirirken bir tarayıcının içinden JavaScript aracılığıyla yapılabilecek her şeyi yapamayabilirsiniz.

Rukuli , karşılaşılan GUI test zorluklarının bazılarını kapsayabilir
ljs.dev 17:04

0

Yukarıdaki tüm yanıtları kabul ediyorum, ancak Windows ve POSIX'in platforma özgü farklılıkları olduğunu aklınızda bulundurun, bu nedenle bazı platforma özgü şeyler kullanıyorsa komut dosyanızı yeniden kullanabileceğinizi garanti edemezsiniz.

Ruby genel kodlama için iyidir, ancak performans için gerçekten harika değildir. Her neyse, komut dosyası içindeki platformu tanımlamanıza ve harici komutları ve komut dosyalarını yürütmenize izin verir.


1
Aynı miktarda oy içeren cevaplar rastgele bir sıraya konduğundan, StackExchange sitelerindeki cevapların konumuna güvenilemeyeceğini bilmelisiniz. Eğer "Bütün cevapları ile anlaşmak gibi şeyler söylememeli Yani yukarıda "
Adam Harte
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.