快速安裝 Rails 開發環境 Ubuntu 9.04

Update(2010/5): 後來發現更快又更好的安裝方式是,直接使用 REE 的 Ubuntu 套件:請在 Ubuntu 裡用 Firefox 瀏覽 Download Ruby Enterprise Edition 中的 Ubuntu Linux,然後點選下載套件並安裝即可。

最近有機會做一些 Ruby on Rails 的上機教學,根據之前上課的經驗,能夠讓學員快點開始寫 code 練習是最重要的事情,花時間在安裝軟體、排除不同安裝環境出現的問題之類的最浪費教學時間了。如果有人自備 NB,但是怎麼裝都裝不起來,而我又不能只顧解決他的環境問題……..orz 另外如果每個人上課(和回家之後)的練習環境都一樣,這樣照著教學練習就不易出錯,我想新手最怕的就是照著教學打結果 error 卡關,學習的滿腔熱血就這樣被澆熄 :p

因為 Windows 環境實在有點討厭,總是有人裝不起來(?),加上跑起 Ruby 效能又不太好,所以這次一不作二不休,乾脆改用 VM 環境,使用免費的 VirtualBox (註) 來模擬 Ubuntu 9.04 Desktop edition 作業系統,並使用內建就有的文字編輯器 gedit 來練習 (NetBeans 是另一個選擇)。BTW,熟悉 Ubuntu 環境對將來佈署 production server 也蠻有幫助的。

為了製作安裝快速、統一又乾淨的 Ruby on Rails 開發練習環境,所以花了點時間寫了安裝指令檔,只要在 Ubuntu 下執行這隻程式,然後大概五分鐘就可以開始寫 Rails 程式了。(當然是不包括把 VirtualBox 裝好,然後把 Ubuntu 安裝進去的時間…. zzz)。實際上課的話,可以用內網分享製作好的 Appliance 映像檔(~1G),直到倒進 VirtualBox 裡,馬上就有熱騰騰的 Ubuntu 桌機版可以練習 Rails 啦。

註一: 裝好進入 ubuntu 後,記得安裝客端額外功能才能調整螢幕解析度大小及進入全螢幕模式。

註二: 除了 VirtualBox,wubi 也是不錯的方式讓 Windows 與 Ubuntu 共存。

KaLUG 社群技術分享工作坊 – Ruby 程式語言與 Ruby on Rails 入門

這次受 KaLUG 的邀請到高雄開課,內容是 Ruby 程式語言與 Ruby on Rails 入門,對象是從未接觸過 Ruby on Rails,但是有些網站程式設計背景的朋友。課程及報名網頁在 OSSF 工作坊

  • 活動時間: 2009-09-20 早上 9:30 ~ 下午 17:00
  • 活動地點: 高雄市左營區裕誠路1055號(三民家商正門口對面)

相較於上次工作坊三小時的課程,這次的時間又更充裕了,將從基本的 Ruby 程式語言、Rails MVC 介紹起,除了可以涵蓋上次的 RESTful Rails,也可以有時間講解 ActiveRecord 操作資料庫的部份。

Cucumber: 小黃瓜驗收測試工具@COSCUP 2009

今天報名 COSCUP 2009 Lightning Talk 講的 cucumber 投影片:

不過效果似乎不太好,我沒這麼 high 好像不太適合講 Lightning talk …. XD,加上重點的 live demo 跌股了,應該很多人看不懂我在幹麼,果然是 never live demo 啊!watir 開出來的 safari 視窗畫面沒出現在投影機上,只出現在我的 MBP 上,然後跑完自動測試就自動關掉了,結果大家都看不到 :/ 時間有限一時也來不及把螢幕設定改成 Mirror,就這樣提早下台了… orz

Ruby HTTP clients

Update(2009/8/12): 加上 open-uri
Update(2010/1/18): 加上 Weary
Update(2010/5/10): github.com/maccman/nestful
Update(2010/5/11): seattlerb.rubyforge.org/net-http-persistent/

透過 HTTP 抓取資料是一個常見的任務,即使只是最基本 GET 網頁,在 Ruby 社群之中也有蠻多選擇的,目前市面上我看到的方案有:

open-uri 是 net/http, net/https 跟 net/ftp 的簡易 wrapper,可以 GET 網頁當作 IO 物件處理。

rest-client 跟 httparty 也都是基於 net/http 的實做,最大的特點在於 API 的改良及簡化,像 httparty 就做成 module 的形式,讓你可以用 include HTTParty 撰寫你自己的 library。如果只是單純的 REST 操作,使用 rest-client 也是不錯的選擇。

typhoeus, patron, curb 則是基於 libcurl 的實做,與 net/http 相比則大大地增加了程式效能。根據 Matt Aimonetti 的補充 (BTW,他是要說得是,重新發明輪子沒什麼不對,因為實做細節人人不同啊。),typhoeus 的強項是有 callback 機制及 non-blocking-multi query,而 patron 在於可以方便地 reuse HTTP session/connection。而 curb 最簡單只單純想做 libcurl 的 Ruby bindings。

httpclient 很奇怪我竟然找不到什麼的英文資源介紹,但好像也不奇怪因為作者是日本人 :p (另一個教訓是 Project 名字要取特別一點,越奇怪越好搜尋到 XD) 怎麼說呢? 去過一趟 RubyKaigi 之後發現日本的 Ruby 社群還蠻不為外(國)人知的,因為人口多加上又是 Ruby 原產国,所以是有不少的国產厲害 Ruby projects 跟 Ruby 書,而形成一個除了有 open source users 也有 open source developers 的健康社群,但是因為語言隔閡的關係,這些資訊產出絕少輸出到國外去,不像歐美的資源因為英文是共通語言的關係,全世界都能很容易的接觸到。英翻日的 Ruby/Rails 書也非常多,Pragmatic 跟 O’Reilly 的書我幾乎都有看到有日文版 (真好 :~)。

回到 httpclient,我是在 Ruby 逆引きレシピ 這本書中看到的 (well, 我看不懂日文, 只是瞎看 ruby code 而已),安裝方式意外簡單也是用 gem install httpclient 即可,強項看起來有 Cookies support 和 streaming POST (POST with File/IO) 檔案上傳。

Ruby Kaigai 2009 日本行 (非關Ruby部份)

大概是6月中才下定決心要去 RubyKaigi 吧。因為是第一次出國,而且又是獨自一人參加會議,周遭的人都覺得挺冒險的 :p 好在有熟東京朋友剛好也要去辦事,有個照應就還蠻順利適應環境的,複雜的東京地鐵真是超級方便。

第一天 7/15

早上10點的 JAL 班機,飛了三個小時到日本成田機場,也就是當地時間2點多到達成田機場。3點多搭上 Skyliner 京成電鐵坐了一個小時到達上野,先把行李丟到飯店後,就去六本木逛街了,像是最有名的 六本木 Hills。

六本木

第二天 7/16

淺草

早上先去逛了淺草寺,在雷門拍了照跟買了土產人形燒,不過淺草寺在整修,整間廟被鷹架圍住。逛了附近的犬印鞄製作所買包包。中午去了表參道逛最有名的表參道Hills,螺旋向下的走廊真厲害。

下午的行程自己去涉谷搭東急東橫線到日吉的慶應大學找高中同學,到日本聊MSN才發現他剛好也來日本做短期研究,也很巧他的學長也來日本自由行,所以就約了一起同行。先是學校逛了一圈,就又繼續坐到終點站元町,往上走到山頂看了海景,接著逛了幾家山手西洋館繼續走到港區未來,剛好碰到橫濱開港150週年,有特別的展場可以逛。最後去日本最高樓 Landmark Plaza,吃了銀座天國的動飯。搭超快電梯到頂樓看橫濱海港夜景。

慶應大學

第三天 7/17 (RubyKaigi 第一天)

築地市場

會議是下午才開始,所以早上先去逛了築地市場,買了有名的玉子燒來吃。

RubyKaigi Day1

終於抵達會場了 :D

第四天 7/18 (RubyKaigi 第二天)

晚上吃了在日本算是非常便宜的吉野家,然後逛了秋葉原,不過沒做什麼功課。有很多 3C 店很好逛,也有漫畫等很多,很多還提供免稅專門樓層可以買。回程反倒買了日本的低中價衣服王者 UNUQLO,日幣990很便宜呢 :p

第五天 7/19 (RubyKaigi 第三天)

晚上去了去了銀座伊東堂,可是竟然 PM7 就關門了,只逛了一下下。去了Apple直營店玩了 iphone 3GS。又去 UNIQLO 買了 $990 的衣服給女朋友… XD 最後回上野飯店附近吃了握壽司套餐。

上野的握壽司

第六天 7/20

一整天安排逛街行程,先去了上野的 UNIQLO 跟松板屋百貨公司。然後下午去了涉谷,接著去新宿。真是超級好逛街的地方,走起來很舒服,不像台灣一堆車烏煙瘴氣。

涉谷

第七天 7/21 (最後一天)

因為錢花的差不多了,只好安排不花錢的行程 :p 去了附近的上野公園,本來想逛博物館,沒想到全部公休… :/

上野恩賜公園

在成田機場的免稅店買了一堆巧克力,把最後的日幣花的乾乾淨淨 XD 晚上七點的飛機返回台北。

Ruby Tuesday 六月場

這個月的 Ruby Tuesday 又來啦!

活動時間:2009/6/30(週二)晚上七點到九點。
活動地點:台北市 典藏咖啡館(民權店)

報名請前往活動網頁,這次的講題是:

xdite: Sinatra: a DSL for quickly creating web-applications in Ruby.
gugod: Cucumber+webrat: Rails integration test

Sinatra 是一套非常有趣的小型 web framework,以其獨到的優雅 DSL 語法聞名,非常適合 tiny web application 開發。而 Cucumber 是一套將測試工作轉化成透過 parsing story-based 純文字來執行,好處是有一份讓非程式設計師閱讀的良好規格文件,同時也可以透過這種方式讓測試程式能自然地 reuse。webrat 則是一套 Acceptance Testing 工具,用以改善及補強 Rails 內建的 integration testing API,另一個好處是它還可以搭配 Selenium 或 Watir 實際打開瀏覽器來做 JavaScript 測試。

兩位講者都有豐富的使用及開發經驗,期待這次的分享 :)

BTW,我決定參加今年在日本的 RubyKaigi2009目前還有票的樣子,有興趣的朋友快衝吧 又賣光啦… XD