Senin, 15 Maret 2021

Seri Belajar Ruby on Rails Bagian 5 - Membuat Aplikasi Rails Pertamamu

Setelah sebelumnya memulai pembahasan mengenai apa itu Ruby, cara menginstall Ruby on Rails, pengenalan bahasa Ruby, dan pengenalan Rails framework, sekarang saatnya untuk memulai menggunakan Rails framework dengan membuat aplikasi sederhana.

Aplikasi Manajemen Tugas Sederhana

Kali ini kita akan mencoba membuat aplikasi manajemen tugas sederhana. Aplikasi ini berfungsi untuk mencatat tugas-tugas harian, baik tugas sekolah ataupun tugas kuliah. 

Sebelum itu, mari kita pikirkan data apa yang dibutuhkan untuk membuat aplikasi ini. Karena aplikasi ini berkaitan dengan mencatat tugas harian, maka data yang dibutuhkan, yaitu:
  1. Nama Tugas
  2. Deskripsi tugas
  3. Kategori tugas
    Kategori ini dimaksudkan untuk menyimpan nama mata kuliah atau nama mata pelajaran di sekolah.
  4. Deadline (Tanggal dikumpulkan)
Setelah mengetahui data apa saja yang dibutuhkan, dapat disimpulkan bahwa setidaknya aplikasi ini terdiri dari satu model, satu controller, dan beberapa view. Lalu kita buat projectnya, dengan menjalankan perintah berikut pada terminal atau command prompt.

versi mysqlite
$ rails new homework_management

versi postgresql
$ rails new homework_management -d postgresql

cd homework_management
$ rails db:create

Setelah membuat Rails project baru, yang harus dilakukan adalah membuat controller, model, dan view-view yang dibutuhkan. Untuk membuat beberapa hal tersebut, Rails menyediakan fitur yang sangat berguna untuk membuatnya secara otomatis dan simpel.

Scaffold, Fitur Ajaib di Rails

Scaffold ?. Apa itu scaffold ?. Scaffold merupakan quick-way yang disediakan oleh Rails untuk membuat controller, model, beserta view-view yang berkaitan. Dengan scaffold controller, model, dan view-view tersebut dapat dibuat dengan satu kali operasi.
$ rails generate scaffold Homework homework_name:text category:string deadline:date description:text
Perintah di atas, berarti membuat resource homework dan pada tabelnya memiliki kolom:
  1. homework_name berupa text
  2. category berupa string (menyimpan mata kuliah atau mata pelajaran)
  3. deadline berupa date, dan
  4. description berupa text

Apa yang dihasilkan dari perintah tersebut ?


Kesimpulannya yang dihasilkan dari scaffold adalah:
  1. File migration
  2. Model
  3. Route
    Scaffold akan otomatis mendaftarkan URL yang sudah dibuat menjadi route resources
  4. Controller
  5. Dan pada view, yaitu folder homeworks di app/views, index.html.erb, edit.html.erb, show.html.erb, new.html.erb, dan _form.html.erb di folder app/views/homeworks
Setelah itu coba jalankan server, dengan cara mengetikkan perintah berikut pada terminal atau command prompt.
$ rails s 
Coba masukkan URL http://localhost:3000/ dan yang akan muncul adalah tampilan seperti berikut.


Tampilan tersebut merupakan tampilan error pada Rails framework. Apa yang terjadi ?. Yang terjadi adalah kita lupa untuk menjalankan file migrasi yang dibuat oleh scaffold.

Perlu diingat meskipun kita menggunakan scaffold, tetapi untuk melakukan migrasi file database, harus dilakukan sendiri dengan cara menjalankan perintah berikut.
$ rake db:migrate
atau
$ rails db:migrate


Jalankan server kembali dan refresh halaman http://localhost:3000/


Aplikasi sudah berjalan, namun bagaimana untuk melihat hasil dari scaffold yang dibuat ?. Karena kita tadi membuat scaffold Homework, maka coba buka url http://localhost:3000/homeworks/, maka yang akan muncul pada browser adalah sebagai berikut.
 

Jika tampilan di atas muncul, itu artinya aplikasi manajemen tugas sederhana sudah dibuat.
Hanya dengan menggunakan scaffold bagian-bagian terpenting yang saling berhubungan dapat dibuat. Tetapi bagaimana penjelasannya ?. Bagaimana jika membuatnya secara manual ?. Berikut penjelasannya.

Model

Saat men-generate scaffold Homework, otomatis akan membuat model pada app/models/homework.rb. Pada model ini nantinya dapat digunakan untuk melakukan validasi data yang akan masuk, dsb. Untuk membuat model secara manual dapat dilakukan dengan cara
$ rails generate model Homework
Perintah tersebut otomatis membuat model dengan nama homework.rb di app/models beserta file migrasi tablenya.

Controller

Saat men-generate scaffold Homework, otomatis akan membuat controller pada app/controllers/homeworks_controller.rb. Selain itu, saat menjalankan scaffold maka pada cotroller otomatis akan membuat method-method berikut:
  1. index: menampilkan seluruh data pada tabel
  2. show: menampilkan data sesuai dengan parameter
  3. new: menampilkan halaman tambah data
  4. edit:  menampilkan halaman edit data
  5. create: proses menyimpan data
  6. update: proses mengubah data
  7. destroy: proses menghapus data
Untuk membuat controller secara manual dapat dilakukan dengan cara
$ rails generate controller Homework
Perintah tersebut otomatis membuat controller dengan nama homework_controller.rb di app/controller. Jika ingin membuat controller dan membuat view, dapat dilakukan dengan cara
$ rails generate controller Homework index
kata "index" pada perintah tersebut berarti membuat view pada app/views/homework/index.html.erb

Migration

Dari awal pembahasan kita sudah sering menyebutkan file migrasi tabel. Apa itu migrasi atau migration table di Ruby ?. Migration adalah fitur di Ruby yang dibuat untuk membuat atau mengubah tabel di database secara mudah. Migration ini merupakan salah satu yang akan dihasilkan ketika melakukan scaffolding.

Untuk dapat membuat file migrasi, lakukan perintah berikut.
$ rails generate migration CreateHomeworks
File migrasi yang sudah dibuat akan disimpan pada folder db/migrate

Untuk dapat melakukan migrasi, lakukan perintah berikut.
$ rake db:migrate
atau
$ rails db:migrate

Route

Route pada Rails diibaratkan seperti jembatan yang berfungsi untuk menerima request dari browser dan meneruskannya ke controller atau men-generate URL beserta action jika URL tersebut diakses.

Route di Rails application terdapat pada config/routes.rb. Ketika menggunakan scaffold, maka scaffold akan otomatis mendaftarkan resource yang dibuat di routes.rb. 


resource :homeworks artinya mengikat semua method yang ada pada controller homework menjadi satu bagian, dan URL yang terbentuk dari resource ini akan sesuai dengan nama methodnya. 

Contoh pada resources :homeworks terdapat method new, maka URL yang dihasilkan menjadi /homeworks/new

Lalu dari hasil melakukan scaffolding URL apa yang dihasilkan ?. Untuk mengetahui route apa saja yang terdaftar, dapat dilakukan dengan cara
$ rails routes



HTTP Verb Path Controller#Action Fungsi
GET /homeworks homework#index menampilkan seluruh tugas
GET /homeworks/new homework#new menampilkan halaman untuk menambahkan data tugas harian
POST /homeworks homework#create berisi proses penambahan data
GET /homeworks/:id homework#show menampilkan data tugas yang lebih spesifik
GET /homeworks/:id/edit homework#edit menampilkan halaman yang berisi form untuk merubah data tugas
PATCH/PUT /homeworks/:id homework#update berisi proses merubah data tugas
DELETE /homeworks/:id homework#destroy berisi proses untuk menghapus data

Merubah Root Action

Untuk merubah root action ke sebuah method tertentu, misalnya root action akan diubah ke method index pada controller homework_controller.rb, dapat dilakukan dengan cara menambahkan script berikut pada routes.rb
root "homeworks#index"

Happy Coding !!
Penting untuk diingat Rails memang menyediakan fitur scaffold untuk memudahkan para pengembang, namun jangan sampai penggunaan scaffold tanpa diimbangi pemahaman untuk membuat controller, model, migrasi, route, dan view secara manual.

Fathara Annisa Azka | C-aio Indonesia

Tidak ada komentar:

Posting Komentar