Sejak memasang "dark" theme, saya cenderung menjadi malas menulis. Untuk sementara, dark theme saya disable dulu yaa. Terima kasih (^_^) (bandithijo, 2024/09/15) ●
Latar Belakang
Sebagai pemrogram yang menggunakan bahasa Ruby, pasti kita cukup sering berinteraksi dengan IRB (Interactive Ruby Shell).
Namun, saya tidak begitu menyukai prompt default dari IRB, karena cukup panjang.
irb(main):001:0> _
Sehingga, apabila digunakan, dalam banyak baris, baru akan terlihat “cukup mengganggu” –subjektif saya.
irb(main):001:0> 1 + 2
=> 3
irb(main):002:0> class Foo
irb(main):003:1> def foo
irb(main):004:2> print 1
irb(main):005:2> end
irb(main):006:1> end
=> nil
Saya lebih menyukai prompt yang minimalis saja.
Seperti ini.
>> _
Solusi
Kita dapat meng-override bentuk dari IRB prompt dengan menambahkan beberapa konfigurasi yang kita tulis pada file ~/.irbrc
.
Kalau file tersebut belum ada, buat dan tambahkan seperti baris di bawah.
1. Simple >>
1
2
3
4
5
6
7
8
9
IRB.conf[:PROMPT][:CUSTOM] = {
:PROMPT_I => ">> ",
:PROMPT_S => "%l> ",
:PROMPT_C => ".. ",
:PROMPT_N => ".. ",
:RETURN => "=> %s\n"
}
IRB.conf[:PROMPT_MODE] = :CUSTOM
IRB.conf[:AUTO_INDENT] = true
Hasilnya akan seperti ini.
>> 1 + 1
=> 2
.. class Foo
.. def foo
.. print 1
.. end
>> end
=> :foo
>> _
2. Line Number [01]>>
Kita juga dapat mengkostumisasi dengan menambahkan beberapa spesial string yang disediakan.
%N # command name which is running
%m # to_s of main object (self)
%l # type of string(", ', /, ]), `]' is inner %w[...]
%NNi # indent level. NN is digits and means as same as printf("%NNd").
%NNn # line number.
Misal, Untuk memberikan Line Number.
1
2
3
4
5
6
7
8
9
IRB.conf[:PROMPT][:CUSTOM] = {
:PROMPT_I => "[%02n]>> ",
:PROMPT_S => "[%02n]%l> ",
:PROMPT_C => "[%02n].. ",
:PROMPT_N => "[%02n].. ",
:RETURN => "=> %s\n"
}
IRB.conf[:PROMPT_MODE] = :CUSTOM
IRB.conf[:AUTO_INDENT] = true
%02n
adalah jumlah digit dari line number 01
.
Kalau ingin 3 digit, berarti %03n
=> 001
.
Hasilnya,
[01]>> 1 + 1
=> 2
[02].. class Foo
[03].. def foo
[04].. print 1
[05].. end
[06]>> end
=> :foo
[07]>> _
Nah, silahkan teman-teman berkreasi sendiri apabila ingin prompt yang berbeda.
Saya lebih suka menggunakan yang sederhan seperti ini.
Tips
1. Pry (IRB with Steroid)
Sebelum versi Ruby 2.7. IRB memiliki tampilan yang flat tanpa sintax highlighting. Namun, IRB sudah di-facelift pada versi 2.7 sehingga memiliki sintaks color yang sangat mempermudah.
Nah, sebelum IRB mendapatkan facelift tersebut, saya sudah lebih dahulu menggunakan alternatif dari IRB, yaitu Pry.
Pry sudah lebih dahulu menggunakan sintax highlighting dan juga memiliki beberapa fitur-fitur yang dapat mempermudah pekerjaan. Beberapa fitur dari Pry dapat kalian lihat di sini.
Instalasinya juga sangat mudah.
$ gem install pry
Apabila ingin meng-override IRB agar saat kita panggil, langsung menjalankan Pry.
Tambahkan baris berikut pada ~/.irbrc
.
1
2
3
4
5
6
7
8
9
10
11
# ...
# ...
# Force IRB to use Pry
begin
require "pry"
Pry.start
exit
rescue LoadError => e
warn "=> Unable to load pry"
end
Sekarang, saat kita jalankan IRB di Terminal.
$ irb
[1] pry(main)> _
Kalau ingin sedikit kostumisasi Pry pormpt, dapat melakukannya dengan membuat file ~/.pryrc
.
Bisa, isikan seperti ini, misalnya:
1
2
3
4
5
Pry.config.prompt = Pry::Prompt.new(
"custom",
"my custom prompt",
[ proc { ">> " }, proc { ".. " }]
)
Hasilnya,
>> 1 + 1
=> 2
>> class Foo
.. def foo
.. print 1
.. end
.. end
=> :foo
>> _
Jika ingin lebih jauh mengetahui tentang Pry, kalian dapat mengunjuni GitHub repositorinya, di sini.
Pesan Penulis
Sepertinya, segini dulu yang dapat saya tuliskan.
Mudah-mudahan dapat bermanfaat.
Terima kasih.
(^_^)
Referensi
-
stackoverflow.com/a/6041003/4862516
Diakses tanggal: 2020/09/13 -
ruby-doc.org/stdlib-2.7.1/libdoc/irb/rdoc/IRB.html
Diakses tanggal: 2020/09/13 -
rubyguides.com/2018/12/what-is-a-repl-in-ruby/
Diakses tanggal: 2020/09/13 -
blog.joshsoftware.com/2020/01/20/making-your-rails-console-interesting/
Diakses tanggal: 2020/09/13 -
github.com/pry/pry
Diakses tanggal: 2020/09/13
Lisensi
Atribusi-NonKomersial-BerbagiSerupa 4.0 Internasional (CC BY-NC-SA 4.0)
Penulis
My journey kicks off from reading textbooks as a former Medical Student to digging bugs as a Software Engineer – a delightful rollercoaster of career twists. Embracing failure with the grace of a Cat avoiding water, I've seamlessly transitioned from Stethoscope to Keyboard. Armed with ability for learning and adapting faster than a Heart Beat, I'm on a mission to turn Code into a Product.
- Rizqi Nur Assyaufi