Yukk .. Membuat Aplikasi Blog dengan Ruby on Rails

Introduction:

Aplikasi blog maksudnya kita akan membuat sistem yang menyediakan sarana bagi user untuk membuat suatu tulisan (content) dan user itu maupun yang lain dapat memberikan komentar (comment) terhadap tulisan tertentu. Jadi prinsipnya kita akan menyediakan dua model yaitu model content dan model comment. Model di sini merupakan objek yang akan diterjemahkan ke database yaitu tabel contents dan tabel comments. Sedikit ribet memang di rails, terutama konvensi ketika model single (content) ditranslasikan ke tabel menjadi plural/jamak (contents). Kita menggunakan relasi one-to-many dimana satu content memiliki lebih dari satu comment, sementara itu comment harus dimiliki (has_belongs) oleh suatu content.

Tutorial:

Arahkan ke direktori dimana aplikasi rails kita akan kita letakkan. Buat program baru, misalnya kita beri nama blog.

rails new blog

Artinya kita akan membuat suatu project dengan nama blog. Jika Anda menggunakan database postgresql tambahkan –d postgressql di sebelah kanan blog. Pindahkan folder pada command prompt Anda ke folder blog yang baru saja terbentuk (cd blog). Buat model content dengan atribut name dan content.

rails g scaffold article name content:text

Kode di atas menghasilkan model article dengan atribut name dan content, dan operasi diberikan oleh Scaffold (New, Show, Update, dan Delete). Bisa juga ditulis rails g scaffold article name:string content:text. Tetapi secara default, RoR akan memberikan struktur data string.

rails g scaffold comment article:belongs_to name content

Kode di atas akan menghasilkan model comment dengan atribut name dan content dengan operasi langsung diberikan oleh scaffold. Migrasikan menjadi tabel:

rake db:migrate

Buka file \models\article.rb. Tambahkan:

has_many :comments

Sedangkan pada file\models\comment.rb, tambahkan:

Belongs_to :content

Karena pada saat generate scaffold comment kita sudah menambahkan content:belongs_to, maka tidak perlu menambah relasi di atas. Migrasikan model anda ke database.

rails server

Buka http://localhost:3000/articles dan masukan satu data baru. Jalankan dan ketika menekan tombol show, kita akan menambahkan comment milik content yang bersangkutan. Maka pada metode show, kita harus memanggil variabel comment. Pada \controller\contents_controller.rb tambahkan pada metode show (def show):

@comment = Comment.new(article_id: @article.id)

Artinya kita akan menambahkan comment baru berdasarkan content_id dari pemilikinya yang saat ini sedang tampil. Jika tidak diisi, ketika akan menambahkan comment pada contents#show, akan muncul eror di form_for (cannot contain nil .. dst). Secara default, show pada daftar content tidak menyertakan data comment, oleh karena itu SISIPI (pada line 12) kode pada \view\articles\show.html.erb:

<% unless @article.comments.empty? %>

<h3><%= pluralize(@article.comments.size, ‘Comment’) %></h3>

<% end %>

 

<div id=”comments”>

<% unless @article.comments.empty? %>

<%= render @article.comments %>

<% end %>

</div>

 

<h3>Add a comment:</h3>

 

<%= render partial: ‘comments/form’ %>

Letakkan kode di atas sebelum link_to. Di sini render partial: bemaksud menyisipi form menambahkan comment baru pada form menampilkan (show) content.

Buat satu file baru di \views\comments\ dengan nama _comment.html.erb. Isi dengan kode berikut:

<div class=”comment” data-time=”<%= comment.created_at.to_i %>”>

<strong><%= comment.name %></strong>

<em>on <%= comment.created_at.strftime(‘%b %d, %Y at %I:%M %p’) %></em>

<%= simple_format comment.content %>

</div>

File _comment.html.erb merupakan file template untuk render @content.comment. Jika tidak ada ini maka akan ada pesan “Missing Templat Contents#show“. Anda harus menghasilkan aplikasi sederhana yang menambah content articles dengan komentarnya. Untuk membuat tampilan yang indah, Anda harus sedikit mengatur layout html dan css aplikas yang baru saja Anda buat.

Praktek Dunia Kerja vs Teori di Kampus

Beberapa ilmu berasal dari teori, tetapi beberapa juga berasal dari praktek berupa uji coba. Bahkan ada ilmuwan terkenal yang jago dalam uji coba di laboratorium tetapi lemah dalam analisa matematis misalnya Faraday (walaupun masih belum jelas karena sikapnya yang praktis dan rendah hati serta anti popularitas). Berbeda dengan Albert Einstein yang benar-benar matematis. Dari pada berdebat lebih baik ambil jalan pintas, gunakan dua-duanya.

Saya ingat waktu pertama kali bekerja sebagai tenaga pengajar di suatu institusi komputer. Mengajar adalah pekerjaan pertama saya karena waktu itu jamannya krisis (awal tahun 2000) dan sulit mencari kerja. Suatu kali saya menguji sidang tugas akhir seorang siswa, temanya tentang jaringan komputer. Kami beradu argumentasi tentang pewarnaan pada kabel utp cat 5. Dia menyatakan bahwa warna pada kabel berpengaruh, dan saya tidak setuju dengannya, dia tidak bisa membuktikannya. Beberapa tahun kemudian saya diterima bekerja di salah satu bank berskala nasional di Jakarta. Di salah satu cabangnya di daerah asem reges saya menemukan jawaban mengenai pewarnaan pada kabel. Kejadiannya adalah ketika bank tersebut mengontrak suatu perusahaan jasa cabling. Dia memasang kabel jaringan tanpa memperhatikan warna, asalkan tetap straight dan ditest dengan tester ok, tiap pin terhubung dengan baik. Tetapi apa yang terjadi? Waktu itu tidak ada masalah sesungguhnya ketika PC masih menggunakan IBM Pentium III. Kebetulan ada project pergantian PC dan ketika dipasang dengan PC HP Pentium 4, walaupun sudah disetting IP Address dengan benar tetap tidak terhubung. Kebetulan pihak vendor pemasang kabel masih ada waktu itu. Dia tetap ngotot bahwa saya yang salah mensetting IP address. Akhirnya saya buktikan dengan memasang satu kabel sesuai standard warna, ternyata PC baru tersebut berjalan normal (reply ketika di ‘ping’). Sementara ketika saya colok dengan kabel buatannya tidak berjalan. Dan saya jelaskan juga bahwa kabel buatannya memang bisa berjalan dengan PC lama tapi tidak dengan PC baru. Akhirnya mereka melakukan crimping ulang seluruh kabel yang dia pasang, sebab kalau sampai laporan ke pihak manajemen, vendor tersebut tidak akan dipercaya lagi. Sampai tulisan ini dibuat, saya tidak mau melaporkan hal tersebut ke pihak manajemen karena saya khawatir berdosa karena mematikan rejeki perusahaan orang beserta dengan karyawan-karyawannya. Yang penting mereka sadar atas kekeliruannya.

Beberapa teori yang saya pelajari, sangat membantu ketika mempraktekannya secara langsung di dunia kerja. Jika ada yang beranggapan bahwa kuliah IT tidak ada gunanya, kalah dengan kursusan, jangan salahkan kalau anda terhukum atas pandangan Anda, apalagi sampai membuat blog dan mempublish dan banyak yang percaya dengan anggapan keliru Anda. Sama saja Anda melarang menanam padi, lebih baik beli saja karena lebih murah, dari pada menanam sendiri lebih mahal dan buang-buang waktu. Anda akan tergantung. Alangkah baiknya jika kita kirim ahli pertanian ke negara yang memiliki pengalaman bercocok tanam, agar ilmunya bisa ditularkan ke petani kita sehingga hasil produksinya lebih baik dan harganya terjangkau. Begitu pula ketika Anda beranggapan kursusan lebih baik, karena memiliki ketrampilan, sertifikat profesional dan sejenisnya, dan tidak ada gunanya perguruan tinggi memiliki jurusan IT, Anda akan tergantung. Alangkah baiknya kita kirim orang untuk belajar ke tempat lain yang memiliki pengalaman mengutak-atik, merekayasa, dan mengembangkan IT, agar ketika selesai belajar dapat menularkan ilmunya sehingga bisa membuat basis IT yang independen dan bebas platform.

Beberapa bidang sangat sulit disentuh oleh dunia praktek seperti manajemen, penjadwalan, organisasi, leadership karena untuk mempraktekannya Anda harus masuk ke wilayah tersebut. Sementara untuk bekerja sebagai pimpinan, pengambil keputusan, divisi manajerial, jarang perusahaan yang menerima karyawan tanpa pengalaman kerja (kecuali jika Anda masuk lewat jalur ‘khusus’). Karena saya tidak pernah memperoleh teori di bidang itu, saya pernah sekali hampir dipecat karena lalai melakukan manajemen di salah satu cabang di Pulogadung, padahal cabang itu merupakan kantor kas dengan transaksi harian hampir menyentuh angka milyaran. Bayangkan, bagaimana mungkin tiga jenis backup (kaset, harddisk, pc backup) tidak ada yang berfungsi ketika server down. Sungguh amat berharga karena kurangnya teori mengakibatkan kehilangan hampir 60 juta rupiah waktu itu (kurs 1 dollar masih seputar rp 5000-an). Tetapi tetap saja, pengalaman adalah guru yang amat berharga. Lantaran itu pulalah Bill Gate enggan memecat karyawannya yang membuat kerugian besar akibat salah disain. Termasuk saya, tidak jadi dipecat karena jika saya dipecat selain mereka kehilangan 60 juta rupiah, juga kehilangan karyawan yang memiliki memiliki pengalaman seharga itu. Tentu saja beda kalo hilangnya 60 juta itu karena dikorupsi (kalo dipertahankan bisa korupsi lebih hebat lagi).

Kesimpulannya, antara teori dan praktek saling mendukung. Mengapa Anda mengharuskan seorang IT mengerti pemrograman bahasa tertentu? Padahal algoritma itu yang terpenting. Tahukah Anda? mahasiswa doktoral antara tahun 1960 – 1970 kebanyakan menghasilkan sebuah bahasa pemrograman. Cukuplah sadari dengan rendah hati jika kita hanya bisa membuat program enterprise, hanya bisa mengelola jaringan, hanya bisa mengamankan suatu sistem, hanya memiliki tiga atau lebih sertifikat IT, hanya bisa membuat pusat training IT berskala internasional, hanya bisa membangun kampus IT world class. Jangan sampai menyombongkan diri lantaran memiliki pengalaman kerja sebagai pelayan IT cukong-cukong, meretas situs2 orang, menyepam google/orang lain sambil menjajakan online obat kuat.