第一次用ROR做出個能跑的website,還是個菜鳥,但或許可以讓更多有興趣的朋友藉此探究ROR的有趣之處,便斗膽分享自己很寒酸的開發過程。
聽說Ruby很簡單,Rails開發很迅速,這在本人身上倒是印證了。敝人大學的網路程式設計課程慘遭被當,那時學的是ASP,到學期末都還沒灌IIS,堪稱廢柴,連這樣的廢柴都學會了,可謂之簡單。敝人從十一月十五號開始動工、十一月二十號晚間丟上線,一直到二十二號凌晨,網站就關掉了,從生到死,總共七天,勉強也算是神速。
若您對Ruby on Rails一直很有興趣,卻不曾實際玩過,或許可以趁機一窺其貌。安裝方式網路上有很多文章,可以瀏覽一下。
我參考的書籍只有ROR玩家幾乎都讀過的Agile web development with Rails電子版(感謝前輩Gary,可惜最後沒能幫上什麼忙)和一本比較薄的Ruby on Rails建置與執行,當然還有網路上龐雜的資料,更多書籍可以參考XDite的推薦書單。
接下來快速介紹一下BlogBlind,您可以先去下載Source Code。
先來個Model。
非常簡單,主要就是Blog和Tag,中間用Blogtags把他接起多對多的關係,接法主要參考這個網頁。後來好像有聽說可以用gem還是plugin實做tag功能,混帳。
此外,眼尖的人應該會注意到,Model裡頭有一個User的Table,但最後仍是決定放棄這一層限制,完全開放。我是用OpenidLoginGenerator,用起來跟LoginGenerator差不多。
如果對ROR沒興趣,只是想架個單機板的BlogBlind,請先灌個資料庫,設定好config/database.yml之後,再輸入rake db:migrate,資料庫就完成。
再來是Controller。所有功能幾乎都擠在blogs_controller,有些到後來沒用到就不提了,show顯示出單一blog和其tag與相關的blog,create即是新增blog,並且跑crawler去抓目標網頁的title,擷取網頁資料的部份參考了ericsk的文章。
tagging即是下標籤,寫的有點醜。tag則顯示了「下此標籤的所有文章」,而plus就是tag的推文了。search功能形同虛設,只是下SQL抓資料,有志者可以參考acts_as_ferret這個全文檢索的plugin,雖然只要神奇的一行指令即可啟動,但我就是弄不起來,不知道為什麼,後來就懶了。
最後面註解掉一個bloglook的功能,那是拿來抓BlogLook的三百名衰鬼用的,又因為無名小站的url很機掰,加了一個斜線就連不到了,這邊要特別處理一下。
此外,為了要固定時間更新排名,用上了daemon_generator這個plugin,在此之前得先安裝daemons這個gem(gem install daemons),更新排名這部份就寫在lib/daemons/caculate.rb裡。
View雖然看起來很雜,但主要就只是list和show這兩個頁面,至於layout﹍幹,我忘了把google analytics的code拿下來了。
全用上AJAX純粹是覺得link_to_remote很酷,頗不可取。Table的CSS是取自這裡,logo則是依照這篇文章用photoshop套上去的,這裡還有AJAX讀取中的icon產生器。
最後部署是用Mongrel Cluster接上原本的Apache,參考了這篇文章。後來聽說Windows有直接把Ruby, Rails, Apache, and MySQL直接包起來的InstantRails,只是想看一眼的朋友可以直接用這個,免除上頭一堆煩惱。
整個網站大概就這樣,沒啥特別的,不過漏洞很多,寫個三行的無限迴圈即可化身灌票程式,也在HEMiDEMi上看到猴子先生的精闢見解,阿六後來會如此的遙遙領先、網站的負載過重,或許也是因此而來。不過,當天敝人實在捨不得擋ip,更不願手動調整被灌的票數,就算是程式灌票,至少也是user的行動,我一介入,感覺就差了。有興趣要以不同面貌呈現BlogBlind或帶回家改的先進們,可別忘了這部份的大洞。
非常期待各位高手略施小計即變化出更有趣的應用,也歡迎各位朋友不吝給予建議、指導與討論,謝謝。



1 Response to “如何自己架一個BlogBlind”