Ruby, Bahasa Hebat yang Cocok untuk Skrip Shell
(lucasoshiro.github.io)- 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
systemataupopen.`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, danflat_mapsebagai method. - Kita bisa menerapkan
mappada 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 kelasDir. - 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
Dipakai untuk scripting juga sepertinya oke, hehe. Saya tidak tahu versinya, tapi bukannya Ruby juga sudah terpasang secara bawaan di Mac,,?!
Ruby yang dulu pernah saya sukai... saya harap, walau dengan cara seperti ini (?), Ruby tetap menjadi bahasa yang terus dicintai banyak orang.
Opini Hacker News
binding.irbataubinding.pry, debugging dapat dilakukan secara interaktif di dalam skrip.Pathnamemenyediakan API yang lebih alami dibandingFile.Parallel, pemrosesan paralel menjadi lebih praktis.