Ruby On Rails
Ruby on Rails merupakan framework yang dibuat dengan bahasa pemrograman ruby, bahasa pemrograman ruby sendiri diciptakan oleh Yukihiro Matsumoto seorang software programmer yang berasal dari Jepang. Dari bahasa Ruby ini dibuatlah framework oleh David Heinemeier Hansson yang merupakan programmer sekaligus pembalap. Syntax atau block code ruby dibuat sangat elegan dan mudah untuk dipelajari. Sudah banyak perusahaan besar di dunia yang membuat website mereka dengan framework rails seperti Github, Twitter, Shopify, dll. Di Indonesia sendiri perusahaan Bukalapak, dan Alodokter menggunakan rails. Rails dibangun dengan menggunakan konsep MVC (Model, View, Controller), berikut arsitektur MVC di ruby on rails:
Model
Mengatur hubungan antara objek dan database, di model kita dapat mengatur asosiasi antar tabel dan mengatur validasi atribut yang terdapat dalam tabel. Untuk melakukan query aplikasi di rails, lebih dianjurkan menggunakannya di model karena model lebih cepat dalam mengakses database.
Contoh Model di rails
class MsArea < ActiveRecord::Base
has_many :ms_user_areas
validates_presence_of :name
end
Di model rails dapat mengatur asosiasi seperti has_many, contoh ini antara tabel ms_areas dan ms_user_areas memiliki relasi has many. Kita juga dapat menggunakan validasi kolom tabel di model dengan contoh validates_presence_of :name, hal ini berarti kolom nama tidak boleh kosong.
View
Merepresentasikan visual dari user interface, ditampilkan dapat dalam bentuk pdf, json, html, dll. View di trigger oleh controller, untuk default view dalam controller sendiri terbagi menjadi index, new, dan edit. Tetapi masih bisa di custom sendiri sesuai kebutuhan aplikasi.
Controller
Sebagai perantara antara model dengan view, menghubungkan data yang diambil dari model dan menampilkannya di view. Controller juga dapat melakukan query tetapi lebih lambat dibandingkan kita melakukan query di model
Berikut contoh pengunaan controller di rails :
Di ruby sebuah function di awali dengan def dan ditutup dengan end. Fungsi index untuk membuat fungsi aplikasi di bagian index aplikasi, fungsi new dibuat untuk menampilkan halaman create, lalu ketika user melakukan submit data maka fungsi itu akan dijalankan di def create, karena def new hanya sebatas menampilkan view new tidak untuk proses penyimpanan data. Fungsi show dibuat untuk menampilkan halaman show. Fungsi edit untuk menampilkan halaman edit, ketika melakukan edit data maka fungsi yang berjalan adalah update. Fungsi destroy digunakan untuk melakukan penghapusan data. Fungsi – fungsi ini merupakan standar code yang dimiliki rails.
Rails menekankan penggunaan DRY (Don’t Repeat Youreself), teknik ini menjelaskan untuk tidak menuliskan informasi yang secara berulang agar code tidak ambigu. Pada contoh sederhanda diatas terdapat before_action :set_ms_update_option, only: [:show, :edit, :update, :destroy], pada proses ini sebelum menjalankan fungsi di controller pada bagian show, edit, update, dan destroy perlu menjalankan fungsi set_ms_update_option terlebih dahulu. Pada fungsi set_ms_update_option terdapat code @ms_update_option = MsUpdateOption.find(params[:id]), sehingga setelah fungsi ini dijalankan lalu menjalankan fungsi yang lain di controller tidak perlu mendefine fungsi yang sama, ini yang dinamakan penggunaan dry pada rails.
Rails memiliki plugin yang dinamakan gem, biasanya programmer menggunakan plugin untuk membuat fungsi di web menjadi lebih powerful dan menarik. Proses instalasi plugin di ruby cukup mudah, untuk melihat plugin yang tersedia dapat dilihat di https://rubygems.org/ dan di install di project rails. Contoh plugin untuk mempermudah proses authentikasi pada aplikasi adalah gem devise, plugin ini sudah mengatur proses login, logout, dan authentikasi bahkan tampilannya sudah disediakan.
Contoh penggunaan gem
gem ‘devise’, ‘~> 4.5’
Code gem ini di taruh pada bagian gemfile, setelah itu kita perlu melakukan instalasi dengan perintah bundle install di terminal.
Sumber:
- https://en.wikipedia.org/wiki/Ruby_(programming_language)
- https://en.wikipedia.org/wiki/Yukihiro_Matsumoto
- https://medium.com/the-renaissance-developer/ruby-on-rails-http-mvc-and-routes-f02215a46a84
Nama:
Shagnaz Intania (1901525341)
Andika Kandrianto (1901461445)
Supervisor : Hanry Ham