作者godfat (godfat 真常)
看板Ruby
标题[闲聊] 有人玩过 merb 吗?
时间Sun Oct 12 15:46:03 2008
前几天要做一个小东西,想说正好是试验 merb 的好时机,
就先花了几个小时把架构调整好。比方说把之前写好的东西 copy 过来
继续用,例如错误处理的部份,像是这样:
if message.save
flash[:info] = Lang.tr[:ok]
else
flash[:info] = message.errors.map{ |error|
[Lang.tr[error.first], error.last].join
}.join("<br />\n")
flash[:message] = message.attributes
end
也许是应该试着用 error_message_for 啦,只是之前都写好了,
这又是个小东西,很懒就直接 copy 过来。
还有 active_record message 的翻译:
# encoding: utf-8
ActiveRecord::Errors.default_error_messages = {
:invalid => '格式不正确',
:empty => '没有填写',
:blank => '没有填写',
:too_long => '太长(最长 %d 个字)',
:too_short => '太短 (最短 %d 个字)',
# etc.
}
还有平常拿来 deploy 的 rake task, 把 html 从 big5 转成 utf-8,
CRLF 转成 LF, 拉拉杂杂一堆这样就花了几个小时 -_-b
实际上开始写大概几分钟就写完了。上线之後,我就开始把所有程式
翻译到 merb 上... 大概先是花了几个小时熟悉,正式开始写後,
也是几分钟就写完了。实际撰写时间应该比 rails 少很多,因为,
大部份的东西都是改个名字就能跑了 @_@b
两者的外部架构几乎是一模一样。我的意思是,只要你没碰到核心的话,
两者的用法几乎只有名称差异而已。而且很多命名还甚至是一样的。
例如 params 和 session.
不过 merb 没有 flash, 这部份只好靠自己写 filter 来清除:
after lambda{ session[:info] = nil }, :only => :board
一开始我一直写成:
after :board do
session[:info] = nil
end
因为 Extlib::Hook 就是这样用的。测半天後才想到,
应该用 rails after_filter 的写法才对 @_@b
*
总之,去掉一些 merb 的 bug 不提的话,我用起来非常顺,
感觉像是进化後的 rails... 就差在 rails 的 plugin 无法移植外,
其他的东西全部都具备,甚至更多更多。
目前第一个碰到缺乏的功能,就是 pagination...
之前我都是用自己写的 Ludy::Paginator, 但後来接别人的东西,
就顺着他用 will_paginate, 发现其实还满方便的,就继续用。
查了一下,有个 port 在这:
http://github.com/myobie/merb_paginate
大概看了一下,写得也满暴力的,还 depend on will_paginate...
也有一段时间没有更新了,我乾脆自己写,又不是很难的东西。
所以就从 ludy 中抽出 paginator, 重新改名为 pagify 和 pager.
http://github.com/godfat/pagify
*
我应该会慢慢把之前帮 rails 写的东西全部 port 到 merb 上。
也敢保证在 merb 上写东西绝对会比在 rails 上写容易好几倍...
原本这些都是放在 ludy 里,现在打算全部抽出来独立做。
因为 rubyforge 分专案不方便,github 方便很多...
orm 则以 data mapper 为主,因为这个我还蛮满意的 XD
看有没有人有兴趣参与这样
==
对了,希望也能在 ramaze 上做一份,尽可能跨越多平台
--
生死去来、棚头傀儡、一线断时、落落磊磊
《花镜》-世阿弥
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.28.18
※ 编辑: godfat 来自: 220.135.28.18 (10/12 15:52)
1F:→ poga:ramaze感觉比较好懂... datamapper还是不能在xp上跑阿 Orz 10/12 16:02
2F:→ godfat:ramaze 作者做了一大堆东西 @@ 以後再慢慢细看 orz 10/12 16:24
3F:→ godfat:以後还有啥小东西我再试试看 XD dm 的话,也许会有人说: 10/12 16:25
4F:→ godfat:go to get a real OS... XD 10/12 16:26
5F:推 ihower:go merb 1.0! 10/13 01:21
8F:→ godfat:merb mailing list 上有人抱怨 0.9.9 有不少问题... 10/15 23:41
9F:→ godfat:说为了赶这 1.0, 改写太多东西,应该需要更多时间整顿 10/15 23:42
10F:推 kenmax:sorry没写清楚,谢谢版大说明^^ 10/16 00:32
11F:→ kenmax:请问一个问题,里面提到Merb in Action这本书这在写 10/16 00:34
13F:→ kenmax:它是独立的一个可以跑的Hello,XXX的范例了罗? 10/16 00:58
14F:→ kenmax:一开始看到..,'app/controllers',以为它是跟RoR结(融)合XD 10/16 01:01