Rails on Windows .. Layak kah?

Ingin sekali saya mengembangkan Ruby on Rails (RoR) setelah saya selesai kuliah di sini karena karakternya yang cocok dengan materi yang sering saya ajar yaitu “Pemrograman Berorientasi Obyek”. Biasanya saya menggunakan Java sebagai bahasa untuk prakteknya, tetapi saya memiliki kesulitan ketika membuat koneksi antara kelas dengan sistem basis data yang berkarakter non obyek.

Berbeda dengan PHP yang sangat kompatibel dengan windows walaupun lebih cocok dengan linux, RoR sangat disarankan menggunakan linux. Tetapi untuk meningkatkan jumlah penggemar jenis bahasa baru ini mau tidak mau harus menggandeng windows mengingat jumlah pengguna windows yang masih menggurita di Indonesia. Berikut ini pengalaman saya menggunakan RoR yang berbasis windows.

Pertama-tama kita harus berkomunikasi dengan situs resmi RoR untuk memperoleh informasi dan software open source-nya. Untuk yang berplatform Windows kita dapat mengunduh dari: http://railsinstaller.org/en. Klik pada link download untuk Windows:

Jika Anda masih pemula, jangan khawatir dengan link-link di bawahnya karena dengan mengunduh Windows Ruby 1.9 Anda berarti mengunduh semua perlengkapan di bawahnya tersebut. Setelah di download, Anda tinggal mengekstrak dan menginstall dengan single click ala Microsoft, di mana untuk instalasi tinggal mengklik langsung jadi. Beda jika Anda menginstall lewat ubuntu misalnya. Anda harus menginstall apache dulu, menginstall postgresql atau mysql dulu, tetapi dengan download untuk windows, Anda tinggal menjalankan saja.

Saya sudah mencobanya, sedikit ada masalah ketika melakukan proses routing. Routing adalah proses yang mengarahkan suatu page ke arah tertentu. Misalnya Anda membuka situs http://rahmadya.com, maka Anda akan diarahkan ke mana oleh route aplikasi tersebut. Ternyata routing tidak berjalan, setelah saya selidiki ternyata Anda harus mengupgrade ke Rails versi terakhir (ketika saya buat tulisan ini masih berversi 4.0.0). Untuk apgrade, hubungi situs resmi rails yang menyediakan GEM. Gem adalah fasilitas rails seperti library di Windows. Situsnya: http://rubygems.org/gems/rails. Search saja di kolom searching, isi dengan kata kunci “rails”, maka Anda akan menjumpai rails versi terakhir. Ikuti cara downloadnya.

Ternyata ada rails terbaru versi 4.0.1. Untuk mengecek versi rails Anda, masuk ke command promt (Start – run – cmd), ketik saja ‘rails –v‘.

Ternyata versi rails saya masih 4.0.0. Anda tidak diharuskan mengupgrade, tetapi ada baiknya diupgrade untuk memperoleh hasil yang maksimal dari RoR. Untuk menginstallnya ada dua pilihan:

  1. Pada command windows ketik: ‘gem install rails’
  2. Pada Gemfile yang terletak di <folder_project>, tambahkan: ‘gem “rails”, “~> 4.0.1”

Tampak proses upgrade dari rails 4.0.0 ke rails 4.0.1. Berikutnya kita tinggal membuat aplikasi dengan rails, sangat mudah dan tidak membutuhkan banyak waktu.

Membuat Aplikasi Authentikasi dengan Ruby and Rails – 1

Berikut ini sedikit tip n trik untuk membuat aplikasi Ruby and Rails (RoR) yang berjalan di platform Linux Ubuntu 13. Masuk ke Terminal:

rails new simple-auth -d postgresql

Maksudnya adalah membuat project baru RoR dengan nama simple-auth dan database postgresql. Jika selesai, nanti di folder /home akan muncul folder simple-auth. Masuk ke folder tersebut dengan mengetik:

cd simple-auth

Di sana anda akan menjumpai folder Gemfile yang harus sedikit diedit untuk mengaktifkan bahasa ruby. Cara mengaktifkannya adalah dengan menghapus symbol “#”.

SImpan dan jangan lupa setiap melakukan perubahan pada file Gem, kita harus melakukan bundle install. Masuk ke terminal, jalankan:

bundle install

Sekarang kita harus melakukan perubahan pada postgresql, yakni pada file database.yml yang terletak di folder Config pada folder aplikasi kita (Simple-Auth). Ganti seluruh user dengan nama superuser postgresql, misalnya csim. Setelah itu jangan lupa menekan tombol simpan ‘save’. (Note: ada tiga yang harus dirubah).

Jangan lupa setiap melakukan perubahan pada configurasi database.yml, lakukan rake:

rake db:create:all

rake db:migrate

Berikutnya kita akan membuat controller dengan nama ‘new’. Rails termasuk framework Model View Controller (MVC). Buat dengan cara mengetik:

rails g controller users new

Akan terbentuk controller dengan nama new. Begitu juga untuk model user, buat:

rails g model user email:string password_hash:string password_salt:string

Lakukan migrate database

rake db:migrate

Cari file UsersController di folder /app/controller. Ekstensinya adalah ‘.rb’. Isi program seperti contoh berikut ini:

Berikutnya masukan kode berikut untuk views pada new.html

  • <h1>Sign Up</h1>
  • <%= form_for @user do |f| %>
  • <% if @user.errors.any? %>
  • <div class=”error_messages”>
  • <h2>Form is invalid</h2>
  • <ul>
  • <% for message in @user.errors.full_messages %>
  • <li><%= message %></li>
  • <% end %>
  • </ul>
  • </div>
  • <% end %>
  • <p>
  • <%= f.label :email %><br />
  • <%= f.text_field :email %>
  • </p>
  • <p>
  • <%= f.label :password %><br />
  • <%= f.password_field :password %>
  • </p>
  • <p>
  • <%= f.label :password_confirmation %><br />
  • <%= f.password_field :password_confirmation %>
  • </p>
  • <p class=”button”><%= f.submit %></p>
  • <% end %>

Untuk masalah enkripsi, kita tinggal memakai bundel yang ada pada file Gem, buka kembali Gemfile, masukan gem “bcrypt-ruby”, :require => “bcrypt”

Jangan lupa, lakukan lagi bundle install setiap kali melakukan perubahan pada Gemfile.

bundle install

Buka file user.rb pada folder /app/models/ dan isikan kode berikut ini:

  • before_save :encrypt_password
  • def self.authenticate(email, password)
  • user = find_by_email(email)
  • if user && user.password_hash == BCrypt::Engine.hash_secret(password, user.password_salt)
  • user
  • else
  • nil
  • end
  • end
  • def encrypt_password
  • if password.present?
  • self.password_salt = BCrypt::Engine.generate_salt
  • self.password_hash = BCrypt::Engine.hash_secret(password, password_salt)
  • end
  • end

Tambahkan pula attribute berikut (dibawah before save):

  • attr_accessor :password
  • before_save :encrypt_password
  • validates_confirmation_of :password
  • validates_presence_of :password, :on => :create
  • validates_presence_of :email
  • validates_uniqueness_of :email

Hal yang berikut ini sangat penting, yaitu routing, di sini kita mengarahkan user ketika menekan tombol tertentu. Tambahkan code ini pada folder route.rb yang terletak di folder /app/models. Sisipkan di bawah get “users/new” tiga baris berikut ini:

Coba jalankan RoR dengan melakukan instruksi di bawah ini:

rails server

Biarkan console seolah-oleh hang, yang tandanya server sedang bekerja. Jika ingin mematikannya tinggal menekan Ctrl-C. Buka browser dan link pada http://localhost/3000

Coba klik Create user, lihat apa yang terjadi. Coba masuk ke database. Apakah sudah tersimpan? Misalnya saya masukan email: rahmadya@yahoo.com

Kuliah Web Application

Untuk jurusan Computer Science (Ilmu Komputer), tiap mahasiswa diwajibkan mengambil mata kuliah web application yang diasuh oleh Dr. Matthew M. Dailey. Doktor asal Amerika Serikat ini ahli di bidang pengembangan web.

Sempat ikut kuliah perdana, saya terpaksa harus kembali ke Indonesia karena tiap penerima beasiswa diwajibkan mengikuti serangkaian acara hingga penandatanganan kontrak dengan DIKTI. Dimulai dengan pengurusan Visa di kedutaan Thailand, dilanjutkan dengan Lokakarya pra keberangkatan yang dihadiri oleh hampir seratus orang. Setelah hampir 3 minggu menunggu SP Setneg, akhirnya dokumen selesai, ditandai dengan penandatangan kontrak di DIKTI, gedung D lt 4.

Setelah kembali ke AIT, saya dihadapkan dengan beberapa kesulitan akibat absen perkuliahan selama hampir sebulan. Beberapa dosen memberi keringanan, dari komposisi yang Mid : Final = 40 : 60 menjadi 20 : 80 hingga adanya kelas tambahan.

Berbekal tanya sana sini, akhirnya sedikit demi sedikit saya mampu mengikuti alur kuliah Web yang sangat ditakuti oleh sebagian besar mahasiswa CS di AIT. Terpaksa saya harus ikuti handout lab hingga yang saat ini dipelajari (Ajax). Cukup sulit, terutama karena laptop saya yang harus VMWare karena kapasitas C yang minim, sementara Laptop dari AIT belum tiba.

Diawali dengan install ubuntu 13, saya mulai mengeksplore bahasa yang baru saya kenal yaitu “Ruby on Rails (RoR)”. Bahasa ini lumayan ampuh dari security, terbukti telah digunakan di Yellow Page dan Twitter, dibanding PHP yang diterapkan di Facebook dan banyak di hack orang.

Masih ada waktu dua minggu untuk persiapan Mid Term. Semoga bisa mengikuti dan menjawab soal-soal yang diujikan, Amiiin.