Seminggu RoR dan Tentang Git

Sudah seminggu ini gue belajar menggunakan Ruby (atau Ruby on Rails). Banyak hal terjadi, In case bukan hanya jadi tau apa itu Ruby tapi akhirnya tau cara membuat progres pada git. Kenapa cuma seminggu? Udah nyerah? bukan. Pasalnya ini merupakan tantangan dari CTO suatu perusahaan yang saya lamar. Hah? gimana tuh?

Berawal dari Group Facebook Laravel PHP Indonesia

Loh kok? dari Laravel ke Rails (kita sebutnya Rails aja ya)? Apa gak kegok? Jelas, bingung? Jelas, Buntu? Hampir tiap ngerjain. Jadi si Mas ini memposting loker untuk full stack web developer. In case karena dia posting di group laravel dan gue udah cukup lama menggunakan Laravel jadinya ya coba saja bincang-bincang harap kepada Mas ini. Respon yang diberikan cukup bersahabat secara gue telusuri profil facebooknya dan tempat dia bekerja ternyata adalah seorang CTO. Well setelah bincang-bincang gue sepakat diberikan test membuat aplikasi website berupa task reminder. Jadi scopenya cukup sederhana. Ada task reminder, Tambah task, complete task, dan Hapus task (yang ini diluar scope tapi gue bikin sendiri). DAAAAN karena si Mas ini mau pakai Rails dan diberikan penawaran mau langsung Rails atau Laravel dulu, sudah jelas gue pilih Laravel dulu (daripada gue makin kalap karena belum pernah coba).

Bad solution but I've try to be objective (still dumb)

Ya karena dimulai dari Laravel ya gue mulai aja. Scaffolding login dan register usernya (pake otentikasi bawaan Laravel). Generate model, migration, dan set Data untuk DB. Build logicnya lewat controller. Lalu mulai tambah-tambah packagist buat memaksimalkan fungsionalitas (sumpah gue baru ngalamin pake packagist selain yang gue tau). Dan Tadaaa, Aplikasinya sudah jadi kurang dari seminggu. TAPI ada beberapa logic yang miss. Yaitu ketika aplikasi ini memiliki lebih dari satu user, ternyata langsung ke direct ke view task dan itu adalah kesalahan fatal. Karena di view task itu masih terdapat tasks dari user lain, padahal harusnya diberikan view task kosong (karena dia user baru). Tapi karena respon dari Mas ini sudah OK, gue lanjut ke rails (dan disisipi pesan kurang maksimal). Tapi semua kebingungan dan tantangan dimulai ketika menggunakan Rails.

Rails is full of magic And nothing different

Beneran ini. Struktur direktori Rails gak beda jauh sama Laravel. Kalo di Laravel kita pake composer, di Rails pake gem. Di Laravel pake JS, di Rails pake coffee. Di Laravel ada titik koma, di Rails gak ada. Tapi tetep gue masih bingung. Salah satu penyebab utama masih bingung karena gue belum terlalu "joss" belajar ruby. Banyak sintaks, rules, dan lain lain yang masih belum gue ketahui. Dan alasan berikutnya mungkin gue terlalu dimanjakan dengan segala hal yang ada di Laravel. Mulai dari scaffolding otentikasi, integrated vuejs, bahkan ada library yang langsung membuat admin panel dengan sedikit sentuhan logic bisa jadi powerful. Tapi di Rails malah lebih sulap lagi. Cukup ketik rails g scaffolding task name:string description:string dueDate:date dan boom, Jadilah CRUD dengan metode RESTful. Serius ini. Lo bikin CRUD kalo pake raw PHP tau sendiri kan kayak gimana? ini cukup dengan satu command line. Dan mungkin ini salah satu gerbang utama kenapa gue mulai suka sama Ruby. Kalau dihitung waktu efektif buat pengerjaan cuma 2 jam, sisanya cuma kebingungan dan cari sono-sini. Plus gue sambil berusaha menyelesaikan course Ruby dari codecademy supaya tidak terlalu kaget saat pengerjaan di Ruby On Rails. Tapi tetap saja hal itu terlalu magical kalau harus dikerjakan seminggu dengan tanpa pengalaman yang matang.

Version Control and stay update

Sebenarnya sudah jauh-jauh hari si Mas ini ngasih tau gue kalau setiap perubahan yang ada tolong di lakukan commit pada repository git. Namun yang paling aktif cuma yang Ruby on Rails saja, yang Laravel cuma sekali commit (wkwkwkwk). Memang gue udah lama mengenal yang namanya git tetapi tidak gue maksimalkan cara penggunaanya. Seperti apa? kayak kerjain proyek iseng yang udah jadi banget baru di push ke git, setelah itu tidak pernah diadakan perubahan atau update sama sekali (sekedar cuma nyimpen doang). Tapi gue jadi belajar banyak cara menggunakan git berkat Mas ini. Secara jadi PD make branching buat nambah feature baru, commit setiap update yang ada, lakukan merge, dll. Sumpah gue berterimakasih banget sama Mas ini. Mungkin nanti setelah ini gue bakal ngepost cara menggunakan git hehehe.

Deploy it

Setelah strugling selama 6 hari. Gak bisa tidur, kepikiran mulu, pokoknya stress out banget dah, akhirnya gue berani memberikan link repo github gue yang sudah jadi. Namun disinilah terjadi kebingungan. Pasalnya si Mas ini minta di deploy ke Heroku. Nah loh ngedeploy ke suatu server aja blom pernah ini minta dideploy. Dan atas nama pekerjaan gue beranikan untuk menerima tantanganya. Gue baca-baca cepat terus gue coba implementasiin. Mungkin sudah rada paham toh Heroku gak sesulit lo punya VPS buat testing-testing web appnya. Gue install Heroku-cli, coba example dari Heroku, dan cukup berkesan gue bisa menghidupkan aplikasi yang selama ini berdiam diri di localhost. Selanjutnya ya tentu saja langsung gue coba ke aplikasi yang gue buat. Tapi ditenggah jalan gue malah terkendala log error sepanjang 50 line. Buset gue bingung bin panik. Jatohnya ya deadline tinggal sehari.

Solved

Gue googling, gue tanya group facebook Ruby On Rails, bahkan si Mas ini sampai gue tanyain. Tapi tak kunjung dapat solusi. In case ini sudah seminggu tapi Masnya blom nanyain, oh berarti ada toleransi. Gue bingung sebingung-bingungnya orang bingung. Kudu gimana. Ternyata gue baca-baca di Stackoverflow ada masalah yang relatable sama masalah gue. Gue baca ternyata Heroku gak support sqlite3, supportnya postgresql. Gue coba aja install postgre, ganti environment DBnya, coba lakuin migrate dan berhasil. Ok masalah satu kelar dan gue coba deploy lagi. Tapi masih saja munculin error. kali ini "precompile failed". Bujug maksudnya apaan nih. Coba cari lagi dan ketemu tapi errornya masih sama saja. Di malam menjelang magrib gue coba lakuin lagi dan errornya gue baca satu-satu. TERNYATA ada parameter environment key yang harus diubah sesuai yang dikasih Heroku. Hmmmm... pas gue cek ternyata di comment sama Railsnya. Gue uncomment, taro environment keynya, coba lakuin lagi dan bersyukur sebanyak-banyaknya aplikasi gue berhasil terdeploy. Dengan perasaan senang gue copy linknya dan langsung kirim ke Mas itu.

Are you hired?

BENAR!!! Tentu belum. Sebenarnya gue cukup pesimis karena hasil kerja gue yang berantakan dan tidak memenuhi scope yang diberikan. Tapi berkat ini gue dapet pengalaman bagaimana best practicenya version control, berkenalan dengan rails, mengetahui hal baru, dll. Mungkin minggu ini atau tidak akan pernah dapat kabar. Ya pesan moralnya tetap belajar. Jika kamu tau cara bermain Mobile Legend, seharusnya kamu tau bagaimana cara coding.

contoh aplikasi cringe tanpa tedeng error handling

Comments

Popular posts from this blog

HARUSKAN BELAJAR C/C++?

Instalasi Tmux Dan Perintah Dasar.

Kembalian sekalian