What have you found for these years?

2008-10-08

merb

隨著 rails source code 越看越失望,要做 model cache 似乎非常難搞...
想了一陣子,覺得應該很難做得好,所以就暫時放棄,直接用 cached_model 試試。

另一方面,有個簡單的東西要做,想想就先用 rails 做一份,
然後看看怎麼移植到 merb 上,當作實驗移植可能性好了。

於是終於正式開始試起 merb 了... 不過還真是出師不利!
剛剛才釋出的 merb 0.9.8, 跑以下:

> merb-gen app merb
> cd merb
> rake -T

這樣就會掛掉了... 因為沒辦法把 IO 轉成 String.
於是手癢又開始追蹤原因,進而發了一篇到 mailing list 上描述出錯原因。
http://groups.google.com/group/merb/msg/0c69d06435e4e904

簡單地說,我覺得他們 test case 沒寫好,有些地方改了,有些地方還沒改。
稍微調整一下 default config 就可以解決這個問題。
原本的 log default 成 STDOUT, 這是不對的,因為他會針對這個值做:
File.open(config[:log_file]), 這樣就有 type error 柳。

好笑的是,0.9.8 才釋出的幾個小時候,這個問題就被解決了。
http://github.com/wycats/merb-core/commit/5a10f
時間也在我貼出那篇訊息之前...

anyway, config loading 的問題。另外他還有個問題,
就是 environments/rake.rb 根本就沒有讀取到!

> rake -T

讀的還是 development.rb, 應該就是預設值吧?
怪不得我怎麼改 rake.rb 都沒有效果...

才剛要試就碰到兩個 bug, 實在讓人滿氣餒的。
懶得幫他修的原因其實也很簡單,就是他們修得肯定還比我快,
就像上面那個 commit... XD 那不如就等他修就好了。

不過我還是大略翻了幾下 source code, 思擬 quick fix 的可能性。
然後,就更加對 rails 感到失望。因為,程式寫得實在比 rails 漂亮太多了!
而且我喜歡 terminal 輸出有顏色... XD 雖然當然這不是重點啦。

舉一個簡單的例子,RAILS_ROOT. 然後我就不想說了。
像是這樣的小細節,不勝枚舉。內部糾結非常嚴重。

anyway, 由於一下就碰到 merb 兩個 bug,
(rails 我也是寫一陣子才偶爾碰到兩個 bug, 依照比例算的話,merb 就...)
(當然啦,1.0 之前我想都不便多說什麼,反正就等他 1.0 就是了。)
所以決定乾脆用 git 上 master 的 code, 反正也只是測試而已。

> thor merb:edge --install

然後我就覺得,thor is awesome XD
自動幫你把所有的 source code git clone 下來,
全部丟到 gems 裡面,全部打包成 *.gem 然後 install 在 gems 裡。
連 erubis, hpricot 都幫你裝好(當然這些就不包括 src 了)。
我本來還擔心跟我系統打架,也想說不要 sudo 我可以用 rubygems 新功能,
灌在 ~/.gem 底下也不錯,沒想到他完全打包成自己的一份出來。

真正 awesome 的則是:

> merb --help
Warning: please use bin/merb to load merb-core-0.9.9 from ./gems

wow, 他還能判斷出我在這個目錄下有安裝 edge merb,
所以警告我應該用 bin/merb 來使用 edge merb, 而不是 system merb!
而這些 bin/* 則是 executable wrapper, 使用他們可以確保讀取的 gem
都是在 ./gems 底下的檔案,而不是系統檔案。除了實在是安裝了太多東西以外,
做到這個地步也真的是滿狠的...

> rake -v
(in /Users/godfat/projects/gits/rkc/merb)
Warning: please use bin/rake to load merb-core-0.9.9 from ./gems

rake 也能判斷,所有其他 executable 應該都行。

很好!我非常期待可以取代 rails XD

至於 ramaze, 感覺成熟度更低於 merb, 就繼續等吧...
屆時就是期待 ramaze 可以取代 merb :p
這樣就有玩不完的玩具了(誤)

2 retries:

contagion said...

其實在 0.9.3 的時候 bug 反而比較少..

應該是現在為了要趕在 10/11 merb camp 推 1.0 的關係才弄得有點亂..

不過怎麼趕也趕不上..只能 1.0rc 了..

godfat 真常 said...

是喔。我記得我有看到他們說,
如果要有什麼重大改良,
應該在 1.0 之前,而 1.0 之後,
無論如何就不能再動了。

所以一趕之下大概就有點亂了陣腳吧? @_@b

不過何必急呢,君不見 ruby 1.9 延期延期再延期 XDDD

都有人抗議說 ruby 1.9 可以考慮回到過去奇數版為
development version 的俗法了...
只能說,對於去年希望能趕 1.9 熱潮的人,
為此感到遺憾 orz... 日本對於這方面,
可能比較沒經驗,處理得往往都有些粗糙吧 @@

Post a Comment

All texts are licensed under CC Attribution 3.0