五倍紅寶石-人生不能重來,但 GIT 可以 & Ruby on Rails 從零開始課程


welcome learning ruby on rails

課程老師是高見龍(外號龍哥),也是身為五倍紅寶石的創辦人員之一,活躍於 ruby 社群之中,時常會推廣或是舉辦 ruby 和 ruby on rails 相關活動,對 ruby 程式圈極具有影響力和貢獻的人物,能有機會上到龍哥所開課的課程是與有榮焉的事情!


人生不能重來,但 GIT 可以

在上 rails 的課程之前,會先安排上額外贈送的 git 版本控制的課程,學習 git 的指令操作、運作流程、架構,讓你在開始寫一個專案可以結合了 git 使用,它本身存在目的是,讓你可以方便好管理每個檔案程式碼的版本修改和保存,所以通常一個專案會保存很多的 git 存檔紀錄,不論你是要回朔到哪一段時間的紀錄檔都是輕而易舉的,猶如你曾經逝去的愛情無法重來,而 git 卻可以挽回你之前曾經丟棄的程式碼,甚至合併現在的程式碼改變之後的發展,一切主導權在你手上,只要下簡單的指令,命運就產生了變化。

此外透過龍哥所準備的每個情境方式去學習了git 新增、存檔、上傳、切換版本……等等指令使用方式和發 PR 流程還有衝突解決,有更深刻瞭解每個環節該執行的指令,最後課程教你如何使用 git 和一群人進行協同開發、合併專案,讓你可以好好享受和團隊分工合作的樂趣,就像遊戲打副本任務組隊一起打怪速度更怪、更有效率,在課程中我學習了git 的相關應用,爾後可以對專案方便進行控管,以一般公司對程式員的求職條件,會一套版本控制是程式員必備的技能,也可以替你的履歷加分!


Ruby on Rails 從零開始課程

進入課程主題之前,龍哥說了一段和rails相遇的故事,敘說:「因看了某一場國外conference 的影片,ruby on rails 的老爸 ( David Heinemeier Hansson ) 在台上如何短短 15 分鐘內,使用 scaffold 寫完一個有基本功能具有 CRUD 網站,對此而吸引並踏上了 rails 後端學習旅程」,不過我也是因為這樣可以快速開發而對 ruby on rails 產生興趣,再加上又可以寫更少的程式碼。

龍哥另外提供自己撰寫的教材給我們當作課程補充,名稱:為你自己學ruby on rails在 rails 中文版教材中寫得相當完整,很多觀念也講解得很清楚,我自己在上 rails 課程之前也先行練習過教材的範例。

課程主題第一堂課從基本的環境安裝開始,在還沒開始寫程式之前往往最難的就是安裝環境的問題,通常在這裡都會卡關很久也是最是麻煩的事情,學員在安裝過程中所遇到的一些錯誤訊息,都可以尋求助教或龍哥的幫忙,問題都可以快速得到解決,龍哥很鼓勵所有同學有任何技術上或想法上的相關問題可以積極的發問,不要遺留下了任何遺憾在課程上。

課程學習的順序是從 ruby → TDD ( 測試 ) → rails,剛開始一定也會像我同樣的疑問?為什麼順序不是 ruby → rails → TDD (測試),龍哥說:「寫測試就像在寫它的文件的規格一樣,先把文件規格定好,後面再寫 rails 時可以感受到它的魔力之處」,因為有寫測試,這樣一來後面在寫rails時可以確定你的功能有極大機率不會有問題,不過寫測試前提條件要在時間充裕的情況下才有時間寫。

這三週課程下來你可以學習到的主要項目有 ruby 常用語法、MVC 架構、使用 gem 加速開發、TDD 測試、CRUD、資料庫關聯……等等,龍哥帶我們用這些學習到的項目,在課程上練習寫簡單投票系統、mail 發信通知、購物車+金流串接,直到最後的網站佈署,每次的課程中都有足夠課堂練習時間可以敲打你的程式碼,不過我覺得最棒的是,最後一堂課程五倍紅寶石有安排企業媒合講座,讓即將成為 rails 工程師之前都可以瞭解業界所需要的條件,即使能力沒有達到,但對於面試的準備可以更有方向,全端課程完整結束後接下來就是自己後續持續地加緊練習,這樣你才有機會成為一位厲害的工程師。

最後我透過自己很單純的想法,做了一個簡單動物認養平台網站,現階段網站存在著許多 bug,後續也會增加新功能,陸續維護中…….
(更多圖片在最下面)

專案網址:https://afternoon-peak-79097.herokuapp.com/
GitHub:https://github.com/bear30921/animal_adopt


專案描述

使用者可以在網頁上註冊會員後,張貼待領養動物名單,每一筆動物資訊附加有收藏功能,加入成為收藏項目使用者可以至我的收藏名單查看,網頁設有針對地區、種類、年齡搜尋項目,如有喜歡的動物可以點擊動物圖片再點擊 Facebook 小圖示進一步使用 Facebook 和對方詢問。


專案靈感來源

起初只是因為我單純喜歡貓咪、再加上看到 Facebook 的貓咪領養社團有網友在張貼領養資訊,因為資訊太繁雜沒有統一的標準並且不能針對地區篩選,所以才會以貓咪認養的方向寫這個專案,後來想想這樣對想認養狗似乎太自私了,所以又多增加狗種類項目。(雖然這樣對其他動物也是很自私Q_Q)


開發過程

這個專案第一次前後端、架構、版面配置自己來,對來我說是很有挑戰性。

前端技術
html / css / sass / javascript
後端技術
ruby / ruby on rails
使用的gem
gem "jquery-rails"
gem "paperclip"
gem "devise"
gem "will_paginate"
gem 'aws-sdk'

一開始專案規劃,要先把主要的資料庫的 tabel、欄位、網頁的架構和配色先擬定出來,光是前置作業可以準備一段時間了,也參考各大網站尋求靈感如:dribbble、pinterest。

其中我認為最困難的項目是寫資料庫的關聯,像是一個使用者可以張貼很多動物資料,使用者和動物資料可以擁有很多的收藏,表面看起來是多對多的關係不過似乎好像不太一樣,而Model 要加一個 source 語法來解決,參考網路上的解決方法。

Cat Model
has_many :favorited_by, through: :favorites, source: :user
User Model
has_many :favorite_animal, through: :favorites, source: :cat

自己實際完成rails專案開發,你可以接觸到平常沒使用過的語法,對它不熟悉可以觀看官方文件或是 google 搜尋找到你要的答案,透過這樣的方式進步是最快的,因為專案有使用 gem,gem 套件本身的語法已經包好很多方便的功能給你使用,因此你會發現每當完成一個功能項目,bug 似乎本身有無限繁殖的能力!不過這樣可以清楚知道rails中魔鬼藏在細節裡,也要額外補足相關知識,就像龍哥所說的:「新手剛開始處於淺水中,要學會各種 gem 的套件使用,要越過新手階段游上岸,就是不要依賴套件的使用」,現階段除了使用 gem 也要理解背後的運作原理,這是新手工程師需要加以琢磨的地方。


專案圖片


會員系統

首頁

可以上傳圖片,使用外部 Amazon S3 雲端服務儲存圖片

編輯畫面

動物收藏名單



本文轉載自:Jie Yu Xie Medium 平台文章分享。