What have you found for these years?

2009-02-14

ramaze 淺嚐

之前發神經開始複製 汝は人狼なりや?

決定試試 ramaze 用起來如何?

http://github.com/godfat/jin-rou

1. 我喜歡 Ezamar, 非常簡潔有力!可直接用 #{} 貼字串,或是 <?r 像 php 那樣。
2. 跟 Rack 整合很好,Ramaze::Request 是 Rack::Request 的擴充。
3. no magic, controller 超級簡潔!要用東西再用 helper/tool 拉進來。

4. routes 非常直覺,像是 :action/:arg1/:arg2. 那 controller 怎麼決定?
答案是 controller 可以自由對應任何 path. 這比 rails/merb 清楚太多了。
那如果要做很複雜的 routes 設定呢?可能要看看 Ramaze::Dispatcher,
還沒深入做到那,所以還不清楚。

5. m17n 的作法滿有趣的。用 Ramaze::Tool 插入 dispatcher,
透過 yaml 讀取和設定各種 locale. 而且如果 locale 不存在呢?
他會自動幫你生出相對應的 yaml 檔 @@ 資料也會幫你自動塞進去。
呃,我覺得有好有壞。好處是真的非常方便,不會說漏打什麼程式就爛掉。

壞處就是... 首先他需要 ya2yaml 不知道是啥,要額外安裝 gem.
另一個是他會不斷讀取進記憶體,然後重新寫入檔案。如果 server 在跑,
此時修改 yaml 檔,他會把他記憶體裡的資料重新覆蓋過去。

這個對於正在開發,常常需要修改 yaml 的我而言,很困擾...

6. 超級快。我覺得肯定比 merb 還快很多很多。我不管跑什麼幾乎都是瞬間 @@
快到我還以為他沒有跑咧。不過這樣比可能不公平,層級差滿多的。
merb/rails 功能比 ramaze 多太多了... 去翻翻 ramaze 程式碼,
每個檔案都寥寥幾行而已... 我曾經一度因為這樣以為 ramaze 很多功能都沒有,
但實際上是大部份都有的。這程式應該是寫得比 merb 還好很多?我猜,還沒細看。

不過也別因此拿去跟 rails/merb 做功能比較,基本上功能應該還是少很多。
只是因為 ramaze 做得很漂亮,所以要擴充應該很容易。就是要自己動手啦 @@

***

如果要問我 ramaze 缺點在哪,我會說 market 沒 rails/merb 強,
發展實在太慢,community 相較之下實在是太小,很多功能要自己做。
不過就做啊,做得好再 contribute 才是王道啊 XD

另一方面則是 ramaze 核心要換成 innate, 這不知道會有什麼大規模改變?
ramaze 幾乎都是 manveru 自己一個人在做的,
發展規模跟 rails 那種超級龐大的 community 真的差太多了...

不過這也更讓我覺得 manveru 真是讓人讚嘆 @@

4 retries:

Poga Po said...

ya2yaml好像是支援unicode的yaml版本...

至於ramaze好像有一個branch在github上面,已經是innate為底了,可是我沒看XD

Lin Jen-Shin (godfat) said...

根據 ya2yaml 的 description,
"An UTF8 safe YAML dumper."
不過我一直不懂,ruby 1.8 真的有 utf-8 的問題嗎?
不是都當 binary string, 為什麼需要 ya2yaml?

下次再看看是在幹嘛好了
其實我在考慮改用開發版的 ramaze,
說不定這部份有改...

至於 innate branch 我知道,我有 watch XD
不過只看 commit log 看不出來可以用了沒 @@

Poga Po said...

昨天才有一個patch改掉在ruby1.9上面會CPU100%停住的bug XD

講到edge ramaze,之前在irc上看過manveru講過一句「那不是鋒利的edge,那只是更加圓潤與平易近人的版本」XD

Lin Jen-Shin (godfat) said...

剛剛這一頁怎麼爛了 @@
文章重存一次才讀得出來.... blogger bug?

*

衝著他這句話,下次要繼續做時我就換成他的 rounded ramaze XD

*

還沒睡啊... XD

Post a Comment

Note: Only a member of this blog may post a comment.



All texts are licensed under CC Attribution 3.0