Miral Achmed
Author of achmiral.id, FPV Drone Racing Pilot, Rubyist, Currently Student at AMIKOM Yogyakarta

Aplikasi CRUD Sederhana Menggunakan Sinatra dan Postgresql [Part 2]

Aplikasi CRUD Sederhana Menggunakan Sinatra dan Postgresql [Part 2]

Halo teman-teman, di tulisan sebelumnya kita sudah belajar bagaimana membuat aplikasi sederhana menggunakan sinatra. Untuk yang belum baca bisa dibaca disini.

Di Part 2 ini, kita akan mempelajari bagaimana menghubungkan aplikasi sinatra yang sudah kita buat di Part 1 ke database Postgresql menggunakan activerecord.

Sedekar informasi buat teman-teman yang baru berkunjung di blog ini. Tulisan ini terdiri dari 4 part, berikut ini daftar setiap part nya:

Okey langsung saja kita mulai.

Langkah pertama, tambahkan beberapa gem yang dibutuhkan.

# Gemfile
source "https://rubygems.org"

ruby "2.5.1"

gem "sinatra"

gem "activerecord"
gem "sinatra-activerecord"
gem "pg"
gem "rake"
gem "tux"

Kemudian jalankan perintah

$ bundle install

Selanjutnya buat file konfigurasi database pada folder config bernama database.yml. Kemudian tambahkan kode berikut ini.

#config/database.yml
development:
  adapter: postgresql
  encoding: unicode
  database: sinatra-crud_development # ganti dengan nama database yang diinginkan
  pool: 5
  host: localhost
  username: root # ganti dengan username postgresql teman-teman
  password: root  # ganti dengan password untuk username postgresql teman-teman

production:
  adapter: postgresql
  encoding: unicode
  host: <%= ENV['DATABASE_HOST'] %>
  database: <%= ENV['DATABASE_NAME'] %>
  pool: 2
  username: <%= ENV['DATABASE_USERNAME'] %>
  password: <%= ENV['DATABASE_PASSWORD'] %>

Konfigurasi database diatas digunakan untuk environtment development dan production. Pada konfigurasi production kita menggunakan environtment variabel, nilai-nilai ini nantinya akan diset secara otomatis ketika kita push project kita ke heroku.

Langkah selanjutnya kita akan membuat sebuah kelas model bernama Post, dengan cara membuat file baru bernama post.rb pada folder models.

# models/post.rb
class Post < ActiveRecord::Base
end

Setelah itu buat sebuah file baru lagi bernama Rackfile.

# Rackfile
require "sinatra/activerecord"
require "sinatra/activerecord/rake"
require "./app"

Rackfile dibutuhkan agar kita dapat menggunakan perintah rake pada project kita.

Untuk membuat database dapat menggunakan perintah berikut.

$ rake db:create

Perintah tersebut akan membuat sebuah database baru sesuai dengan konfigurasi yang ada pada config/database.yml.

Jika database berhasil dibuat maka akan tampil seperti gambar dibawah ini.

Create DB

Selanjutnya kita akan membuat sebuah file database migration baru untuk membuat tabel Posts yang kita beri nama create_posts. Caranya jalankan perintah berikut ini.

$ rake db:create_migration NAME=create_posts

Jika berhasil maka akan tampil seperti pada gambar dibawah ini.

Create DB Migration

Kemudian kita edit file 20181027004848_create_posts.rb, tambahkan kode berikut ini.

# db/migrate/20181027004848_create_posts.rb
class CreatePosts < ActiveRecord::Migration[5.2]
  def change
    create_table :posts do |t|
      t.string :title # Untuk membuat kolom title bertipe varchar
      t.text :content # Untuk membuat kolom content bertipe text

      t.timestamps null: false # Untuk membuat kolom timestamps
    end
  end
end

Jalankan perintah berikut ini untuk menjalankan database migration.

$ rake db:migrate

Jika berhasil maka tampil seperti gambar berikut dan tabel posts berhasil dibuat.

DB Migration Create posts Table

Untuk menambahkan data ke database kita dapat menggunakan console tux, mirip seperti rails console pada Ruby on Rails.

Kita akan menambahkan satu data post dengan title “Greeting” dan content “Hello World!”. Seperti pada gambar berikut.

Add Data

Sebelum lanjut ke tahap pengujian, pastikan struktur folder project teman-teman sama seperti gambar berikut ini.

Add Data

Kalau belum, kemungkinan ada langkah-langkah yang terlewatkan.

Selanjutnya kita akan menguji apakah aplikasi sinatra kita sudah terhubung dengan database yang sudah dibuat.

Update file app.rb, jadi seperti berikut ini.

# app.rb
require 'sinatra'
require "sinatra/activerecord"

require "./models/post"

get '/' do
  @post = Post.first
  "#{@post.title} - #{@post.content}"
end

Jalankan aplikasi sinatra kita.

$ ruby app.rb

Kemudian kita akses alamat http://localhost:4567/

Test

Yeay, selamat kita berhasil menghubungkan aplikasi sinatra kita dengan database postgresql menggunakan active record.

Ditulisan berikutnya saya akan membahas bagaimana cara membuat Create Read Update Delete (CRUD) dan menambahkan views untuk aplikasi sinatra yang sudah dibuat.

Terima kasih sudah meluangkan waktunya untuk membaca tulisan saya ini.

Salam Rubyist!!

comments powered by Disqus