分類
Programming Ruby

一些 Ruby Dynamic Features 記事 (2) singleton class

在Ruby中,singleton method指的是只有該物件才有的方法,而加在 Class object 上的 singleton method 也就變成了 class method。

分類
Programming Ruby

一些 Ruby Dynamic Features 記事 (1) OOP

趁過年把 The Ruby Way 拿起來讀一讀,大部頭一本沒辦法從頭念到尾,就挑了最重要的第11章( OOP and Dynamic Features in Ruby) 來念。這個主題值得閱讀的還有 Ruby for Rails 第13章(Ruby dynamics) 跟最近出的 Advanced Rails 一書第1章(Foundational Techniques),因此這幾篇文我還會修修改改就是了。

分類
JavaScript Programming Rails

Spakit: A SPA Rails plugin

Spakit 源自 registrano.comMassage,是一個可以讓你將現成的網站輕鬆轉換成 SPA (single page application) 的 Rails Plugin。只需在 view 中換用 Spakit helper,不需要更動 controller code,就可將超連結和表單送出變成 Ajax 送出並更新頁面。

spakit 目前放在 github,另外也包成 gem,安裝方式如下:

 gem install spakit
 cd /your_rails_app/vendor/plugin
 gem unpack spakit
 mv spakit-0.9.0 spakit

並且 rename 成 spakit。裝好之後,首先建立一個 Spakit 專用的 Layout,一個簡單的範例如下:

# /view/layouts/spakit.rhtml
<p><%= flash[:notice] %></p>
<%= yield %>

接著就可以使用 Spakit 專用的 helpers,目前有 spakit_link_to, spakit_form_for 和 spakit_form_tag 三種可以使用,用法如下:

spakit_link_to 'new person', :url => new_person_path
spakit_form_for @person, :url => people_path

如此按下連結或送出表單後,Spakit 就會送出 Ajax request(i.e. prototype’s Ajax.Updater ),然後將回傳的 HTML 結果更新到#content 區塊。

如果你想要支援 Ajax 的 Histroy Bookmarks,建議可以採用 Really Simple History(RSH) library 來處理瀏覽器的上一頁下一頁問題,這部份的範例程式附在 plugin 的 README (使用到 jquery library,好心人有空可以幫忙寫 prototype version)。

P.S. 這篇文的英文版在 Handlino’s blog

分類
Programming Ruby

如何寫出有效率的 Ruby Code

又來推薦 PDF 武功秘笈, Writing Efficient Ruby Code

Ruby 是個很慢的語言,但有些作法應用得當,還是會有不錯的改善。不過要知道程式碼的可讀性跟執行效率有時候是衝突的,這點還需拿捏,尤其 software life cycle 一開始可讀性比較重要。有句最佳化的經典名言一定要引一下:

未成年就這麼優,是一切邪惡的根源
Premature optimization is the root of all evil

這裡紀錄一些看到有趣的事情,PDF 裡有更詳盡的 example code。

分類
Programming Ruby Testing

7/31 (二) Ruby Tuesday: RSpec

Update(2007/7/31): 今日的投影片在這裡(xul),請用 Firefox 開啟瀏覽。

這一次依然由我來跟大家分享 Ruby/Rails testing,題目是 RSpec, a Behavior-driven development framework。

時間是晚上 8:00-10:00,地點在 opcafe 三代。

分類
Programming Rails Ruby Testing

7/17 (二) Ruby Tuesday: Rails Testing

Update: 今日的投影片在這裡,預計下回再來分享 BDD&Rspec,屆時會在講清楚 mock 的用法…:)

不小心被 lukhnos 拱了出來… :p 我要分享的主題是 Rails Testing,有時間的話,也打算提一下 RSpec,這是一套從 TDD (Test-Driven Development) 改進發展出來的 BDD (Behavor-Driven Development) 開發方式。

時間是晚上 8:00-10:00,地點沒錯的話會到新 opcafe,屆時也請大家分享一下寫 testing 的經驗吧… :)