Sedikit Koreksi ariekeren tentang Toombila # alias was Sedikit Penerapan tentang Belajar Ruby Mulai dari mana?

Posted: February 23, 2007 in Ruby on Rails

~ UPDATE (28 February 2007): Check out New Toombila website and a summary of my review there (in English). May Ruby be with you. ~

Ini sebetulnya dari thread yang dibuat Pak Andry bagus banget di milis id-ruby mengenai belajar Ruby Mulai dari mana yang terinspirasi dari blog Pak Endy.

Iseng setelah baca blog nya Niwatori-kun tentang Laporan AOSS (kasian kepanjangan kalo lewat milis orang indonesia kan fakir benwit, jadi buat yang punya benwit lebih bisa langsung ke blog ini, semoga yang punya benwit lebih memberikan tulisan ini ke yang kurang punya benwit lebih, jadi biar semua kebagian). Gw sebetulnya juga pingin menyumbang jadi developer toombila, gw juga sebetulnya pingin ikut menerjemahkan ke sedikit bahasa asing yang gw mampu apa adanya (Jepang dan Prancis) sekaligus untuk menepis anggapan mereka yang belum tau kalau Rails sebetulnya bisa juga menulis karakter Jepang dkk (Korea, Mandarin). Tapi berhubung waktu gw yg kurang memungkinkan jadi gw nimbrung nyumbang garis besarnya aja ya. Titip salam hangat saja ya buat developer-developer Toombila selain Niwatori-kun :) Keep up the good work, guys.

Gw sebagai satu diantara sekian banyak Rubyist Indonesia turut mengucapkan selamat dan bangga atas adanya proyek open source Toombila ini, tulisan ini bukan untuk mematahkan semangat, apalagi menjelek-jelekkan, tapi justru untuk semakin meningkatkan semangat, memotivasi untuk semakin meningkatkan kemampuan dan saling belajar sama-sama (dgn menulis ini tolong jangan diartikan si Arie lebih pintar daripada yang dikoreksi, mari kita budayakan sama-sama NgeLmu). Catatan Penting: Disini juga gw nggak akan bawel, cerewet, apalagi sampe nangis-nangis dan menyumpah-nyumpah minta fitur-fitur yang lebih tinggi lagi, mari kita budayakan saling hormat kepada teman-teman developer, saling akrab, bukan malah memusuhi atau menanggapi dengan nada miring, ah cuma begitu cuma begini saja ah begitu saja dan lain-lain, lebih baik salah karena sudah berbuat walau sedikit ketimbang bicara besar tapi tidak berbuat. Sudah cukup sudah usaha beliau ini bikin bangga gw.. karena ini proyek open source, jadi kalau boleh gw kasih saran aja, jaga-jaga kesehatan juga ya / jangan sampai terlalu kecapekan, waktunya istirahat ya istirahat.. dan tetap semangat coding Rails ;-) cihuuuyy mimicking Naruto nih : Niwatori-kun wa sugoooi dattebayo # artinya Nih Niwatori orang Ruby pake Rails kereeeeeen kaaan ;-)

OK, kita mulai saja ya, sudah siapkan steak, jus favorit ato minuman favorit di samping? sudah duduk di kursi empuk atau sambil baring di kasur empuk dengan komputer kesayangan masing-masing dengan suasana aman nyaman tentram dgn udara sejuk dan aroma terapi? Kalau belum, disiapkan dulu. Kalau sudah siap, nah mari kita langsung saja.

Untuk membuat record otomatis di saat migration (note buat yang masih belum keracunan Ruby: fasilitas dari ORM Active Record yang bisa berubah sendiri jadi SQL), sebetulnya ada coding yang sampai 4 baris itu bisa dipersingkat menjadi 1 baris.

Mis. di file db/009_create_categories.rb menjadi gini:

%w(News Articles).each { |e| Category.create :name =>  e }

Kemudian field created_at itu sudah otomatis jadi biar gak usah pakai Time.now apalagi dipake’in strftime (formatnya segala).

Kemudian file addressbook_controller.rb, ini gw ambil 1 contoh file aja ya, selanjutnya Niwatori-kun yg kerjakan sendiri bersama teman-teman id-ruby disini kali aja ada yang tertarik jadi developer toombila, sori gw posting di milis id-ruby, bukan di milis toombila, ini karna gw pengen orang Indonesia bisa lebih banyak lagi berkembang pakai Rails (sebagai satu contoh kecil dari satu aplikasi yang tidak kecil dan killer yg dibuat pakai Ruby) dan lebih-lebih lagi Ruby (sebagai satu bahasa yg sebetulnya killer tapi di Indonesia masih kekurangan orang)

@group = Group.find( :all, :conditions => ["user_id = ?", session[:id].to_s ] )

ganti dengan :

@group = Group.find_all_by_user(current_user)

atau boleh dengan nama metode pilihan sendiri yang dirasa lebih intuitif dan Niwatori-kun nyaman dengan nama tsb.

current_user adalah metode yang nilai baliknya adalah session[:id].to_s # dipasang di lib (jadi ini penerapan Mixin yang di include dari controllor yang memerlukan saja) / lebih bagus lagi kalau bisa bikin plugin nya. Baca : script/generate plugin –help
dan buku Rails Plugins Extending Rails Beyond the Core

Kita lanjutkan lagi, di model addressbook.rb seharusnya merupakan wadah besar untuk urusan yang ada hubungannya database (ingat prinsip MVC dengan bahasa gampang arie keren = Model itu harus lebih gemuk daripada controller yang seharusnya kurus). Jadi untuk selanjutnya, selamat menggemukkan yang kurus (model), dan selamat mengkuruskan yang gemuk (controller), Niwatori-kun…

def find_all_by_user(current_user)
  find :all, :conditions => {:user_id => current_user}
end

perhatikan juga kurung buka dan kurung tutup ariekeren hapus untuk menunjukkan kehebatan bahasa Ruby yang fleksibel (bahasa gampangnya sambil jongkok bareng nih nghitung receh tapi nggak sampe monyong sih: fleksibel tuh pemaap), juga perhatikan juga ariekeren memakai fitur baru Rails-1.2.2 yang menggunakan conditions gaya Hash ketimbang model Array yang lebih cryptic seperti suck nya SQL, mimicking mereka yang complain tentang terbatasnya kemampuan manusia hingga menyimpan data di SQL.

Bila memang harus berjibaku dengan params[:addressbook][:userimage] (masih file addressbook_controller.rb pada metode create, biasakan untuk membuatkan variabel lokal saja untuk meningkatkan performance. Silakan buat code benchmark testing nya untuk membuktikan siapa yang lebih cepat. Jadinya begini:

params_addressbook_userimage = params[:addressbook][:userimage]

Baru dilanjutkan dengan kode berikutnya itu. Oh iya, itu di dekat akhir dari metode create, bisa juga pakai counter += 1 ;)

Hmm.. apalagi ya, harap maklum ya, gw baru lihat source code ini sih 10 menit yang lalu, untuk view nya sih garis besarnya sudah lumayan bagus (terstruktur, ada pemisahan yang baik antara XHTML dan CSS), Mungkin ada sedikit query select select di view ataupun helper itu aja kali ya ditaroh di model yang bersangkutan juga. tail -f development log gw sering complain soal ../images/rightcontent.jpg di css di dalam file content/index.rhtml itu mungkin bisa dibenahi ya. Kemudian juga untuk Regexp yang menggonta-ganti pakai gsub itu sepertinya kita harus cari cara biar solusinya pakai array aja supaya nggak gsub ke variabel bertumpuk-tumpuk gitu. Gw dulu pernah mbikin senada dengan itu, trus gw dikomentarin gitu sama Steve pas dilihatin sama dia, oops iya deh, sama beliau deh ;-) Pola Regexp yang benar, gw serahin ke orang Perl kronis aja yang lebih mumpuni untuk urusan Regexp. Untuk fitur AJAX gw positive thinking aja sepertinya ditaroh di TODO nya Niwatori-kun nih dilihat dari layout general nya ada

javascript_include_tag "prototype"
javascript_include_tag "effects"
javascript_include_tag "dragdrop"
javascript_include_tag "controls"
javascript_include_tag "general"
javascript_include_tag "tiny_mce"

bisa disingkat pakai array aja atau bisa juga yang selain tiny_mce pakai :defaults biasa. Karena proses meng include ini pada dasarnya memberatkan proses loading jadi sebaiknya hanya dipakai bila perlu saja. Kecuali kalau memang bakal mau dipakai / bisa dikasih komen saja dulu sementara.

Catatan terakhir, README nya uda lumayan bagus, mungkin bisa dipake’in format rdoc biar API lebih rapi, lebih bagus lagi kalau ada rekan2 Rubyist Indonesia yang bikin film screencast nya sekalian. Untuk menjaga kompatibilitas pakai rake rails:freeze:gems supaya rubygems yang ada di kompie Niwatori-kun beserta library yang diperlukan semua masuk ke direktori vendor # paragraf ini sekalian menjawab pertanyaan si Adit di komentar blog ini. Buat Rubyist yang lain, silakan langsung baca saja source code Rubygems tersebut, tentang Rails, tentang Rake biar puas soal rake rake rake ini! Cara-cara mbaca source code itu sudah berulang-ulang dibahas di milis id-ruby, jadi tinggal dipraktekin!

Buat mereka-mereka yang merasa ketinggalan kereta, teruskan teriakkan kebutuhan kalian tentang Rails di Indonesia. Juga tentang Ruby di Indonesia. Semua teriakan akan kebutuhan tersebut semuanya berharga, nggak ada yang sia-sia, nggak akan dicuekin, kalau pun masih belum sempat dijawab, itu artinya ditampung dulu. Harap maklum, dan mari kita sama-sama saling respek akan waktu (mis sibuk) dan semua hal kepada sesama Rubyist Indonesia.

Stop Press: Buat yang heran+penasaran kenapa sih Arie pakai nickname ariekeren? Itu gara-garanya si Arie ini selalu dipaksa-paksa oleh teman-temannya yang Hacker-hacker disebut keren-keren melulu’ … Padahal si Arie sudah berbusa-busa bilang Arie biasa-biasa aja, ya udah akhirnya dibenerin deh sekalian pakai nickname itu, so there shouldn’t be any curiousity about this anymore apalagi pake segala dibanding2in dgn tulisan Anne Ahira, Pak Priyadi, Pak Budi tentang orang paling keren yang basbang (basi banget) itu. Gak usah ya. Keren itu apa juga… Memang kita, manusia biasa ini mustinya bisa lebih mengerti hakikat tujuan hidup ini ketimbang gengsi-gengsian buat disebut keren doang. Kecuali buat para geek (2 yg disebut dan blogger2 lain yg pada ngikut kontes itu hihihi) yg uda gw sebut diatas buat having fun dengan Google sih ya nggak ada salahnya juga lah kalo Geek trus pinter tu emang bawaannya gitu.

toombila_rake_stats.png

toombila_login.png

toombila_forum.png

toombila_chat.png

toombila_beranda.png

toombila_adminuser2.png

toombila_adminuser.png

toombila_admin_content.png

toombila.png

Comments
  1. Niwatori says:

    Naahhhhh koreksi dan masukan yg begini ini yg gue nanti-nanti, hiks arigatou arie-san! **..terharu dan mulai jalanin gedit buat nyatet point2 koreksi..**
    – Siap! Minggu-minggu ini emang lagi drilling soal skinny controller fat model
    – Mixin? taro di lib? Etoo.. (tuh kan uneducated rubyistnya kumat wekekeke, kembali ke ebook)
    – Gsub, iya regexnya masih cheesy nih, malah bikin bug jadinya.. link2 yg ada h dan p lenyap (yahoo jadi yaoo).
    – Soal AJAX, emang di roadmapnya exploitasi AJAX baru start di 0.4 setelah beres2 bug dan ruby-way di 0.3.
    – Projectnya memang ga bakalan diporsir, lg sibuk bgt di kantor (walopun sama2 RoR juga). Ini bisa rilis untungnya karena akselerasi 12jam coding pas lomba codefest kemaren.
    – Sekali lagi tengkyu, banyak hal yg nanti menyusul.

  2. aban says:

    Tuh…ada koreksi yang membangun buat toombila ki… Thx

  3. Wuk wuk wuuuuk …….. pekik lantang burung hutan yang terbang, dan Bukkk!! Burung itu jatuh, lemas tapi tidak mati, Gero Gero Keroka Sensei mengangkat burung itu, ternyata ada sepucuk surat dari Arie Sensei.

    Gero Gero… ArieKeren da to kaita ka. Watshitachi no kodomo no toki isshoni asondeita wa mada oboeteiru ne. Gero Gero. Jprlrlr ngiing nging nging.. kwek kwek kwek.. bunyi gelombang yang di pas kan terlebih dahulu, ya, sudah pas, supaya gelombang sekarang gelombang Indonesia saja, bukan gelombang Jepang. Ah Gero Gero… tertulis di surat ini ArieKeren ya. Aku masih ingat dulu sewaktu kita kecil bermain bersama.

    Cucuku, berikut isi surat Arie Sensei:

    Gw masih belum bisa menampakkan wujud asli, adapun jika kalian merasa melihat kakak atau tulisan ariekeren itu artinya kalian sudah masuk terpengaruh jurus Genjutsu, Ni cuma mo bilang, Gw tadinya sih pengen

    Uhuk uhuk. Uhuk uhuk. Gero Gero Keroka Sensei terbatuk sedikit.. maklum sudah berumur tapi masih jadi Sensei. Dilanjut lagi.

    Gw sih tadinya pengen ngeblog soal gini, tapi gak jadi, soalnya aliran chakraterlalu tinggi, sehingga blog wordpress ini tak mampu menahannya. Jadi cek aja svn Toombila langsung untuk perkembangan terakhir (yang di trunk)

tinggalkan feedback konstruktif atau lebih baik diam

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s