12 poin oleh GN⁺ 2024-06-24 | 3 komentar | Bagikan ke WhatsApp
  • Ruby sering kali diasosiasikan terutama dengan framework Rails sehingga orang mudah melupakan keunggulan bahasa ini
  • Ruby adalah bahasa yang sangat kaya dan matang, dan sangat berguna khususnya saat menulis skrip shell yang kompleks
  • Tujuan tulisan ini
    • menunjukkan fitur-fitur Ruby yang berguna saat menulis skrip shell, serta membandingkannya dengan Bash dan Python
    • bukan untuk sepenuhnya menggantikan skrip Bash dengan skrip Ruby

Fitur 1: Memanggil perintah eksternal

  • Di Ruby, pemanggilan perintah eksternal menggunakan backtick(```).
  • Misalnya, dengan backtick kita bisa menyimpan output perintah eksternal ke dalam variabel.
  • Kita juga bisa menggunakan system atau popen.
    `ls`  
    
  • Output perintah dapat disimpan ke dalam variabel.
    my_date=`date`  
    

Fitur 2: Kode status

  • Kita bisa memeriksa kode status dari perintah terakhir dengan variabel $?
  • Sangat mirip dengan Bash
    `true`  
    puts $? # 0  
    `false`  
    puts $? # 1  
    

Fitur 3: Bahasa bertipe

  • Ruby bukan bahasa bertipe statis, tetapi tetap memiliki tipe.
  • Sebagai bahasa berorientasi objek, semuanya diperlakukan sebagai objek.
  • Tidak seperti Bash, kita bisa menggunakan tipe selain string dengan aman.
    total_lines = `wc -l my_file`.to_i # bilangan bulat yang berisi jumlah baris file  
    half = total_lines.div 2           # pembagian bilangan bulat  
    puts `head -n #{half} my_file`     # mencetak setengah isi file  
    

Fitur 4: Komposisi fungsional

  • Ruby mengimplementasikan operasi fungsional seperti map, select (filter), reduce, dan flat_map sebagai method.
  • Kita bisa menerapkan map pada output perintah.
    puts `ls`.lines.map { |name| name.strip.length } # mencetak panjang nama file  
    

Fitur 5: Pencocokan regular expression

  • Di Ruby, regular expression adalah sebuah tipe, dan operasi untuk menggunakannya sudah tersedia secara bawaan.
  • Contohnya, cara mengambil nama branch git saat ini:
    current_branch_regex = /^\* (\S+)/  
    output_lines = `git branch`.lines  
    output_lines.each do |line|  
      if line =~ current_branch_regex # mencocokkan string dan regular expression  
        puts $1                       # mencetak hasil cocok dari grup pertama  
      end  
    end  
    

Fitur 6: Thread yang mudah

  • Ruby sangat mudah digunakan untuk menangani banyak thread
  • Misalnya, ini berguna saat mengunduh banyak file secara bersamaan
    (1..10).map do |i|                       # perulangan dari 1 sampai 10  
      Thread.new do  
        `wget http://my_site.com/file_#{i}`  # variabel bisa digunakan di dalam perintah  
      end  
    end.each { |thread| thread.join }        # do/end dan kurung kurawal memiliki tujuan yang sama  
    

Fitur 7: Operasi file dan direktori bawaan

  • Di Ruby, semua operasi file disediakan sebagai method dari kelas File, dan operasi direktori sebagai method dari kelas Dir.
  • Tidak seperti Python, file dan direktori bisa ditangani dengan cara yang konsisten.
    exists = File.exists? 'My File'           # method yang mengembalikan boolean diakhiri dengan '?'  
    file_content = File.open('My File').read  
    File.delete 'My File'                     # tanda kurung bersifat opsional jika tidak menimbulkan ambiguitas  
    

Kesimpulan

  • Saat ingin menggantikan skrip shell yang kompleks, Ruby layak dipertimbangkan
  • Tentu ini bukan berarti Bash harus ditinggalkan sepenuhnya, tetapi untuk pekerjaan yang kompleks Ruby bisa menjadi pilihan yang lebih baik
  • Ini juga bisa dilakukan dengan Python, Perl, JS, dan lainnya, tetapi secara pribadi Ruby terasa sebagai bahasa yang paling lengkap dan paling mudah digunakan

Opini GN⁺

  • Ruby mendukung pemrograman berorientasi objek dan fungsional sekaligus, sehingga dapat mengakomodasi berbagai gaya pemrograman.
  • Dibandingkan Python, Ruby mengikuti paradigma berorientasi objek yang lebih ketat.
  • Saat menulis skrip shell, semakin tinggi kompleksitasnya, semakin menonjol keunggulan Ruby.
  • Fitur penanganan thread di Ruby memudahkan implementasi pekerjaan paralel.
  • Operasi file dan direktori disediakan secara intuitif dan konsisten sehingga meningkatkan produktivitas.

3 komentar

 
yangeok 2024-07-05

Dipakai untuk scripting juga sepertinya oke, hehe. Saya tidak tahu versinya, tapi bukannya Ruby juga sudah terpasang secara bawaan di Mac,,?!

 
botplaysdice 2024-06-24

Ruby yang dulu pernah saya sukai... saya harap, walau dengan cara seperti ini (?), Ruby tetap menjadi bahasa yang terus dicintai banyak orang.

 
GN⁺ 2024-06-24
Opini Hacker News
  • Ruby mewarisi banyak fitur shell scripting dari Perl, dan menyediakan opsi untuk meningkatkan keterbacaan secara bertahap.
  • Dengan binding.irb atau binding.pry, debugging dapat dilakukan secara interaktif di dalam skrip.
  • Pathname menyediakan API yang lebih alami dibanding File.
  • Backtick (`) bisa digunakan untuk menjalankan perintah shell sederhana, tetapi untuk pekerjaan yang lebih kompleks, pustaka standar Ruby bisa dimanfaatkan.
  • Thread di Ruby mudah digunakan, dan dengan Parallel, pemrosesan paralel menjadi lebih praktis.
  • Ruby 2.6 yang terpasang bawaan di MacOS masih cukup layak dipakai, tetapi sebaiknya ditingkatkan ke versi terbaru.
  • Ruby adalah bahasa yang hebat, tetapi dukungan editornya masih kalah dibanding Python.
  • Menggunakan backtick (`) untuk menjalankan perintah shell tidak efisien dan bisa berperilaku berbeda tergantung OS.
  • Fitur manajemen dependensi inline di Ruby sangat berguna, dan menyediakan fungsi yang mirip dengan Deno.
  • Ruby memungkinkan penulisan kode yang indah dan cocok untuk membuat skrip kecil.
  • Ruby sangat berguna untuk menulis skrip otomasi yang kompleks, dan pekerjaan seperti itu lebih mudah dilakukan dibanding dengan bash atau powershell.
  • Ruby masih banyak digunakan untuk menulis skrip dan alat bantu di perusahaan yang memakai monolit Rails berskala besar.
  • Di lingkungan tanpa akses internet, penting untuk menggunakan bahasa yang sudah terpasang di distribusi bawaan.
  • Ruby berguna untuk menulis skrip shell auto-completion dan membuat utilitas dengan cepat. Rails cocok untuk membuat MVP.