Rails Philosophy
最近有一個機會,用到Ruby on Rails來開發系統,或許有點遲,但跳脫Java的角度來看,真的是一個很難得的經驗。
在Rails philosophy中,有三大guiding principles
DRY–Don't Repeat Yourself
Convention Over Configuration
REST is the best pattern for web applications
其中「Convention Over Configuration」讓我印象最為深刻。
在習慣Java世界的我,什麼東西都要來個設定檔,不管是Spring的設定檔、Hibernate的設定檔、Log的設定檔…等,好像沒有設定檔,就缺少了些彈性似的。
第一次使用Rails的時候,使用
生成程式及頁面後,就開始尋找Table跟Object對應的設定檔在那裡?但怎麼找都找不到。原來,根本就沒有設定檔。
怎麼那麼怪~~~那我怎麼知道Rails幫我做了什麼?
做了幾個功能後,又問了一次自己,如果按照Rails的Convention,都幫我弄好的話,為什麼一定要自己設定呢?
再做了幾個功能後,哇~~這真的太方便了。會有那種欲羆不能的感覺。
(不過,缺點就是比較沒有經驗的開發者,那可能會功能做完了,都不知道為什麼,這樣可能造成日後做進階修改的時候,會很痛苦!!)
另外,再舉兩個,我覺得超方便的例子
(1)有一個下拉式選單,其資料要從某個Table中取出。
在Java中,會寫一個DAO / Services,再透過DWR來取得,或是寫成Taglib來取得。
在Rails中
一行就完成了,我要取得Project這個類別/Table的所有資料(當然也可以有過濾條件),並以showorder排序,這個Select的第一個,請放一個空白。
(2)我有一個查詢頁面,其時間的起迄,是今天的上二個星期,其下二個星期
在Java中,可能使用JavaScript去計算,或是用Java的Calendar來計算。
在Ruby中
對,你沒看錯,就是這麼直覺。還有更多更直覺的
這真是太神奇了,傑克。目前跟RoR接觸的時候還算短,若之後有機會,應該可以發掘更多令不讚賞的東西。
PS.這次做的小系統,也有整合 Fusion Chart 來展現報表,也是一整個方便跟快速。
在Rails philosophy中,有三大guiding principles
DRY–Don't Repeat Yourself
Convention Over Configuration
REST is the best pattern for web applications
其中「Convention Over Configuration」讓我印象最為深刻。
在習慣Java世界的我,什麼東西都要來個設定檔,不管是Spring的設定檔、Hibernate的設定檔、Log的設定檔…等,好像沒有設定檔,就缺少了些彈性似的。
第一次使用Rails的時候,使用
ruby script/generate scaffold XXX
生成程式及頁面後,就開始尋找Table跟Object對應的設定檔在那裡?但怎麼找都找不到。原來,根本就沒有設定檔。
怎麼那麼怪~~~那我怎麼知道Rails幫我做了什麼?
做了幾個功能後,又問了一次自己,如果按照Rails的Convention,都幫我弄好的話,為什麼一定要自己設定呢?
再做了幾個功能後,哇~~這真的太方便了。會有那種欲羆不能的感覺。
(不過,缺點就是比較沒有經驗的開發者,那可能會功能做完了,都不知道為什麼,這樣可能造成日後做進階修改的時候,會很痛苦!!)
另外,再舉兩個,我覺得超方便的例子
(1)有一個下拉式選單,其資料要從某個Table中取出。
在Java中,會寫一個DAO / Services,再透過DWR來取得,或是寫成Taglib來取得。
在Rails中
<%= f.collection_select(:project_id, Project.find(:all, :order=>"showorder"), :id, :name, {:include_blank => true}) %>
一行就完成了,我要取得Project這個類別/Table的所有資料(當然也可以有過濾條件),並以showorder排序,這個Select的第一個,請放一個空白。
(2)我有一個查詢頁面,其時間的起迄,是今天的上二個星期,其下二個星期
在Java中,可能使用JavaScript去計算,或是用Java的Calendar來計算。
在Ruby中
2.week.ago #開始日期 2.week.from_now #結束日期
對,你沒看錯,就是這麼直覺。還有更多更直覺的
Time.now.end_of_month #這個月的最後一天 Time.now.beginning_of_week #這個星期的第一天
這真是太神奇了,傑克。目前跟RoR接觸的時候還算短,若之後有機會,應該可以發掘更多令不讚賞的東西。
PS.這次做的小系統,也有整合 Fusion Chart 來展現報表,也是一整個方便跟快速。
留言
超越Java,這本書的作者就是輕快的好Java共同作者之一,他在這本書中非常推崇Ruby,Ruby優點跟先進之處很多,但是我在使用上的感覺是缺乏一個很好的IDE,或許Netbeans或是Eclipse外掛已經做到很好,這方面我也很久沒有update了 :P