Memperbarui Rails 5.2 ke Rails 6.1 di Fase 1
Sebuah aplikasi website yang dibangun dengan framework Ruby on Rails membutuhkan pemeliharaan. Di artikel ini saya mencoba berbagi pengalaman dalam melakukan proses pembaruan versi Ruby on Rails. Pembaruan versi memiliki keuntungan karena disetiap versi yang baru menawarkan performa dan keamanan yang lebih baik.
Saya mengacu pada artikel Upgrading Ruby On Rails dalam memperbarui versi Ruby on Rails. Saat ini versi terbaru dari Ruby on Rails adalah 6.1.4.1 (19 Agustus 2021). Di artikel ini saya berbagi pengalaman dalam rangkaian pembaruan ke versi 6.1.4.1 dari versi 5.2.2 (4 Desember 2018).
Rencana urutan pembaruan dari versi 5.2.2 ke versi Ruby on Rails terbaru terdapat beberapa tahap yaitu:
- 5.2.2.1 (Sudah selesai diperbarui)
- 5.2.6
- 6.0.4.1
- 6.1.4.1
Proses pembaruan dapat dilakukan dengan langkah sebagai berikut:
- Tulis pengujian dan pastikan pengujian otomatisasi berhasilSangat dianjurkan untuk membuat pengujian otomatis terlebih dahulu sebelum melakukan pembaruan versi Ruby on Rails. Mulailah dengan pengujian integrasi terlebih dahulu dari pada pengujian unit (kasus ini untuk Anda yang belum pernah menuliskan pengujian otomatis) untuk mempercepat pengujian.
- Menentukan versi patch terakhir di versi saat ini.Untuk melihat daftar versi Ruby on Rails bisa mengunjungi Rails Versions. Semisal aplikasi Anda memiliki versi 5.2.2. Setelah melihat daftar versi Ruby on Rails tercatat versi patch terakhir adalah versi 5.2.2.1. Untuk mengubah versi dapat menganti versi gem rails di Gemfile. Kemudian jalankan perintah:
bundle update
- Lakukan pengujianMaafaat pengujian unit atau pengujian integrasi (Rspec) dapat dirasakan ketika kita ingin melakukan perubahan versi Ruby on Rails. Lakukan pengujian dengan perintah di bawah ini:rspec specrails serverrails consoleJika ada pesan deprecated (usang) lakukanlah perbaikan di sintakis pengujian otomatisnya.
- Pindah ke versi patch terakhir dari versi minor selanjutnyaUntuk mengubah versi Ruby on Rails sebaiknya dilakukan dengan perlahan mulai dari patch, minor dan major. Patch minor terakhir dari versi 5.2.2.1 adalah 5.2F.6. Di tahap ini bisa dilakukan setelah langkah ke-2 untuk versi 5.2.2.1 sudah diterapkan di production. Kita perlu memisahkan setiap versi di langkah ke-4 ke dalam tiket yang berbeda agar dapat memantau perubahan versi yang dilakukan. Ketika tidak ada laporan dari pengguna atau tim penguji tentang kesalahan aplikasi, Anda bisa melajukan langkah ke-4.
Ulangi langkah - langkah di atas sampai menemukan versi yang diinginkan misalnya dari 5.2.6 ke 6.0.1 selanjutnya 6.1.4.1.
Petunjuk tambahan:
- Pembaruan versi Ruby dan Ruby on Rails perlu dipisah untuk tiketnya
- Tambahkan versi disetiap gem yang digunakanDengan menambahkan versi akan membantu mempermudah dalam proses memperbaharui gem.Misalnya aplikasi kita menggunakan gem puma. Ketika dicek di Gemfile, gem puma ternyata belum ada versi yang spesifik sehingga perlu ditambahkan versinya. Untuk melihat versi terkini yang dipakai di aplikasi adalah dengan menjalankan perintah:
gem list | grep puma
Setelah mengetahui versinya, ubah dan tambahkan versi di gem puma menjadi:gem 'puma', '~> 3.12.0' (sama dengan 3.12.0 atau lebih besar dari 3.12.0 tetapi kurang dari 3.13.0)
- Saat memperbaiki Ruby on Rails sebaiknya juga memperbaiki gem pendukung lainnya secara bersamaan. Gunakan acuan pembaruan Ruby on Rails di atas untuk memperbarui gem pendukung. Mulailah dengan patch, minor kemudian major. Perintahnya untuk mengetahui gem yang perlu diubah adalah:
bundle outdated --filter-patch (patch/minor/major)
Misalnya: Ketika kita mengubah versi patch untuk gem rails ke 5.2.2.1 sebaiknya juga mengubah versi gem pendukung lain ke versi patch juga yaitu gem puma dari dari versi 3.12.0 ke versi 3.12.6. Perintah yang digunakan untuk melakukan perubahan gem pendukung adalah:bundle install
Kesimpulan:
Untuk mendapatkan pengalaman terbaik dalam memperbarui versi Ruby on Rails adalah membuat pengujian otomatis terlebih dahulu. Mulailah dari versi patch dari gem Ruby on Rails dan gem pendukung lainnya. Setelah versi patch sudah berhasil di deploy ke production lakukanlah perubahan versi minor dan major dengan memisahkan tiketnya. Semoga bermanfaat.
Komentar
Posting Komentar
terimakasih komentarnya