Ruby on Rails的介紹……跟.net沒啥關係……放首頁只是為了讓更多人接觸Ruby on Rails……明天撤下來……原文網址:http://www.blogwind.com/Wuvist/16993.shtml
順便說一下,我用的是Mac,部落格園使用的cute editor在Safari中成了一個text area,不過,cute editor的最新版已經在一定程度上相容Safari了……
自從看了Ruby on Rails官方網站上面的視頻介紹後,我便被它吸引住了,當時便做了一堆關於ruby/ruby on rails的網摘。
不過,那個視頻,在15分鐘裡面做一個部落格引擎,看上去的確很酷……開發效率的確很快,但是它只是看上去而已……要說服程式員們拿ruby on rails來做東西,這個video是遠遠不夠的……有太多太多的細節沒有提到……似乎唯一的一個中文教程,也是存在這樣的問題,它們只是讓Ruby on Rails看上去很美……而實質性的東西都沒有提到…… 最近一直看Ruby on Rails的詳細教程:《Agile Web Development with Rails》 (英文版,中文翻譯就不知道猴年馬月才能出來了……)目前之看來快一半,這才深深被Ruby on Rails吸引了……全書主要分三個部分:第一部分“Getting Started”只是將如何安裝Ruby on rails等……首先是講Windows,然後再講Linux/Mac……明顯Ruby on Rails是想要吸引Windows下的程式員的……只是,它漏了一個很重要的地方,便是如何在IIS上面跑Rails……但這偏偏是一個很實際的問題……在windows下面跑web application,不是asp便是asp.net,IIS是鐵定有的……如果是apache下面跑php的話,那伺服器大都是Linux……也許,作者也不想漏掉它,而是暫時還沒有官方的解決辦法吧……雖然,已經有人做出來Rails on IIS的安裝程式了……書裡面提到的連結MS SQL的方法也是有問題的……至少,在我的電腦上有問題……不過我已經解決了……什麼時候我再把解決方案寫出來……Rails on IIS也是有用fast CGI的……沒有做過壓力測試,但,看上去,要拿來做網站還是可行的…… 第二部分"Buiild an Application"是很精彩的……讓我看到了很多細節上面的精彩……教程非常好讀……假想了有一個客戶,要求做一個購物網站……從使用者需求分析講到程式通過測試……教程本身不僅是要展現如何用Ruby on Rails去做網站,並且還在過程中體現了做網站的整個流程、思考方式……分析需求、發現問題、找出解決方案……教程還經常展示一些開發過程可能遇到的問題……說明錯誤出現的原因,然後再講正確的解決方案……這樣子的教學方式是很好的……學習一個東西,不僅要知其然,還要知其所以然……而在展示問題,再講解“正確的解決方案”也更能體現Ruby on Rails在處理這些問題上的精彩……教程過程中有一個細節特別讓我驚訝……在%>之前加入“-”號,比方說,有這樣的代碼:<%for i=0 to 10-%>Hello world!<br><% end for%>加入“-”號後,會去掉最終輸出的多餘空格、空行……也就是說,最終html代碼是連續的Hello world!<br>Hello world!<br>……而不是:Hello world!<br>Hello world!<br>……這幾乎是微不足道的細節……因為,不管多餘的空格空行是否存在,都不影響瀏覽器的最終顯示……雖然,去除之後能夠減小最終html頁面的大小,但是現在的頻寬已經不在乎這麼點差別……在源檔案中加入這些空格、空行方便開發人員閱讀才更加重要……事實上,vs.net也是會修改aspx的代碼,使其更容易閱讀……不過,我自己遇到過這樣的事情:1. 在一個asp頁面裡面手動的去除所有的這些空格、空行……因為那個檔案中的迴圈輸出了數百次……去除之後體積小了一半!2.在一個asp.net的頁面裡面,我需要獲得一個datagrid中某Template Item的內容……而vs.net自動給我加上的空格、空行也照樣被程式擷取了,使得程式出錯……搞的我不敢用vs.net開啟那個檔案……否則每次都要重新用editplus開啟檔案,去除空格、空行……小小的一個“-”,便完美的解決了這個細節問題……強烈的感覺到rails是資深的web程式員設計出來的……他們設計的時候,考慮到了很多很多web開發中可能遇到到細節……而且,他們將自己做開發多年經驗也融入進去Rails了……看了書中的這第二部分……才能體會到“Convention over configuration 約定高於配置”、“DRY - Don't Repeat Yourself 不自我重複”在Ruby on Rails的實際開發中是如何體現其優勢的……看ruby on rails的介紹時,這兩點是經常被提到的……但是,都缺乏實際例子的支撐……而書中各個例子則將Ruby on Rails這兩個特點表現得淋漓盡致……它們所強調的是一種優秀的開發方式……Rails所接受的convention/約定是設計者們開發時採用的良好的約定……說穿了,它是一個預設配置,並且是一些被廣泛採用的配置……遵守這些,可以保證程式的良好風格……並且,它節省了我們很多很多多餘、並且一直被重複的代碼……這可以大幅的提高開發速度……DRY……是的,不應該重複自己……但是,如果實現這點?要如何利用現有的東西?OO為的便是實現免除重複勞動……但是,我寫程式的時候還是經常做一些重複的東西……而這個教程,則告訴了讀者哪些地方是重複的,是可以避免的,並且如何避免……其實,要實現這些,重要的是有一個優秀的架構……架構必須提供實現"DRY"的支援才行……教程便是一直在體現Rails架構在這方面的努力……而且,它還強調了MVC的重要……哪些事情應該在Model中做……哪些應該在View中做……哪些事情應該在Controller中做……全部都一清二楚……如何返回錯誤、如何添加連結等等等等……書中都給了實際介紹……教導讀者如何在恰當的地方添加恰當的代碼,不僅快捷,而且體現了設計之美……至少,我自己……在做網頁的時候,便一直hard code過"/..."這樣的路徑,這使得網站如果從根目錄改變到子目錄裡面後變得一塌糊塗……太多太多細節了……都是我在開發網站時曾經遇到過,並且用很難看的方式去解決了的……而在看教程的過程中,我一遍一遍的發現,Rails的設計者們注意到這些細節,並且在Rails裡面提供了很好的解決方式……書的第三部分則是:The Rails Framework這部分也佔了全書的大半部分……暫時還沒有看……相信,過兩天看了,也是會為Rails到精彩而興奮的……