Mengenal Framework Aplikasi Web Ruby On Rails – Ruby on Rails atau Rails adalah framework aplikasi web sisi server yang ditulis dalam Ruby di bawah lisensi MIT. Rails adalah framework model-view-controller (MVC) yang menyediakan struktur default untuk database, layanan web, dan halaman web.

Mengenal Framework Aplikasi Web Ruby On Rails
Source : digitalocean

Framework Aplikasi Web Ruby On Rails

Ruby On Rails mendorong dan mempromosikan penggunaan standar web (seperti JSON atau XML) untuk transmisi data, dan penggunaan HTML, CSS, dan JavaScript untuk antarmuka pengguna. Selain MVC, Rails menekankan penggunaan pola dan paradigma rekayasa perangkat lunak terkenal lainnya, termasuk konvensi atas konfigurasi (CoC), tidak mengulangi diri Anda sendiri (KERING), dan mode perekaman aktivitas.

Kemunculan Ruby on Rails pada tahun 2005 telah sangat mempengaruhi perkembangan aplikasi Web melalui pembuatan tabel database yang mulus, migrasi dan perancah tampilan dan fungsi inovatif lainnya, sehingga mewujudkan pengembangan aplikasi yang cepat.

Pengaruh Ruby on Rails pada kerangka kerja web lain masih terlihat jelas hingga saat ini. Banyak kerangka bahasa lain yang memanfaatkan ide mereka, termasuk Django dengan Python, Catalyst di Perl, Laravel di PHP, CakePHP dan Yii, Grails di Groovy, Phoenix di Elixir, dimainkan di Scala, dan Sails.js di Node.js.

Baca Juga : Definisi Progressive Web App Dan Cara Kerjanya

Beberapa situs terkenal yang menggunakan Ruby on Rails termasuk Airbnb, Crunchbase, Bloomberg, dan Dribbble.

Sejarah Ruby On Rails

Sejarah Ruby On Rails
Source : virgool.io

David Heinemeier Hansson mengekstrak Ruby on Rails dari pekerjaannya di Basecamp, alat manajemen proyek di perusahaan aplikasi web Basecamp (kemudian 37Signals). Hansson pertama kali merilis Rails sebagai open source pada Juli 2004, tetapi tidak berbagi hak untuk mengirimkan proyek hingga Februari 2005. X v10.5 “Leopard”, dirilis pada Oktober 2007.

Rails versi 2.3 dirilis pada 15 Maret 2009, dengan perkembangan baru yang besar pada template, mesin, Rack dan bentuk model bersarang. Template memungkinkan pengembang untuk menghasilkan aplikasi kerangka kerja dengan permata dan konfigurasi khusus.

Mesin ini memungkinkan pengembang untuk menggunakan kembali fragmen aplikasi lengkap dengan perutean, jalur tampilan, dan model. Rack web server interface dan Metal memungkinkan untuk menulis kode yang dioptimalkan di sekitar perutean Action Controller.

Pada tanggal 23 Desember 2008, kerangka aplikasi web lain Merb diluncurkan. Ruby on Rails mengumumkan bahwa mereka akan bekerja sama dengan proyek Merb untuk memperkenalkan “ide-ide terbaik Merb” ke dalam Rails 3, mengakhiri “duplikasi yang tidak perlu” di kedua komunitas tersebut. Merb digabungkan dengan Rails sebagai bagian dari Rails 3.0.

Rails 3.1 dirilis pada tanggal 31 Agustus 2011, dengan migrasi database yang dapat dibalik, jalur aset, streaming, jQuery sebagai pustaka JavaScript default, dan fungsi memperkenalkan CoffeeScript dan Sass yang baru diperkenalkan ke dalam stack.

Rails 3.2 dirilis pada 20 Januari 2012, dengan model pengembangan yang lebih cepat dan mesin perutean (juga dikenal sebagai mesin Perjalanan), interpretasi kueri otomatis, dan menandai catatan log. Rails 3.2.x adalah versi terakhir yang mendukung Ruby 1.8.7. Rails 3.2.12 mendukung Ruby 2.0

Rails 4.0 dirilis pada 25 Juni 2013. Ini memperkenalkan cache boneka Rusia, Turbolinks, streaming real-time, dan membuat Sumber Daya Aktif, Pengamat Rekaman Aktif dan komponen lain opsional dengan membaginya menjadi permata.

Rails 4.1 dirilis pada 8 April 2014 dan memperkenalkan Spring, Variants, Enums, Mailer preview dan secret.yml.

Rails 4.2 dirilis pada 19 Desember 2014, dan memperkenalkan pekerjaan aktif, email asinkron, logging yang tepat, konsol web, dan kunci asing.

Rails 5.0 dirilis pada 30 Juni 2016, memperkenalkan Action Cable, API mode, dan Turbolinks5.

Rails 5.0.0.1 dirilis pada 10 Agustus 2016. Rails secara eksklusif menggunakan CLI pada Rake dan mendukung Ruby 2.2.2 dan yang lebih tinggi.

Rails 5.1 dirilis pada 27 April 2017, memperkenalkan perubahan integrasi JavaScript (mengelola dependensi JavaScript dari NPM melalui Yarn, menggunakan Webpack untuk kompilasi opsional JavaScript, dan menulis ulang UJS Rails untuk menggunakan vanilla JavaScript alih-alih mengandalkan jQuery), Uji sistem menggunakan Kapibara, kerahasiaan terenkripsi, email berparameter, perutean langsung dan diselesaikan, dan penggunaan helper sebagai pengganti form_tag / form_for helper unity.

Baca Juga : Cara Membuat Editor Pixel Art Menggunakan Kanvas HTML5

Rails 5.2 dirilis pada 9 April 2018, memperkenalkan fitur-fitur baru, termasuk ActiveStorage, penyimpanan cache Redis built-in, kredensial Rails yang diperbarui, dan DSL baru, yang dapat mengonfigurasi kebijakan keamanan konten untuk aplikasi.

Rails 5.2.2 dirilis pada 4 Desember 2018, dan memperkenalkan banyak perbaikan bug dan peningkatan logika.

Rails 6.0 dirilis pada 16 Agustus 2019, menjadikan Webpack sebagai pengaturan default, menambahkan perutean kotak surat, editor teks kaya online default, pengujian paralel, dukungan beberapa database, perutean program email dan pemuat otomatis baru.

Rails 6.1 dirilis pada 9 Desember 2020. Rails 6.1 menambahkan pengalihan koneksi untuk setiap database, sharding database horizontal, ingin memuat semua asosiasi, sebagai tipe delegasi alternatif untuk pewarisan tabel tunggal, penghapusan asosiasi asinkron, objek kesalahan, dan peningkatan lainnya. Bug perbaikan.

Tinjauan Teknis Ruby On Rails

Tinjauan Teknis Ruby On Rails
Source : adrianmejia.com

Seperti kerangka kerja web lainnya, Ruby on Rails menggunakan pola model-view-controller (MVC) untuk mengatur pemrograman aplikasi.

Dalam konfigurasi default, model dalam kerangka kerja Ruby on Rails dipetakan ke tabel dan file Ruby dalam database. Misalnya, biasanya kelas model Pengguna akan ditentukan dalam file “user.rb” di direktori app / models dan ditautkan ke tabel “users” di database. Meskipun pengembang bebas untuk mengabaikan konvensi ini dan memilih nama yang berbeda untuk model, file, dan tabel database mereka, ini bukan praktik umum dan biasanya tidak disarankan berdasarkan filosofi “konfigurasi menurut konvensi”.

Kontroler adalah komponen sisi server dari Rails, yang menanggapi permintaan eksternal dari server web ke aplikasi dengan menentukan file tampilan yang akan dirender. Pengontrol mungkin juga harus menanyakan satu atau lebih model untuk informasi dan kemudian meneruskannya ke tampilan.

Misalnya, dalam sistem reservasi maskapai penerbangan, pengontrol yang mengimplementasikan fungsi pencarian penerbangan perlu menanyakan model yang mewakili penerbangan tunggal untuk menemukan penerbangan yang cocok dengan pencarian, dan mungkin juga perlu menanyakan model yang mewakili bandara dan maskapai penerbangan untuk menemukan data tambahan yang relevan .

Pengontrol kemudian dapat meneruskan subset tertentu dari data penerbangan ke tampilan yang sesuai, yang akan berisi campuran logika dan HTML statis. HTML dan logika statis ini menggunakan data penerbangan untuk membuat dokumen HTML dengan tabel untuk setiap Satu baris penerbangan . Pengontrol dapat memberikan satu atau lebih tindakan.

Baca Juga : Pengertian Framework Rails Pada Pemrograman Ruby

Di Ruby on Rails, operasi biasanya merupakan unit dasar, yang menjelaskan bagaimana menanggapi permintaan browser web eksternal tertentu. Selain itu, harap diperhatikan bahwa hanya dengan memetakan rute yang sesuai ke pengontrol / tindakan, permintaan web eksternal dapat mengakses pengontrol / tindakan. Rails mendorong pengembang untuk menggunakan perutean RESTful, termasuk operasi seperti membuat, membuat, mengedit, memperbarui, menghancurkan, menampilkan, dan mengindeks. Pemetaan permintaan / rute yang masuk ke tindakan pengontrol ini dapat dengan mudah disetel di file konfigurasi route.rb.

Dalam konfigurasi default Rails, view adalah file erb yang akan dievaluasi dan dikonversi ke HTML saat runtime. Alternatifnya, banyak sistem templat lain yang dapat digunakan untuk tampilan.

Ruby on Rails menyertakan alat yang dapat membuat tugas pengembangan umum “di luar kotak” lebih mudah, seperti perancah yang secara otomatis dapat membangun model dan tampilan tertentu yang diperlukan untuk situs web dasar [36]. Ini juga termasuk WEBrick (server web Ruby sederhana yang didistribusikan dengan Ruby) dan Rake (sistem build didistribusikan sebagai permata). Alat-alat ini bersama dengan Ruby on Rails menyediakan lingkungan pengembangan dasar.

Dalam konfigurasi Rails default, tampilan adalah file erb, yang akan dievaluasi dan dikonversi ke HTML saat runtime. Sebagai alternatif, banyak sistem templat lain yang dapat digunakan untuk tampilan. Ruby on Rails menyertakan alat untuk membuat tugas pengembangan umum “di luar kotak” lebih mudah, seperti perancah yang secara otomatis dapat membangun model dan tampilan tertentu yang diperlukan untuk situs web dasar.

Ini juga mencakup WEBrick (server web Ruby sederhana yang didistribusikan dengan Ruby) dan Rake (sistem build didistribusikan sebagai permata). Alat-alat ini bersama dengan Ruby on Rails menyediakan lingkungan pengembangan dasar.

Mulai dari versi 2.0, Ruby on Rails menyediakan HTML dan XML sebagai format keluaran standar. Yang terakhir adalah alat untuk layanan web RESTful.

Rails 3.1 memperkenalkan Sass sebagai template CSS standar.

Secara default, server menggunakan Ruby Tertanam dalam tampilan HTML, dan ekstensi file adalah html.erb. Rails mendukung pertukaran bahasa template alternatif, seperti HAML dan Moustache.

Ruby on Rails 3.0 dirancang untuk digunakan dengan Ruby 1.8.7, Ruby 1.9.2 dan JRuby 1.5.2+; versi sebelumnya tidak didukung [40]

Ruby on Rails 3.2 adalah seri versi terbaru yang mendukung Ruby 1.8.7.

Struktur Framework

Struktur Framework Ruby On Rails

Ruby on Rails terbagi dalam berbagai paket software yaitu ActiveRecord (object-relational mapping system untuk akses database), Action Pack, Active Support dan Action Mailer. Sebelum versi 2.0, Ruby on Rails juga menyertakan paket Action Web Service, yang sekarang telah digantikan oleh Active Resource.

Selain paket perangkat lunak standar, pengembang dapat membuat plug-in untuk memperluas paket perangkat lunak yang ada. Rails awal mendukung plugin dalam kerangka kustomnya; ini tidak digunakan lagi di versi 3.2, dan “permata” standar Ruby direkomendasikan.

Deployment

Ruby on Rails biasanya diinstal menggunakan RubyGems. RubyGems adalah manajer paket, yang disediakan dengan versi Ruby saat ini. Banyak sistem mirip Unix gratis juga mendukung instalasi Ruby on Rails dan ketergantungannya melalui sistem manajemen paket aslinya.

Ruby on Rails biasanya digunakan dengan server database (seperti MySQL atau PostgreSQL) dan server web (seperti Apache yang menjalankan modul Phusion Passenger).

Filsafat Dan Desain

Ruby on Rails bertujuan untuk menekankan prinsip konvensi konfigurasi (CoC) dan “jangan gunakan kembali” (DRY).

Prinsip-prinsip Rails adalah promotor abadi, yang memandu konsep, desain, dan implementasi kerangka kerja Ruby on Rails.

“Konvensi konfigurasi” berarti bahwa pengembang hanya perlu menentukan aspek aplikasi yang tidak konvensional. Misalnya, jika ada kelas Sale dalam model tersebut, tabel terkait di database disebut penjualan secara default.

Pengembang perlu menulis kode tentang nama-nama ini hanya jika ada orang yang menyimpang dari konvensi ini (seperti menyebut tabel “produk terjual”). Umumnya, konvensi Ruby on Rails menghasilkan lebih sedikit kode dan lebih sedikit duplikasi.

“Jangan ulangi diri Anda sendiri” berarti informasi tersebut ada di tempat yang jelas. Misalnya, dengan modul ActiveRecord Rails, pengembang tidak perlu menentukan nama kolom database dalam definisi kelas. Sebaliknya, Ruby on Rails dapat mengambil informasi ini dari database berdasarkan nama kelas.

“Fat models, skinny controllers” berarti sebagian besar logika aplikasi harus ditempatkan dalam model sambil membuat pengontrol seringan mungkin.

Trademarks

Trademarks

Pada bulan Maret 2007, David Heinemeier Hansson mengajukan tiga aplikasi merek dagang terkait Ruby on Rails ke USPTO. Aplikasi ini menggunakan frasa “RUBY ON RAILS”, “RAILS”, dan logo resmi Rails.

Akibatnya, pada musim panas 2007, Hansson menolak izin Apress untuk menggunakan logo Ruby on Rails di sampul buku Ruby on Rails baru yang ditulis oleh beberapa anggota komunitas yang berwenang. Episode ini menyebabkan protes sopan dari komunitas Ruby on Rails Menanggapi kritik ini, Hansen menjawab :

Saya hanya memberikan [logo Rel] tujuan promosi untuk produk yang berhubungan langsung dengan saya. Misalnya, saya telah berpartisipasi dalam buku dalam proses pengembangan atau pertemuan di mana saya memiliki suara dalam proses implementasi. Saya pasti akan berusaha untuk menerapkan semua merek dagang Rails.

Scalability

Rails yang berjalan di Ruby Interpreter (sebenarnya, interpreter referensi Ruby) telah dikritik karena masalah skalabilitas. Kritikus ini sering menyebutkan berbagai kegagalan Twitter pada tahun 2007 dan 2008, yang mendorong transisi sistem antrian Twitter dan bagian middleware lainnya ke Scala (berjalan pada mesin virtual Java). Antarmuka pengguna situs terus menjalankan Ruby on Rails sampai diganti pada tahun 2011 karena masalah kinerja.

Baca Juga : 7 Template Website Video Terbaik 2021

Pada tahun 2011, Gartner Research menunjukkan bahwa meskipun ada beberapa kritik dan perbandingan dengan Java, banyak perusahaan web konsumen terkenal menggunakan Ruby on Rails untuk membangun aplikasi web yang dapat diskalakan. Beberapa situs terbesar yang menjalankan Ruby on Rails termasuk Airbnb, Cookpad, GitHub, Scribd, Shopify, dan Basecamp. Pada Januari 2016, diperkirakan lebih dari 1,2 juta situs web menjalankan Ruby on Rails.

Security

Pada bulan Maret 2012, peneliti keamanan Egor Homakov menemukan kerentanan “distribusi massal” yang memungkinkan aplikasi Rails tertentu dieksploitasi dari jarak jauh, dan setelah upaya sebelumnya untuk membuat pengungkapan yang bertanggung jawab ditolak, ia menyampaikan demonstrasi tidak berbahaya. Peretas GitHub memberikan demonstrasi.

Pada tanggal 24 September 2013, kerentanan keamanan persistensi cookie sesi dilaporkan di Ruby on Rails. Dalam konfigurasi default, seluruh hash sesi disimpan dalam cookie sesi yang disebut CookieStore, yang memungkinkan sesi terautentikasi apa pun yang memiliki cookie sesi tersebut untuk masuk sebagai pengguna target di masa mendatang. Sebagai solusinya, disarankan agar administrator menggunakan mekanisme seperti ActiveRecordStore untuk mengkonfigurasi cookie agar disimpan di server.

Peneliti Daniel Jackson dan Joseph Near mengembangkan debugger data yang disebut “Space”, yang dapat menganalisis akses data program Rails dan menentukan apakah program tersebut sesuai dengan aturan tentang pembatasan akses. Pada 15 April 2016, Near melaporkan bahwa analisis dari 50 aplikasi web populer yang menggunakan Space menemukan 23 kerentanan keamanan yang sebelumnya tidak diketahui.