动态组合named_scope

named_scope是Ruby On Rails 2.x后一个非常好用的功能,介绍的地方已经很多,在这里不再多说。 named_scope有一个很好的地方,是数个scope和scope可以组合,本来很难看的代码可以变成这样优美可读的形式: Post.published.by_author(user).within_a_week.in_forum(forum) 但有时候,到底需要将哪些scopes组合在一起,在运行时才能决定,没法在程序中写死。找了一下,似乎没有现成的解决方案,就写了一个叫ScopeGroup的plugin。 使用这个plugin,可以在运行时动态组合named scope,然后可以针对这个组合来调用find, count, average等等函数。 比如,如下代码: # 为model Post创建一个ScopeGroup scope_group = ScopeGroup.new(Post) # 将scope分别加入组合 scope_group.published scope_group.by_author(user) scope_group.within_a_week 再调用 scope_group.find(:all) 就等同于: Post.published.by_author(user).within_a_week 我们碰到的一个用户场景是需要根据地区、类别、状态等各种条件分层次组合生成报表,使用了动态组合named scope的方式,大大简化了代码。 我把这个插件放在了github: ScopeGroup项目主页链接。 安装方式: script/plugin install git://github.com/robin/scopegroup.git

FBO wordpress plugin 0.3

因为本职工作太忙,搁置了一端时间,最近抽空把它搞出来了。 花了一些时间重构,把opml的解析和生成彻底分成独立模块,把view的部分也独立出来,从目前结构上讲,不但可以很容易加入新的provider,新的view也可以以插件形式加入了。目前支持的view有两个,一个是可以放在sidebar里的fbo_list_show(),我的sidebar就是一个例子,还有就是可以放在page template里的fbo_show(),就象这里。 这次最大的改变是采用了异步触发FBO的生成和搜集过程。在无需后台cron的支持下,FBO的生成和搜集仍然由用户浏览页面触发,但触发通过XMLHttpRequest转化成一个不阻塞的后台异步过程,用户不会感到任何的延迟。也因为这个原因,在刚安装完这个版本后,最好在Option中先强制搜集一次朋友的FBO信息。 另外就是改善了缓存机制。 下载在这里: fbo.0.3.tar.gz 安装方式仍然是在wp-content/plugins下解开,在plugin页面中enable,然后在Option下的FBO里配制。

Friends By Outline – 一个开放式社会化网络的尝试

开放式社会化网络的尝试有不少,比如XFN和FOAF,这两种技术都着眼于建立网络,我以前分析过,一个社会化网络应用,只有网络是不够的,至少不够有趣。 blog是天然具备一些社会化网络的要素,个人提供内容,blogroll提供网络框架。