Jika kamu seperti saya yang ingin mencoba kerangka kerja Rails versi terbaru dari ranting master di GitHub, ketahuilah bahwa opsi --edge pada perintah rails new sebenarnya tidak mengacu pada ranting master ๐Ÿ˜….

Saat ini, ranting master untuk Rails adalah versi 6.0.0.beta3. Sedangkan --edge mengacu pada versi terbaru yang lebih stabil, yakni 5.2.2.1.

Untuk memasang Rails versi paling berdarah-darah (bleeding edge), saya mesti mengkloning dari GitHub Rails terlebih dahulu.

$ git clone git@github.com:rails/rails.git
$ cd rails
$ bundle install

Namun saya gagal ๐Ÿ’ฅ di langkah bundle install karena pesan galat ini: extconf failure: need libxml2. Oh, ternyata butuh libxml2, jadi saya mesti memasangnya terlebih dahulu. Eh, ternyata Mac sudah memiliki libxml2 ๐Ÿคทโ€โ™‚๏ธ, lantas apa maksud pesan galat ini?

Ternyata Mac Mojave (10.14) telah memperbaharui Xcode yang mengakibatkan libxml2 tidak dapat ditemukan oleh gem libxml-ruby. Singkat cerita, saya berhasil membetulkannya dengan mengikuti arahan dari dokumentasi tersebut.

Lanjut, saya kemudian membuat aplikasi Rails terbaru (rails-playground) menggunakan binary dari repository Rails, bukan dari gem (pustaka):

$ ./railties/exe/rails new ../rails-playground --dev

Pada berkas GemFile bisa dilihat bahwa gem Rails mengacu pada direktori lokal: gem 'rails' path: '/jalan/ke/direktori/rails'. Ini berarti bahwa setiap pembaruan pada https://github.com/rails/rails, kita tinggal melakukan menarik dengan git pull dan kemudian melakukan bundle install. Tidak perlu menunggu rilis di https://rubygems.org.

Mengapa memasang versi yang tidak stabil?

Langkah awal untuk melakukan kontribusi di proyek kode sumber terbuka adalah dengan memasang versi terbaru. Versi terbaru yang dirilis di publik tidak selalu stabil.

Dalam dokumentasinya, Rails memberikan dua opsi untuk memasang Rails --dev:

  • cara mudah: menggunakan Vagrant untuk menciptakan Virtual Machine
  • cara keji: seperti yang saya coba lakukan ini ๐Ÿ˜…, namun saya baru tahap pembuatan aplikasi saja, belum sampai testing

Tidak semua proyek kode sumber terbuka memiliki langkah sekompleks ini. Dalam kasus Rails, hal ini terjadi karena Rails sebenarnya adalah sebuah gem yang dirilis di sebuah web pengelola gem: rubygems.org. Seringkali gem yang rilis di sana tertinggal kode sumbernya (GitHub). Inilah mengapa instalasi yang lebih masih sering dilakukan.

Tidak hanya untuk kontribusi saja, dari pembuatan aplikasi Rails ini, saya mempelajari bahwa ternyata ada perubahan dibandingkan versi sebelummya (5.2). Di versi 6 ini:

  • webpacker langsung terpasang dengan yarn
  • coffeescript-rails tidak ada lagi, kamu tetap bisa memanggilnya kembali dengan yarn

Ini menjadi bekal yang cukup untuk memutakhirkan aplikasi Rails yang saya kelola ๐Ÿ’ฏ.