Anda di halaman 1dari 19

Prerequisite

Ruby Basic

Introduction
Ruby adalah salah satu bahasa pemrograman berorientasi objek yang dinamis, simple dan
produktif dimana sintaks ruby elegan, natural, mudah dibaca dan ditulis. Sintaks Ruby mudah
dibaca seperti kita membaca sebuah kalimat.

5.times { print Belajar Ruby }

Pada contoh code Ruby diatas dengan mudah kita akan mengetahui maksudnya, yakni ketika
dijalankan akan mencetak text Belajar Ruby sebanyak lima kali.

Ruby dibuat oleh Yukihiro Matz Matsumoto pada pertengahan 1990. Bahasa pemrograman
Ruby ini terinspirasi dari beberapa bahasa pemrograman favorit creator-nya, yakni Perl,
Smalltalk, Eiffel, Ada dan LISP. Yukihiro meng-opensource-kan Ruby sehingga kita bisa
memakainya dengan bebas dan memodifikasinya.

Perlu diketahui bahwa semua yang ada di Ruby adalah object, sehingga setiap informasi dan
kode memiliki properties dan actions. Dalam OOP property biasa disebut instance variable
sedangkan action disebut method.

1 # Angka ini adalah object Integer dan memiliki banyak method. Contoh :

1.month.from_now
=> Sun, 21 May 2017 00:00:00 WIB +07:00

1.ordinalize
=> "1st"

1.times
=> #<Enumerator: ...>

Berbeda dengan bahasa pemrograman lainnya dimana angka dan tipe dasar lainnya bukan
merupakan suatu object.
Ruby Installation
Kita akan menggunakan version manager dalam melakukan instalasi Ruby. Ada beberapa
version manager yang biasa digunakan, diantaranya RVM dan rbenv. Pada buku ini kita akan
fokus menggunakan RVM.

RVM Installation
RVM singkatan dari Ruby Version Manager yang akan membantu kita dalam memanage versi
Ruby yang akan kita gunakan. Dalam RVM ini kita dapat mengelompokan gem-gem apa saja
yang akan kita gunakan. Gem adalah library Ruby, sepaket gem disebut Gemset.

Berikut cara melakukan instalasi RVM :


1. Pastikan apache dan MySQL telah terinstall, jika belum ikuti langkah-langkah dari sumber
ini: Panduan Instalasi apache dan MySQL
2. Jalankan perintah berikut pada terminal secara berurutan untuk memulai instalasi RVM
(tanda $ pada awal perintah menandakan command tersebut dijalankan pada terminal):

$ bash -s stable < <(curl -s


https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

$ source ~/.bash_profile
Note: Perintah ini berfungsi mereload terminal yang kita buka

$ rvm requirements
Note: Perintah ini untuk mengetahui lib-lib mana saja yang masih kurang, lalu instalkan semua lib-lib tersebut

3. Installing Ruby

$ rvm install 2.3.4


Note: Pada perintah ini kita akan menginstall Ruby versi 2.3.4

4. Jika menginginkan versi Ruby lainnya silakan ulangi langkah no.3 dan ganti sesuai dengan
versi Ruby yang diinginkan
5. Untuk menggunakan Ruby dengan versi tertentu kita dapat menggunakan perintah berikut:

$ rvm use 2.3.4


Note: Kita menggunakan Ruby versi 2.3.4
6. Jika mendapatkan error rvm use is not a function ketika rvm use 2.3.4 , maka kita
perlu menambahkan baris script ini pada ~/.bashrc dan ~/.bash_profile :

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"


Note: Setelah menambahkan script ini pada file ~/.bashrc dan ~/.bash_profile (file-file tersebut hidden, perlu menekan ctrl+h untuk
menampilkannya pada home directory) kemudian tutup terminal dan buka kembali (restart terminal)

7. Setelah Ruby terinstal kemudian kita buat gemset dan daftarkan gem-gem yang akan kita
gunakan. Sebelumnya kita telah menentukan ruby version mana (perintah rvm use
2.3.4 ) yang akan kita gunakan dalam gemset kita.

$ rvm gemset create my-first-gemset


Note: Nama gemset adalah my-first-gemset. Pemilihan nama bebas. Gemset ini akan kita gunakan bersama Ruby versi 2.3.4

8. Jalankan perintah berikut untuk menggunakan gemset yang telah kita buat:

$ rvm use 2.3.4@my-first-gemset


Note: Kita menggunakan my-first-gemset pada Ruby 2.3.4

9. Sampai sini kita akan menambahkan gem-gem yang diperlukan dalam develop aplikasi
Rails. Instalasi gem akan kita bahas pada bahasan selanjutnya.

RVM Commands
Jika kita membuka terminal baru maka terminal tersebut belum menggunakan Ruby dan
gemset manapun. Untuk itu kita perlu melakukan perintah dasar RVM berikut ini:

$ rvm use 2.3.4@my-first-gemset --default


Note: Flag --default akan melakukan override ruby version yang dipakai oleh system (yang tidak diinstal di dalam RVM). Sehingga
setiap kali kita membuka terminal baru, otomatis kita memilih ruby version dan gemset default tersebut

Disamping itu, RVM juga memiliki perintah-perintah dasar lainnya.

$ rvm list
Note: Untuk melihat daftar versi Ruby yang telah terinstal pada RVM

$ rvm gemset list


Note: Untuk melihat gem list yang telah terinstal pada gemset
$ rvm gemset create <gemset_name>
Note: Untuk membuat gemset baru

$ rvm gemset use <gemset_name>


Note: Untuk menggunakan gemset yang telah kita buat

$ rvm gemset delete <gemset_name>


Note: Untuk menghapus gemset dan gem yang telah terinstal didalam gemset tersebut

$ rvm gemset empty <gemset_name>


Note: Untuk menghapus gem-gem yang terinstall pada sebuah gemset

Selengkapnya tentang RVM dapat dipelajari pada official site RVM di https://rvm.io

Using Ruby
Setelah kita selesai melakukan instalasi Ruby pada RVM serta membuat gemset, selanjutnya
jalankan perintah ini pada terminal untuk membuka Ruby console:

$ irb

Makan terminal akan masuk kedalam Ruby console, denga output seperti dibawah ini dan kita
siap untuk eksplorasi bahasa pemrograman Ruby lebih jauh lagi.

ardian@ardian:~$ irb
2.3.4 :001 >

String
Text pada Ruby akan menjadi sebuah object String . Text dapat dibuat didalam single quote
maupun double quote.

2.3.4 :001 > string = "Hello world"


=> "Hello world"
2.3.4 :002 > string = ' Hello world'
=> "Hello world"
Contoh operator yang dapat digunakan pada object String antara lain:

2.3.4 :001> string = "hello " + "world"


=> "hello world"

2.3.4 :002> string << " welcome"


=> "hello world welcome"

2.3.4 :003> first_string = string[0]


=> "h"

2.3.4 :004> size = string.size


=> 19

2.3.4 :005> string = string.downcase


=> "hello world welcome"

2.3.4 :006> string = string.upcase


=> "HELLO WORLD WELCOME"

2.3.4 :007> string = string.reverse


=> "EMOCLEW DLROW OLLEH"

Boolean
Type data boolean selalu bernilai true atau false . Karena ini Ruby, tentu true dan
false adalah object. Perlu diketahui bahwa pada Ruby nilai false hanya dapat dibentuk
oleh false itu sendiri dan nil , selain itu akan membentuk nilai true . Type data boolean
digunakan pada if statement / conditional expression.

2.3.4 :001 > true && true


=> true
2.3.4 :002 > true || true
=> true
2.3.4 :003 > true && false
=> false
2.3.4 :004 > true || false
=> true
2.3.4 :005 > false && false
=> false
Assignment Idioms
Cara assign suatu data kedalam variable pada Ruby sama seperti bahasa pemrograman
lainnya. Dengan menggunakan operator = .

2.3.4 :001 > a, b = 1, 2


=> [1, 2] # nilai a = 1 sedangkan b = 2
2.3.4 :002 > a, b = [1, 2]
=> [1, 2] # operasi ini sama seperti operasi di atas, menghasilkan a = 1
dan b = 2
2.3.4 :003 > a = b = 3
=> 3 # nilai a dan b adalah 3
2.3.4 :004 > a += 1
=> 4 # sama saja dengan operasi a = a + 1. Karena a = 3 jadi hasilnya
adalah 4

Array & Hash


Secara umum array dan hash memiliki fungsi yang sama, yaitu membentuk list data. Pembeda
antara array dan hash yaitu pada index-nya. Pada array index selalu dimulai dari 0 sedangkan
pada hash kita sendiri yang menentukan index. Index pada hash disebut key.

2.3.4 :001 > a = []


=> []

2.3.4 :002 > a = [1, 2, 3, 4]


=> [1, 2, 3, 4]

2.3.4 :003 > a << 5


=> [1, 2, 3, 4, 5]

2.3.4 :004 > a[0]


=> 1

2.3.4 :005 > a[1]


=> 2

2.3.4 :006 > a.first


=> 1
2.3.4 :007 > a.last
=> 5
Note: Penggunaan array pada Ruby

2.3.4 :001 > h = {}


=> {}

2.3.4 :002 > h = {:a => 1, :b => 2}


=> {:a=>1, :b=>2} # pembuatan hash dengan key symbol

2.3.4 :003 > h[:a]


=> 1

2.3.4 :004 > h[:b]


=> 2

2.3.4 :005 > h = {}


=> {}

2.3.4 :006 > h = {'a' => 1, 'b' => 2}


=> {"a"=>1, "b"=>2} # pembuatan hash dengan key string

2.3.4 :007 > h['a']


=> 1

2.3.4 :008 > h['b']


=> 2
Note: Penggunaan hash pada Ruby

If Else Statement
Penulisan If Else pada Ruby mirip seperti bahasa pemrograman lainnya, yaitu:

if condition
execute_if_true
else
execute_if_false
end
Contoh penggunaan variasi If Else statement pada Ruby sebagai berikut:

2.3.4 :001 > a = true


=> true
2.3.4 :002 > if a
2.3.4 :003?> print("Masuk blok true")
2.3.4 :004?> else
2.3.4 :005 > print("Masuk blok false")
2.3.4 :006?> end
=> Masuk blok true
Note: If else sederhana

2.3.4 :001 > (a) ? print("Masuk blok true") : print("Masuk blok false")
=> Masuk blok true
Note: If else dengan ternary operator

2.3.4 :019 > a = 1


=> 1
2.3.4 :020 > if a == 1
2.3.4 :021?> print "a adalah 1"
2.3.4 :022?> elsif a == 2
2.3.4 :023?> print "a adalah 2"
2.3.4 :024?> else
2.3.4 :025 > print "a adalah selain 1 dan 2"
2.3.4 :026?> end
=> a adalah 1
Note: If else dengan kondisi lebih dari 2, gunakan elsif pada kondisi ke-2 dan seterusnya

Jadi if else statement pada Ruby terdiri dari if , elsif dan juga else .

Looping
Pada kebanyakan bahasa pemrograman looping biasanya dilakukan dengan for ,contohnya:

for (i=0; i<number_of_elements; i++){


do_something_with(element[i]);
}

Pada Ruby kita dapat melakukan hal yang sama, tetapi cara tersebut tidaklah elegan, kenapa?
Karena kita diharuskan menampung index pada i .

Kita dapat menggunakan each untuk melakukan looping terhadap suatu baris.
2.3.4 :001 > array = [1, 2, 3]
=> [1, 2, 3]
2.3.4 :002 > array.each do |temp|
2.3.4 :003 > print temp
2.3.4 :004?> end
123 => [1, 2, 3]

Kita juga dapat menggunakan for , while , until .

2.3.4 :001 > array = [1, 2, 3]


=> [1, 2, 3]
2.3.4 :002 > for i in array
2.3.4 :003?> print i
2.3.4 :004?> end
123 => [1, 2, 3]
Note: Looping dengan for

2.3.4 :001 > array = [1, 2, 3]


=> [1, 2, 3]
2.3.4 :002 > i = 0
=> 0
2.3.4 :003 > while i <= array.size
2.3.4 :004?> print array[i]
2.3.4 :005?> i += 1
2.3.4 :006?> end
123 => nil
Note: Looping dengan while

2.3.4 :001 > array = [1, 2, 3]


=> [1, 2, 3]
2.3.4 :002 > i = 0
=> 0
2.3.4 :003 > until i == array.size
2.3.4 :004?> print array[i]
2.3.4 :005?> i += 1
2.3.4 :006?> end
123 => nil
Note: Looping dengan until
Case Expression
Case expression sebenarnya if else statement dengan banyak elsif. Tetapi untuk lebih
mempermudah dalam pemahaman code alangkah baiknya menggunakan case expression.
Case expression ditulis sebagai berikut:

case input
when condition1
<do_condition1>
when condition2
<do_condition2>
when condition3
<do_condition3>
when condition4
<do_condition4>
else
<not_meet_any_condition>
end

Contoh penggunaanya sebagai berikut:

2.3.4 :001 > input = 3


=> 3
2.3.4 :002 > case input
2.3.4 :003?> when 1,2,3
2.3.4 :004?> puts "1, 2, or 3"
2.3.4 :005?> when 10
2.3.4 :006?> puts "10"
2.3.4 :007?> else
2.3.4 :008 > puts "Some other number"
2.3.4 :009?> end
1, 2, or 3
=> nil

Method in Ruby
Pembuatan method pada Ruby cukup mudah, yaitu selalu diawali dengan def dan diakhiri
dengan end .
def method_name
<processes>
end
Note: Penulisan method tanpa argument

def method_name(argument)
<processes>
end
Note: Penulisan method dengan argument

Berikut adalah contoh penerapan method pada Ruby:

2.3.4 :001 > def hello


2.3.4 :002?> "Hello, world!"
2.3.4 :003?> end
=> :hello

2.3.4 :004 > hello


=> "Hello, world!" # ketik nama method akan menampilkan text Hello,
world!

2.3.4 :001 > def hello(name)


2.3.4 :002?> "Hello, " + name + "!"
2.3.4 :003?> end
=> :hello

2.3.4 :004 > hello("Ardian")


=> "Hello, Ardian!"

2.3.4 :001 > def add(a, b)


2.3.4 :002?> a + b
2.3.4 :003?> end
=> :add
2.3.4 :004 > add(1, 2)
=> 3

Perlu diketahui bahwa method pada Ruby selalu melakukan return baris terakhir dari isi
method, kecuali kita mendefinisikannya pada tengah, contohnya :
2.3.4 :001 > def hello(name)
2.3.4 :002?> return "Who are you?" if name == "Ardian"
2.3.4 :003?> "Hello, " + name + "!"
2.3.4 :004?> end
=> :hello

2.3.4 :005 > hello('Ardian')


=> "Who are you?"
Note: Method ini akan melakukan return ditengah-tengah proses jika syarat kondisi terpenuhi, dalam hal ini jika name adalah Ardian

Sampai disini kita telah mempelajari bahasa Ruby dasar yang nantinya dapat dijadikan bekal
untuk develop aplikasi menggunakan bahasa Ruby dengan framework Rails. Selebihnya akan
kita pelajari lebih mendalam lagi penggunaan bahasa pemrograman Ruby ini sembari
mempelajari Rails.
Rails Introduction
Rails adalah sebuah framework untuk mengembangkan aplikasi berbasis web yang ditulis
dengan bahasa pemrograman Ruby. Rails didesain untuk mempermudah pemrograman
aplikasi web menggunakan asumsi bahwa cara yang ada pada Rails adalah cara terbaik untuk
mengembangkan aplikasi web. Itulah kenapa Rails disebut juga opinionated web app
framework karena beranggapan apa yang dibutuhkan programer telah disediakan oleh Rails.

MVC Concept
Rails mengusung konsep MVC (Model View Controller), dengan adanya pemisahan antara
domain logic / business logic dari inputan dan presentation logic terkait dengan antarmuka /
interface (GUI).

Pada kasus aplikasi web, domain logic pada umumnya terdiri dari model data seperti users,
articles, products, comments, dan interface adalah sebuah halaman web pada browser.

Figure: Skema MVC pada Rails framework

Ketika berinteraksi dengan aplikasi Rails, browser mengirim request yang diterima oleh web
server dan diteruskan kepada controller pada Rails. Pada beberapa kasus, controller akan
melakukan render HTML. Untuk aplikasi web yang dinamis, controller akan berinteraksi dengan
model yang bertanggung jawab untuk berkomunikasi dengan database. Setelah data diterima
dari model kemudian controller akan menampilkan data tersebut pada view / HTML.
Model
Model merupakan jembatan antara database dengan aplikasi Rails. Semua business logic
sebaiknya berada didalam model ini, misalnya untuk melakukan validasi sebelum data dikirim
ke database dan juga proses-proses spesifik dari model tersebut. Model pada aplikasi Rails
merepresentasikan class dari object. Sebagai contohnya, model user berisi class User.

class User < ActiveRecord::Base


validates_presence_of :first_name
validates_presence_of :last_name

def full_name
first_name + last_name
end

end
Note: Contoh model pada aplikasi Rails yang merepresentasikan class User.

View
Apapun itu yang tampil sebagai user interface pada browser berasal dari view, misalnya HTML,
CSS, Javascript dan berbagai frontend framework lainnya. View bertanggung jawab pada
bagaimana aplikasi akan berinteraksi dengan user pada web browser.

<%= form_for(user) do |f| %>


<div class="field">
<%= f.label :first_name %>
<%= f.text_field :first_name %>
</div>

<div class="field">
<%= f.label :last_name %>
<%= f.text_field :last_name %>
</div>

<div class="action">
<%= f.submit 'Save' %>
</div>
<% end %>
Note: Contoh view pada aplikasi Rails, view ini berisi input untuk mengirim first_name dan last_name ke model User, melalui
controller.
Controller
Ketika user telah berinteraksi dengan user interface, maka controller akan merekam setiap
event dari interface tersebut. Controller bertindak sebagai jembatan antara view dengan model.

class UsersController < ApplicationController

# POST /users
POST /users.json
#
def create
@user = User.new(user_params)

respond_to do |format|
if @user.save
format.html { redirect_to users_path, notice: ' User was
successfully created.' }
format.json { render :show, status: :created, location: @user }
else
format.html { redirect_to :back, notice: 'Failed to create user.' }
format.json { render json: @user.errors, status:
:unprocessable_entity }
end
end
end

private

def user_params
params.require(:user).permit(:first_name, :last_name)
end
end
Note: Controller menerima event dari view, dalam hal ini create user dengan inputan first_name & last_name.

ActiveRecord
ActiveRecord adalah ORM (Object Relational Mapping) yang disediakan oleh Rails. Fungsinya
adalah untuk menjembatani database dan object oriented.

Dengan adanya ActiveRecord pada Rails, maka :


- Table di database menjadi class model
- Row di database menjadi object dari class model tersebut
- Column pada row menjadi a
ttribute / method dalam object tersebut
Sebagai contohnya :
- Tabel users menjadi class User,
isal id 1, n
- 1 baris pada tabel users, m ame Ardian menjadi object user ,
- name pada tabel users menjadi attribute dari object user ( user.name )
ActiveRecord Query Interface

Naming Convention

Primary Key & IDs

Create Read Update Delete

Model Validation, Relationship, and Scope (ada di session 3)

Validation

Relationship

Scope

Class Method

Instance Method

Performance Loading

ActionController

ActionView

Database Handling

Database Migration

Master & Dummy Data

Junior Rails Developer Dalam 3 Minggu

Comitting Rails Application


Installing Required Gems

Creating New Application

Controller, Views, Helper, and Routes

Generate First Model

Create

List

Show

Update

Delete

File Attachment

Paging

User Authentication & Authorization

Rails & AJAX

Namespace, Exception Notifier & Debugger

Rails Test Suite

Rails Deployment
Cheats

Rails Scaffolding

Devise

Anda mungkin juga menyukai