Ruby on Rails Tiga lingkungan pembuatan aplikasi Rails: 1. development 2. test 3. deployment Aplikasi Rails berjalan di web server seperti WEBrick dan Mongrel. Selain itu, aplikasi-aplikasi Rails dapat di jalankan web server lain seperti thin, Lighttpd (“lighty”), Apache (menggunakan Passanger atau mod_ruby), nginx dan lainnya.
Design Pattern MVC Rails menganut design pattern MVC.
PWI—Rails
1
Siklus Aplikasi Ruby on Rails
PWI—Rails
2
Don’t Repeat Yourself Prinsip DRY: “Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.” Pengkodingan dibuat lebih DRY dalam Rails karena Rails menggunakan ActiveRecord dan menggunakan sistem pemisahan kode view dari kode logika bisnis (MVC).
Object Relational Mapping (ORM) Rails juga menganut ORM. ORM merupakan sebuah design pattern untuk mengkonvert data di antara database-database fisik dan sistem-sistem virtual
berorientasi object. ORM memetakan elemen-
elemen dari sebuah database ke elemen-elemen yang setara di struktur objek. Seperti kita ketahui, struktur database fisik adalah sebagai berikut: 1. Field (kolom) berisi data-data
2. Record (baris) terdiri dari banyak field (kolom)
3. Tabel terdiri dari banyak record (baris)
4. Database terdiri dari banyak tabel-tabel
PWI—Rails
3
Permasalahannya, bagaimana cara kita memetakan tabel-tabel, field-field, record-record dan data dari dalam database ke class-class, object-object dan atribut-atribut sebuah aplikasi??
ActiveRecord Activerecord merupakan layer ORM dalam Rails.. ActiveRecord adalah sebuah cara untuk mengakses data dalam database. Dengan ActiveRecord, sebuah tabel database dibungkus menjadi sebuah class. Sehingga, sebuah contoh objek terhubung/terikat pada satu baris dalam tabel. Dan memanipulasi baris table berarti seperti memanipulasi sebuah objek.
Model •
Method untuk getting dan setting secara otomatis dibuat oleh Rails untuk setiap atribut (menggunakan :attr_accessors)
•
Relasi-relasi
yang
ada
dalam
model:
:has_one,
:has_many,
:belongs_to,
:has_and_belongs_to_many
•
Validasi-validasi dalam model: validates_presence_of, validates_confirmation_of, dll. Kita juga bisa membuat
validasi sendiri seperti misalnya karakter tidak boleh lebih dari 140, dll.
PWI—Rails
4
Migration •
Rails migration adalah kode Ruby yang memungkinkan kita dapat memanipulasi skema dan data dalam sebuah database. Jadi, ketika kita ingin memanipulasi skema dan data, kita tinggal menuliskannya hanya dengan kode Ruby saja.
•
Rails migration dibuat dengan cara: Membuat sebuah model (secara otomatis akan men-generate migration) Membuat sebuah scaffold Men-generate migration secara manual dengan perintah: rails generate migration
<parameter>
•
Migration-migration disimpan dalam /db/migrations
•
Dijalankan dengan: rake db:migrate rake db:rollback
SQL Console Jika Anda ingin memanipulasi database langsung dengan query, masuk ke consolenya. Sebelumnya, masuklah ke direktori aplikasi terlebih dahulu, setelah itu ketiklah rails dbconsole
YAML YAML merupakan file tempat mengaturan konektivitas database berada. YAML singkatan dari Yet Another Markup Language atau bisa juga YAML ain’t Markup Language. Lokasi filenya berada di direktori config/
PWI—Rails
5
Gems Gem adalah paket-paket Ruby yang secara bebas tersedia di web. Kunjungi www.rubygems.org untuk mendapatkan gem-gem yang dibutuhkan dan melihat daftar lengkap gem-gem yang ada. Layouts File-file layout menggunakan pernyataan yield untuk menyisipkan konten yang diinginkan dalam layout aplikasi.
PWI—Rails
6
Rails Console •
Rails console memungkinkan command-line memanipulasi model-model dan controller-controller
•
Dimulai dengan perintah rails console Contoh: 1.
Kita dapat menginterogasi dan memanipulasi model seperti: Post.inspect Post.column_names Post.count
2.
Membuat dan memanipulasi objek-objek: p = Post.new p.title = “Judulnya adalah judul” p.save p.to_yaml
3.
Membuat tiga post baru: p1 = Post.new p1.title = “Hai” p1.content = “Apa kabar?” p1.save atau dengan cara lain yang lebih singkat: p2 = Post.new(:title=>“Hallo”, :content=>”Apa kabar?”) p2.save
PWI—Rails
7
Membuat Controller • Controller dibuat dengan sebuah generator: rails generate controller
• Penamaan controller diusahakan dalam bentuk jamak (plural) misalnya: rails generate controller Posts index
• Generator ini akan secara otomatis membuat: 1) File controller dalam app/controllers/nama_controller.rb 2) View-view untuk setiap action dalam app/views/nama/namaaction.html.erb 3) Helper-helper untuk controller tersebut dalam app/helpers/nama_helper.rb 4) Test-test untuk setiap action dalam test/functional/nama_controller_test.rb • Formatnya: class NameController << ApplicationController def action ... end def action ... end end
Seeding Database • Merupakan proses pengisian data baris-baris dalam database. Seed data dilakukan di db/seeds.rb • Contoh: posts = Post.create( [ { :title => "Lorem ipsum dolor sit amet", :content => "Lorem ipsum dolor sit amet, consectetur adipiscing elit”, :updated_at => "2011-02-10 18:50:22"} ] )
• Seed data diload dengan cara: rake db:seed
REST REST adalah singkatan dari Representational State Transfer. REST adalah sebuah style arsitektur untuk membangun aplikasi-aplikasi terdistribusi, aplikasi berbasis jaringan dan aplikasi-aplikasi perangkat lunak seperti World Wide Web dan aplikasi-aplikasi web. Walaupun teori REST masih agak abstrak, PWI—Rails
8
dalam konteks aplikasi Rails, REST memiliki arti bahwa setiap komponen-komponen aplikasi (seperti users, articles, dll) dimodelkan sebagai resouces (sumber) yang dapat di buat (create), dibaca (read), diupdate, dan didelete—operasi-operasi ini juga berhubungan dengan operasi CRUD (Create Retrieve/Read Update Delete) database relational dan juga berhubungan dengan empat method dasar HTTP request: POST, GET, PUT, dan DELETE. Route-route RESTful untuk semua controller didefinisikan dalam file config/routes.rb resources :users
CRUD
HTTP
Database
request
URl
Parameter
Action
Tujuan Menuju
READ
GET
/users
Index
menampilkan user Menuju
READ
GET
/users/1
ID
Show
READ
GET
/users/new
New
CREATE
POST
/users
Record hash
Create
READ
GET
/users/1/edit
ID
Edit
UPDATE
PUT
/users/1
DELETE
DELETE
/users/1
ID dan record hash ID
Update
halaman
yang
daftar
seluruh
halaman
yang
menampilkan user dengan id = 1 Menuju
halaman
untuk
membuat user baru Membuat user baru Menuju halaman
untuk
mengedit user dengan id = 1 Update user dengan id = 1
Destroy Menghapus user dengan id = 1
Empat Method Dasar HTTP Request: POST, GET, PUT, dan DELETE Hypertext Transfer Protocol (HTTP) mendefinisikan empat method/operasi dasar, yaitu GET, POST, PUT dan DELETE. Method-method ini mengacu pada operasi-operasi antara sebuah komputer klien (biasanya berjalan pada sebuah web browser) dan sebuah server (biasanya berjalan pada sebuah web server seperti Apache dan Nginx). GET adalah operasi paling umum di HTTP yang digunakan untuk membaca data dalam web. GET berarti request untuk “get a page” (permintaan untuk mendapatkan sebuah halaman) dan setiap kali Anda mengunjungi sebuah situs seperti google.com atau wikipedia.org, browser mensubmit sebuah request GET. PWI—Rails
9
POST adalah operasi yang paling umum berikutnya. POST merupakan request yang dikirmkan browser ketika Anda mensubmit sebuah form. Pada aplikasi-aplikasi Rails, POST biasanya digunakan untuk melakukan operasi “create” (walaupun kadang HTTP juga membolehkan POST melakukan operasi “update”). Misalnya, request POST dikirim ketika anda mensubmit sebuah form registrasi untuk membuat sebuah user baru dalam sebuah situs. PUT dan DELETE didisain untuk mengupdate dan menghapus data dalam remote server.
Form Helper
Method yang ada di controllernya:
PWI—Rails
10
Helper link_to link_to dapat men-generate path-path dan URL-URL
•
Path menuju halaman utama daftar post: link_to “All posts”, posts_path
sama dengan All posts
•
URL ke halmaan utama daftar post: link_to “All posts”, posts_ur
sama dengan All posts
Partial Partial adalah fragmen/penggalan kecil dari ERB dan HTML yang dapat disisipkan di mana pun di view. Partial disimpan di app/views/namacontroller/. Fungsi partial adalah pada saat terdapat bagian kode-kode dalam view yang selalu berulang pada beberapa view yang berbeda (atau bisa juga untuk meringkas baris-baris kode yang terlalu panjang), maka bagian kode ini dapat disimpan di dalam sebuah file yang cara pemakaiannya adalah tinggal menuliskan nama file partial tersebut di view-view yang akan menggunakannya dengan format penamaan file _namafile.html.erb.
PWI—Rails
11
Nama Partial Nama File Partial Foo _foo.html.erb Menu _menu.html.erb <%= render :partial => ‘partial_name’ %>
Contoh Misalnya halaman new dan edit biasanya menuliskan kode untuk menampilkan form yang sama. Maka ini bisa dipersingkat dengan menggunakan partial.
File partialnya: _form.html.erb
PWI—Rails
12
PWI—Rails
13