2014年1月13日 星期一

初探Ruby on Rails

有緣人: 妳有聽過Rails嗎...
空空的我: 蛤~什麼??? 什麼Rails???

因緣際會, 有緣人讓我初步認識了Rails, 全名是Ruby on Rails(RoR), 是一套使用Ruby程式語言的Web開發框架. 據說能簡單且快速開發網站應用程式, 對沒有程式語言基礎的人來說似乎學習上也能很快樂:)

雖然我不認識她(Rails), 但我對她感興趣了...因此請google大神提供給我一些資訊.
什麼是Ruby on Rails, 以下連結已說明的非常清楚啦~
http://ihower.tw/rails3/intro.html
http://zh.wikipedia.org/wiki/Ruby_on_Rails

Ruby先鋒ihower寫的bible(http://ihower.tw/rails3/)是一本非常詳細的中文教學書籍, 因我還未準備好開發環境(打算在Windows上安裝VM再安裝Linux), 所以目前只拜讀到簡介就停擺了:P
沒想到過沒多久就從有緣人收到了一個很棒的資訊, 我的身份是可以參加Railsgirls讀書會的.

在台灣推廣Ruby以及Rails的先鋒們都有持續在舉辦一些技術交流的分享會, Rails Girls的活動是其中一項. 簡單來說, 該活動是希望能讓更多人感受Rails的魅力, 而且目標是要讓對程式這門領域較不熟悉的女性能透過Rails來實現技術面的想法; 更直白的來說, 就是不會寫程式的女性來參加活動, 也能輕易的學會架站及撰寫網頁啦~
不過很可惜活動已結束了, 但好佳在後續還有讀書會的活動可以和教練們交流, 所以我就去參加啦~

先來分享一下參加完讀書會的心得~
只能說主辦單位以及教練們真是佛心來著, 除了要繳場地費, 去學習是不用繳學費的. 而且每位學員都能配到一位教練, 一對一的教學; 偷偷觀察下來, 教練都超有心的, 依照學員的程度很有耐心的在指導, 內容甚至廣泛到一些電腦操作的技巧也有在教呢~
去要繳費的補習班上課都還享受不到這等待遇呢, 這時真心覺得身為女性...真是太好了:P
目前的讀書會報名網址: http://ltrt.kktix.cc/

在讀書會中, 我也確實學習到了Rails的開發以及利用Rails的框架工具來快速產生網站程式, 分享幾個學習的連結:
http://tryruby.org -> 15分鐘學Ruby程式語言, 透過互動模式, 學習挺有趣的~
http://railsgirls.tw/ -> Rails Girls指南, 提供相關入門教學, 必看~
http://railsgirls.tw/app/ -> 打造第一個App教學; 我的第一個App就是從這來的~
https://www.nitrous.io/#aio -> 雲端開發環境; 還未安裝好環境 , 就先用這個來學習吧~

我在雲端開發環境的第一個App~Step by Step分享~
1. 開啟Nitrouse.IO rails IDE環境, 如下圖
左視窗為目錄結構, 右為文字編輯器, 下則為命令列視窗

2. 輸入cd workspace指令, 切換到workspace目錄(該開發環境預設的工作路徑); 輸入rails new railsgirls來產生一個App
rails new可視為產生一個rails app的指令, 後面接的是要將app產生到哪個目錄下

3. 輸入cd railsgirls, 切換到railsgirls目錄; 輸入ruby bin/rails server來啟動伺服器(也可只輸入rails server來啟動)
成功啟動的訊息如下

4. 開啟測試伺服器的網頁
開啟的網頁畫面如下

5. 在命令列視窗Ctrl+C結束剛啟動Server的狀態, 回到可以輸入的狀態, 命令列有$的符號就是可以輸入的狀態了. 在接下來下一個步驟, 神奇的事即將要發生囉~

6. 輸入rails generate scaffold idea name:string description:text picture:string透過鷹架的功能來產生增(新增)/刪(移除)/改(編輯)/查(列出和檢視)皆具備的網頁; 輸入rake db:migrate讓資料庫更新, 能正確的和剛產生的網頁功能做串連.
rails generate scaffold可視為產生增/刪/改/查網頁功能的指令, 後面第一個參數接的就是該網頁的名稱, 再接下來則是功能對應的欄位及欄位屬性. 指令執行成功後, 會看到如下圖訊息, 列出自動產生出來的檔案.
資料庫更新完後, 會出現如下圖訊息

7. 最後, 依照之前的步驟來啟動伺服器及開啟測試頁面; 網頁開啟後, 在網址列最後加上/ideas, 會看到如下畫面
嘗試一下增/刪/改/查的功能吧
我的第一個App就這樣完成啦~
後續要美化頁面或者加強功能, 只要照著Rails Girls指南, 一步一步的去實作, 就能讓App更完整囉!

上述簡單的幾個步驟, 就能完成以往要寫好幾行程式以及頁面的功能, 真是太有效率啦~
所以我們回頭看一下, 她到底自動幫我們產生了哪些檔案:
controllers/ideas_controller.rb -> 處理ideas頁面的request, 與model互動後將資料輸出給view
models/idea.rb -> 包裝了資料管理與商業邏輯. 自動產生的model預設繼承了ActiveRecord, 所以基本的資料庫操作不需額外撰寫就都有囉
views/ideas/ -> ideas各個使用者介面, 顯示及編輯表單, 可內嵌Ruby程式的HTML
views/ideas/_form.html.erb -> 表單畫面, 以上述ideas為例, 為新增頁面及修改頁面裡的表單
views/ideas/index.html.erb -> 該功能首頁, 以上述ideas為例, 為Listing ideas列出頁面
...
在這些檔案修修改改, 也能很快的變成自己想要的樣子了吧~


因為剛認識Rails, 也還只是在初探的階段, 有很多不了解, 因此再拜了一下google大神, 查了一下我有興趣的內容; 其中一個議題是加上網頁框架後的老牌PHP和Rails的比較, 另一個議題則是效能上的問題了. 目前我還再參詳中, 先將連結筆記起來:)
Rails衝擊PHP(早期的文章)
http://www.ithome.com.tw/itadm/article.php?c=41491&s=3
Rails少就是多簡介(早期的文章)
http://guides.ruby.tw/creatingmoreusinglesseffortwithrubyonrails/
Ruby與PHP程式語言的比較(含Python)
http://www.nowamagic.net/librarys/veda/detail/2504
PHP 2013年前4名的框架
http://www.oschina.net/news/36494/the-best-php-framework-for-2013
效能問題探討(經驗分享)
Ruby去Rails化(指出Ruby本身效能是好的)
http://robbinfan.com/blog/40/ruby-off-rails

有一些問題, 就等著下次讀書會, 要來請教教練們啦~

最後要特別感謝有緣人(慕凡, 主辦者之一)以及讀書會教練(Vincent), 讓我有這個機會好好的認識Rails囉~