Showing posts with label ruby on rails. Show all posts
Showing posts with label ruby on rails. Show all posts

Sunday, March 18, 2018

Introduce to Ruby on Rails

Halo sobat, kembali lagi di blog Nostra!

Pada kesempatan kali ini, kami akan memberikan pengenalan tentang Ruby on Rails.

Ruby on Rails (disingkat menjadi Rails) adalah framework yang ditulis dengan bahasa pemrograman Ruby, yang diperkenalkan pertama kali pada tahun 2004. Rails termasuk server side, yang berarti semua proses dijalankan pada server, bukan pada client's browser.

Ruby itu sendiri merupakan salah satu high level programming language dan menggunakan konsep object oriented programming. Ruby populer karena beberapa hal berikut:
- Mudah dipelajari
- Open source
- Library yang banyak

Dengan beberapa kelebihan tersebut, tentunya Ruby memiliki beberapa kekurangan, beberapa kekurangannya, adalah:
- Performa yang tidak sebanding dengan Java, C, C++, dan lainnya
- Threading model yang digunakan oleh Ruby menggunakan virtual machine, tidak menggunakan native OS thread

Rails sendiri memiliki beberapa keuntungan:
- Framework yang membuat developer lebih produktif
- Tidak membutuhkan proses compile
- Anda bisa membuat aplikasi setidaknya lebih cepat 10 kali daripada framework berbasis Java

Rails juga merupakan full-stack framework, karena menggunakan MVC (model view controller) pattern, sehingga Rails memiliki backend dan frontend sendiri. Secara code, Rails juga lebih simple, sehingga anda dapat membuat aplikasi dengan lebih sedikit baris.

Salah satu contoh code yang ditulis menggunakan Rails:


Sekian introducing to Ruby on Rails kali ini, sampai bertemu di part kedua (yang akan menjelaskan function-function dasar pada Rails).

How-to: Building RESTful API on Ruby on Rails

Halo semua, kembali lagi di Blog Nostra!

Kali ini kami akan membagikan tentang bagaimana cara mengimplementasi RESTful API pada Ruby on Rails. Sebelum memulai, kami akab memberikan beberapa informasi mengenai REST API dan Ruby on Rails itu sendiri.

- What is Ruby on Rails?
Ruby on Rails (disingkat menjadi Rails) adalah framework yang ditulis dengan bahasa pemrograman Ruby, yang diperkenalkan pertama kali pada tahun 2004. Rails termasuk server side, yang berarti semua proses dijalankan pada server, bukan pada client's browser. 

- What is RESTful API?
RESTful API adalah application program interface yang menggunakan HTTP request untuk mengolah data. Pertama kali diperkenalkan pada tahun 2000 oleh Roy Fielding. REST API banyak digunakan oleh web service development.

Kenapa sih menggunakan Rails? Dari segi development, less painful, karena hanya dengan sebuah script, bisa me-generate model dan controller nya. Selain itu, Rails juga mudah dibaca, bahkan oleh orang yang tidak memiliki dasar pemrograman.

Nah langkah-langkah untuk menggunakan Rails adalah:
- Install Ruby
brew install ruby
- Install Rails
brew install rails
- Konfigurasi database (jika diperlukan)
- Run Rails
rails s

note: jika ingin menambahkan dependency pada Gemfile, lakukan `bundle install` untuk me-include dependency yang baru anda masukan

Script untuk membuat Model:
`rails g model {nama model} {nama variable}:{tipe data} {nama variable}:{tipe data} ...`

Script untuk membuat Controller:
`rails g controller {nama controller}`

Setelah men-define apa yang akan dilakukan oleh controller, saatnya mendefinisikan route untuk method-method yang ada di controller. berikut salah satu contoh controller dan route nya:



Wala, sudah jadi deh RESTful API menggunakan Rails! Selamat mencoba!
Keep smart, keep code, and make money!

Sunday, June 15, 2014

Location-aware Rails Model with Geokit Plugin

Beberapa minggu lalu saya diminta untuk membuat simulasi sederhana dari dispatching system untuk taksi menggunakan Ruby on Rails. Saya sempat membahas sekilas mengenai framework ini pada post saya sebelumnya. Salah satu fitur yang diminta dari dispatching system tersebut adalah fitur untuk mencari taksi terdekat dari lokasi calon penumpang taksi. Saya menggunakan Geokit plugin untuk Rails yang sangat mempermudah proses pencarian.

Berikut adalah langkah-langkahnya:
  1. Edit Gemfile pada Rails project, tambahkan baris berikut:
    gem 'geokit-rails'
  2. Buka Terminal pada direktori Rails project, kemudian jalankan perintah ini untuk menginstalasi geokit-rails plugin.
     $ bundle install
  3. Persiapkan database server yang compatible, saya menggunakan MySQL pada post ini. Berikut adalah snippet config/database.yml yang digunakan.
    default: &default
      adapter: mysql2
      encoding: utf8
      pool: 25
      timeout: 5000
      username: root
      password:
      socket: /tmp/mysql.sock
    
    development:
      <<: *default
      database: booking_dev
    
    # Warning: The database defined as "test" will be erased and
    # re-generated from your development database when you run "rake".
    # Do not set this db to the same as development or production.
    test:
      <<: *default
      database: booking_test
    
    production:
      <<: *default
      database: booking
    
  4. Buat model Driver sebagai representasi sopir taksi. Sopir taksi ini juga memiliki 2 atribut lokasi yaitu longitude dan latitude.
     $ rails generate scaffold Driver name:string phone:string latitude:decimal{10.6} longitude:decimal{10.6}
  5. Jalankan script migration untuk membuat tabel drivers.
     $ bin/rake db:migrate RAILS_ENV=development
  6. Persiapkan seed data menggunakan rake task. Buat file db/seeds.rb untuk mengisi tabel drivers. Misalnya seperti ini:
    Driver.delete_all
    Driver.create!(name: 'Adam Ashton', phone: '+62811234567', latitude: (rand -90.000000..90.000000).round(6), longitude: (rand -180.000000..180.000000).round(6))
    Driver.create!(name: 'Brian Borrowick', phone: '+62812234644', latitude: (rand -90.000000..90.000000).round(6), longitude: (rand -180.000000..180.000000).round(6))
    Driver.create!(name: 'Charlie Chuckles', phone: '+62813234698', latitude: (rand -90.000000..90.000000).round(6), longitude: (rand -180.000000..180.000000).round(6))
    Driver.create!(name: 'Damian Delaware', phone: '+62814234526', latitude: (rand -90.000000..90.000000).round(6), longitude: (rand -180.000000..180.000000).round(6))
    Driver.create!(name: 'Edward Ernst', phone: '+62815349347', latitude: (rand -90.000000..90.000000).round(6), longitude: (rand -180.000000..180.000000).round(6))
    Driver.create!(name: 'Finn Flannigan', phone: '+62816287667', latitude: (rand -90.000000..90.000000).round(6), longitude: (rand -180.000000..180.000000).round(6))
    Driver.create!(name: 'Gregory Georgetown', phone: '+62817255667', latitude: (rand -90.000000..90.000000).round(6), longitude: (rand -180.000000..180.000000).round(6))
    Driver.create!(name: 'Hendrick Henderson', phone: '+62818200967', latitude: (rand -90.000000..90.000000).round(6), longitude: (rand -180.000000..180.000000).round(6))
    Driver.create!(name: 'Ian Impala', phone: '+62819235467', latitude: (rand -90.000000..90.000000).round(6), longitude: (rand -180.000000..180.000000).round(6))
    Driver.create!(name: 'Jeremy Jefferson', phone: '+62810234887', latitude: (rand -90.000000..90.000000).round(6), longitude: (rand -180.000000..180.000000).round(6))
    
  7. Jalankan rake task untuk menghasilkan seed data pada poin sebelumnya.
     $ bin/rake db:seed
  8. Validasi di MySQL client bahwa perintah rake sebelumnya berjalan dan data berhasil di-generate.
    Tabel drivers via Sequel Pro app
  9. Aktifkan plugin geokit-rails pada model Driver dengan cara menambahkan fungsi acts_as_mappable pada file app/models/driver.rb seperti berikut:
    class Driver < ActiveRecord::Base
      acts_as_mappable default_units: :kms, default_formula: :sphere, distance_field_name: :distance, lat_column_name: :latitude, lng_column_name: :longitude
    end
    
  10. Uji coba dengan menjalankan perintah berikut pada rails console.
     $ rails console
    irb(main):001:0> jeremy = Driver.find(10)
    irb(main):002:0> distance = 10000
    irb(main):003:0> Driver.within(distance, :origin => jeremy).first
  11. Perintah tersebut seharusnya akan mengembalikan sopir terdekat dari Jeremy Jefferson dalam radius 10.000 km :) Jika perintah tersebut tidak mengembalikan apa-apa tapi tidak error, berarti seed datanya harus kita persempit lagi lokasinya, hehe
Selamat mencoba ya! :D

Getting Started with Ruby on Rails

Apa itu Rails?

Ruby on Rails merupakan sebuah Web application framework berbasiskan arsitektur MVC yang menggunakan bahasa scripting Ruby. Pertama kali saya mendengar framework ini ketika saya masih menjalani kuliah di tahun ke-3. Pada waktu itu belum banyak website yang menggunakan framework ini, dan bisa dibilang dipandang sebelah mata. Namun seiring perkembangannya, makin banyak website besar yang menggunakan framework ini. Saya ingin sedikit membahas apa yang membuat framework ini menarik dibanding framework lain, setidaknya di mata saya.

Mengikuti konvensi daripada membuat konfigurasi. Rails sangat menjunjung tinggi "Convention over configuration", sehingga jika kita mengikuti konvensi dari Rails konfigurasi yang perlu dilakukan sangat minimal. Mulai dari penamaan tabel database menggunakan bentuk jamak dari kata benda, penamaan model menggunakan bentuk tunggal, penamaan filename dari masing-masing komponen, dan lain-lain diatur di dalam konvensi Rails. Tujuan dari adanya konvensi tersebut adalah untuk mengefisienkan pengembangan aplikasi dengan menghilangkan pekerjaan yang sifatnya berulang-ulang. Salah satu contoh sederhananya adalah pemetaan model dengan tabel database. Konvensi ini tidak bersifat wajib, namun jika kita bersikeras melawan konvensi Rails karena alasan yang kuat kita juga diberikan pilihan untuk meng-override konvensi Rails. 

Memanusiakan Web developer. Kesederhanaan sintaks dari bahasa Ruby, membuat sintaks Rails mudah dimengerti dan mudah dibuat. Sebagai contohnya coba kita lihat model Employee berikut ini. Dari petikan class Employee tersebut dapat dengan mudah kita artikan bahwa model Employee memiliki relasi ke model Department dan model Dependant. Fungsi relasi has_one dan has_many tersebut berarti seorang pegawai dapat memiliki 0 atau lebih tanggungan, dan seorang pegawai harus terdaftar di tepat 1 departemen. Selain itu dari model Employee tersebut kita bisa mengetahui bahwa ada 2 validasi yang berlaku, yaitu validasi keunikan yang diaplikasikan ke atribut email pegawai, dan validasi atribut yang tidak boleh dikosongkan yang berlaku untuk atribut nama, email dan nomor telepon pegawai. Semua informasi tersebut diekspresikan secara lugas dan sederhana.
class Employee <  ActiveRecord::Base
  validates :name, :email, :phone, presence: true
  validates :email, :phone, uniqueness: true

  has_one :department
  has_many :dependants
end

Sebelum kita coba hands-on mencoba membuat aplikasi sederhana menggunakan Rails, kita setup dahulu environment Rails-nya.

Instalasi Rails 

Ada beberapa cara untuk men-setup environment Ruby on Rails. Khusus untuk Mac OS X, saya akan jabarkannya lebih detil:
  1. Instalasi Xcode
    Kita tidak membutuhkan aplikasi Xcode untuk mengembangkan aplikasi Rails. Namun yang kita perlukan adalah Command Line Tools yang dapat kita instalasi via Xcode, seperti Ruby, GCC, G++, dsb. Setelah Xcode ter-install, jangan lupa untuk meng-install Command Line Tools-nya dari menu Preferences -> Downloads -> Components -> Command Line Tools.
  2. Instalasi Homebrew
    Homebrew adalah salah satu package manager menggunakan bahasa Ruby untuk Mac OS X. Langkah sebelumnya seharusnya sudan meng-install Ruby versi default, sehingga menginstalasi Homebrew dapat dilakukan dengan perintah berikut.
    ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
  3. Instalasi rbenv
    rbenv merupakan Ruby versioning management tool yang memungkinkan beberapa versi Ruby dapat diinstalasi secara bersamaan. Instalasi rbenv via Homebrew.
    brew update
    brew install rbenv ruby-build
    eval "$(rbenv init -)"
  4. Instalasi Ruby
    Instalasi Ruby versi terkini dengan menggunakan rbenv.
    rbenv install $RUBY_VERSION
  5. Instalasi Rails
    Cara yang direkomendasikan adalah menggunakan Ruby Gem, yaitu Ruby package manager. Instalasi Rails dengan menggunakan perintah berikut.
    gem install rails

Membuat Aplikasi Rails Pertama

Kita akan mencoba membuat aplikasi sederhana yang hanya akan melakukan operasi Create Read Update Delete (CRUD) terhadap sebuah database penumpang. Berikut adalah langkah-langkahnya:
  1. Buat kerangka aplikasi Rails
     $ rails new booking
  2. Masuk ke direktori aplikasi yang telah kita generate sebelumnya.
     $ cd booking/
  3. Buat model, view, dan controller dari penumpang. Jalankan perintah berikut dalam 1 baris.
     $ rails generate scaffold Passenger name:string email:string phone:string address:string birthdate:date birthplace:string
  4. Jalankan WEBrick server.
     $ rails server
  5. Akses WEBrick dari browser. Error ini disebabkan karena kita belum membuat skema database untuk model Passenger yang telah kita buat.
    PendingMigrationError pada WEBrick
  6. Buka Terminal baru dan ganti ke direktori tempat aplikasi booking berada. Jalankan perintah yang ditampilkan pada pesan error WEBrick.
     $ bin/rake db:migrate RAILS_ENV=development
  7. Akses kembali browser dan refresh. Tampilan default Rails akan muncul.
    Default Landing Page Rails Application
  8. Akses link ke aplikasi CRUD untuk mengatur database penumpang. Yep, it's already there!
    Passengers List

    Create New Passenger Form

    Passenger Info

    Passengers List with New Passenger

Begitu mudahnya membuat operasi CRUD dengan Rails. Pada kesempatan berikutnya kita akan mencoba topik Rails yang lebih mendalam. Selamat mencoba!