<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="/xslt/rss2.xsl" media="screen"?>
<rss version="2.0"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Latest from ChinaonRails's Plugins</title>
		<link>http://chinaonrails.com/go/plugins</link>
		<description>ChinaonRails | ChinaonRails are one of the very few China based web consultancies, who specialize in application development using RubyOnRails/Agile/Ajax.</description>
		<category>Technology</category>
		<language>zh_cn</language>
		<item>
			<title>使用seo_checker检查你的网站是否seo ... no reply</title>
			<link>http://chinaonrails.com/topic/view/3775.html</link>
			<comments>http://chinaonrails.com/topic/view/3775.html#reply</comments>
			<dc:creator>flyerhzm</dc:creator>
			<author>flyerhzm</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/1229.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/1229_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/1229_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			前几天刚刚做了一个rubygem seo_checker，主要是根据google出的search-engine-optimization-starter-guide.pdf来检查一些基本的seo。&lt;br /&gt;
&lt;br /&gt;
检查内容包括：&lt;br /&gt;
use sitemap file&lt;br /&gt;
each page are reachable&lt;br /&gt;
each page has title&lt;br /&gt;
use unique title tags for each page&lt;br /&gt;
each page has meta description&lt;br /&gt;
ues unique descriptions for each page&lt;br /&gt;
url does not just use ID number.&lt;br /&gt;
url does not use excessive keywords&lt;br /&gt;
url does not have deep nesting of subdirectories&lt;br /&gt;
&lt;br /&gt;
项目地址：http://github.com/flyerhzm/seo_checker&lt;br /&gt;
&lt;br /&gt;
欢迎试用
			</description>
			<pubDate>Sun, 07 Mar 2010 17:39:25 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3775.html</guid>
		</item>
		<item>
			<title>bullet2 beta released, supports rails3 beta ... no reply</title>
			<link>http://chinaonrails.com/topic/view/3774.html</link>
			<comments>http://chinaonrails.com/topic/view/3774.html#reply</comments>
			<dc:creator>flyerhzm</dc:creator>
			<author>flyerhzm</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/1229.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/1229_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/1229_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			这两天升级了bullet gem，使得可以支持rails3 beta。&lt;br /&gt;
&lt;br /&gt;
bullet gem旨在通过减少sql 查询数量来帮助你提高应用的性能。 它会在你开发应用的时候监视你的sql查询，并提醒你哪里应该加eager loading（避免N+1查询），哪里使用了无用的eager loading，哪里应该使用counter cache。&lt;br /&gt;
&lt;br /&gt;
项目地址：http://github.com/flyerhzm/bullet&lt;br /&gt;
&lt;br /&gt;
现在比较流行出beta版的gem，如rails3和rspec2，所以我也赶下时髦，把当前版本作为beta版，等rails3正式release了，bullet2再发布正式版。&lt;br /&gt;
&lt;br /&gt;
安装：sudo gem install bullet --pre&lt;br /&gt;
&lt;br /&gt;
具体使用参看http://github.com/flyerhzm/bullet，其中Step by step example也已升级为rails3 beta应用。&lt;br /&gt;
&lt;br /&gt;
欢迎大家使用&lt;br /&gt;
&lt;br /&gt;
谢谢
			</description>
			<pubDate>Sun, 07 Mar 2010 17:09:44 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3774.html</guid>
		</item>
		<item>
			<title>twitter的开源工具。。 ... no reply</title>
			<link>http://chinaonrails.com/topic/view/3769.html</link>
			<comments>http://chinaonrails.com/topic/view/3769.html#reply</comments>
			<dc:creator>rociiu</dc:creator>
			<author>rociiu</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/680.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/680_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/680_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			&lt;a href="http://github.com/mzsanford/twitter-text-rb" rel="nofollow external" class="tpc"&gt;http://github.com/mzsanford/twitter-text-rb&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Twitter text processing library (auto linking and extraction of usernames, lists and hashtags)&lt;br /&gt;
&lt;a href="http://engineering.twitter.com/2010/02/introducing-open-source-twitter-text.html" rel="nofollow external" class="tpc"&gt;http://engineering.twitter.com/2010/02/introducing-open-source-twitter-text.html&lt;/a&gt;
			</description>
			<pubDate>Thu, 04 Mar 2010 09:54:06 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3769.html</guid>
		</item>
		<item>
			<title>rails3 插件网检查是否相配 ... 1 reply</title>
			<link>http://chinaonrails.com/topic/view/3717.html</link>
			<comments>http://chinaonrails.com/topic/view/3717.html#reply</comments>
			<dc:creator>bd7lx</dc:creator>
			<author>bd7lx</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/9.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/9_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/9_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			&lt;a href="http://www.railsplugins.org/home" rel="nofollow external" class="tpc"&gt;http://www.railsplugins.org/home&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Is Your Plugin Ready For Rails 3?&lt;br /&gt;
&lt;br /&gt;
&lt;img class="code" src="http://www.railsinside.com/wp-content/uploads/2010/02/another-rails-logo2.png" border="0" /&gt;
			</description>
			<pubDate>Mon, 08 Feb 2010 11:14:21 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3717.html</guid>
		</item>
		<item>
			<title>GemInABox 做个自己公司内部的gemcutter放gems ... no reply</title>
			<link>http://chinaonrails.com/topic/view/3708.html</link>
			<comments>http://chinaonrails.com/topic/view/3708.html#reply</comments>
			<dc:creator>bd7lx</dc:creator>
			<author>bd7lx</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/9.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/9_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/9_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			&lt;a href="http://github.com/cwninja/geminabox/" rel="nofollow external" class="tpc"&gt;http://github.com/cwninja/geminabox/&lt;/a&gt;&lt;br /&gt;
&lt;img class="code" src="http://i50.tinypic.com/2yknxnr.png" border="0" /&gt;&lt;br /&gt;
&lt;br /&gt;
Really simple rubygem hosting&lt;br /&gt;
Gem in a box is a simple sinatra app to allow you to host your own own in-house gems.&lt;br /&gt;
&lt;a href="http://tomlea.co.uk/posts/0003-gem-in-a-box/" rel="nofollow external" class="tpc"&gt;http://tomlea.co.uk/posts/0003-gem-in-a-box/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
设计是为了内部使用，没考虑到安全的问题和用户认证，如需要得自己加
			</description>
			<pubDate>Thu, 04 Feb 2010 13:30:58 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3708.html</guid>
		</item>
		<item>
			<title>chinese_permalink ... 8 replies</title>
			<link>http://chinaonrails.com/topic/view/3676.html</link>
			<comments>http://chinaonrails.com/topic/view/3676.html#reply</comments>
			<dc:creator>flyerhzm</dc:creator>
			<author>flyerhzm</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/1229.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/1229_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/1229_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			之前写的一个project，主要用来把中文内容翻译成英文的URL，通过google translate做的翻译。正好今天用到，所以重新把它做成了gem，方便使用。&lt;br /&gt;
&lt;br /&gt;
项目地址：http://github.com/flyerhzm/chinese_permalink
			</description>
			<pubDate>Sun, 24 Jan 2010 14:09:03 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3676.html</guid>
		</item>
		<item>
			<title>缓存延迟你的 views_count ... no reply</title>
			<link>http://chinaonrails.com/topic/view/3658.html</link>
			<comments>http://chinaonrails.com/topic/view/3658.html#reply</comments>
			<dc:creator>huacnlee</dc:creator>
			<author>huacnlee</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/1275.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/1275_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/1275_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			项目有很多时候需要进行统计单篇文章的访问次数，如文章、帖子、图片...&lt;br /&gt;
于是在表里面设计一个 views_count 字段作为计数器，然后查看页面的时候更新这个字段。&lt;br /&gt;
&lt;br /&gt;
但一般情况下我们都需要对 views_count 的写入数据库做一下延迟，存到缓存里面去，到了一定数量在更新数据库。&lt;br /&gt;
&lt;br /&gt;
为了方便使用，我把之前的方式改写成了一个插件&lt;br /&gt;
acts_as_views_count:&lt;a href="http://github.com/huacnlee/acts_as_views_count" rel="nofollow external" class="tpc"&gt;http://github.com/huacnlee/acts_as_views_count&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
使用：&lt;br /&gt;
Model&lt;br /&gt;
&lt;br /&gt;
  class Post &amp;lt; ActiveRecord::Base&lt;br /&gt;
    acts_as_views_count&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  class Topic &amp;lt; ActiveRecord::Base&lt;br /&gt;
    # set delay save to db with 30&lt;br /&gt;
    acts_as_views_count :delay =&amp;gt; 30&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Controller&lt;br /&gt;
&lt;br /&gt;
  class PostsController &amp;lt; ApplicationController&lt;br /&gt;
    def show&lt;br /&gt;
      @post = Post.find(params[:id])&lt;br /&gt;
      # update views_count&lt;br /&gt;
      @post.update_views_count&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
View&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;&lt;br /&gt;
    view:&amp;lt;%= @post.views_count_s %&amp;gt; comment: &amp;lt;%= @post.comments_count %&amp;gt;&lt;br /&gt;
  &amp;lt;/p&amp;gt;
			</description>
			<pubDate>Thu, 14 Jan 2010 17:51:40 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3658.html</guid>
		</item>
		<item>
			<title>flyerhzm-metric_fu = metric_fu + rails_best_practices ... 1 reply</title>
			<link>http://chinaonrails.com/topic/view/3624.html</link>
			<comments>http://chinaonrails.com/topic/view/3624.html#reply</comments>
			<dc:creator>flyerhzm</dc:creator>
			<author>flyerhzm</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/1229.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/1229_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/1229_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			之前fork了metric_fu，加上了自己的rails_best_practices，不过metric_fu的作者似乎对rails_best_practices不感兴趣，所以我只能自己生成gem了。&lt;br /&gt;
&lt;br /&gt;
如果大家在使用metric_fu，而且对rails_best_practices感兴趣的话，可以试试flyerhzm-metric_fu&lt;br /&gt;
&lt;br /&gt;
项目地址：http://github.com/flyerhzm/metric_fu&lt;br /&gt;
&lt;br /&gt;
使用方法和metric_fu相同
			</description>
			<pubDate>Sun, 03 Jan 2010 21:46:49 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3624.html</guid>
		</item>
		<item>
			<title>Testing Exception ... no reply</title>
			<link>http://chinaonrails.com/topic/view/3609.html</link>
			<comments>http://chinaonrails.com/topic/view/3609.html#reply</comments>
			<dc:creator>flyerhzm</dc:creator>
			<author>flyerhzm</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/1229.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/1229_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/1229_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			最近看了railscasts 187——Testing Exception，http://railscasts.com/episodes/187-testing-exceptions，教我们如何重现实际环境下产生的exception，感觉非常有用。&lt;br /&gt;
&lt;br /&gt;
然后fork了exception_notification项目，根据exception，自动生成测试代码，并随邮件一起发出来，其中id转换为相应的fixture object需要手动修改。有兴趣的同学可以试试&lt;br /&gt;
&lt;br /&gt;
项目地址：http://github.com/flyerhzm/exception_notification&lt;br /&gt;
&lt;br /&gt;
下面是exception_notification生成的邮件，最后一段是test代码&lt;br /&gt;
&lt;br /&gt;
Date: Thu, 24 Dec 2009 12:30:48 +0800&lt;br /&gt;
From: Exception Notifier &amp;lt;exception.notifier@default.com&amp;gt;&lt;br /&gt;
Subject: [ERROR] posts#index (ActionView::TemplateError) "You have a nil object when you didn't expect it!\nYou might have expected an instance of Array.\nThe error occurred while evaluating&lt;br /&gt;
    nil.each"&lt;br /&gt;
Mime-Version: 1.0&lt;br /&gt;
Content-Type: text/plain; charset=utf-8&lt;br /&gt;
&lt;br /&gt;
A ActionView::TemplateError occurred in posts#index:&lt;br /&gt;
&lt;br /&gt;
  You have a nil object when you didn't expect it!&lt;br /&gt;
You might have expected an instance of Array.&lt;br /&gt;
The error occurred while evaluating nil.each&lt;br /&gt;
  On line #8 of app/views/posts/index.html.erb&lt;br /&gt;
&lt;br /&gt;
    5:     &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;
    6:   &amp;lt;/tr&amp;gt;&lt;br /&gt;
    7:&lt;br /&gt;
    8: &amp;lt;% for post in @posts %&amp;gt;&lt;br /&gt;
    9:   &amp;lt;tr&amp;gt;&lt;br /&gt;
    10:     &amp;lt;td&amp;gt;&amp;lt;%=h post.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    11:     &amp;lt;td&amp;gt;&amp;lt;%= post.comments.collect(&amp;:name) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    app/views/posts/index.html.erb:8&lt;br /&gt;
    app/controllers/posts_controller.rb:7:in `index'&lt;br /&gt;
&lt;br /&gt;
-------------------------------&lt;br /&gt;
Request:&lt;br /&gt;
-------------------------------&lt;br /&gt;
&lt;br /&gt;
  * URL       : http://localhost:8000/posts&lt;br /&gt;
  * IP address: 127.0.0.1&lt;br /&gt;
  * Parameters: {"action"=&amp;gt;"index", "controller"=&amp;gt;"posts"}&lt;br /&gt;
  * Rails root: /Users/richard/Downloads/test&lt;br /&gt;
&lt;br /&gt;
-------------------------------&lt;br /&gt;
Session:&lt;br /&gt;
-------------------------------&lt;br /&gt;
&lt;br /&gt;
  * session id: nil&lt;br /&gt;
  * data: nil&lt;br /&gt;
&lt;br /&gt;
-------------------------------&lt;br /&gt;
Environment:&lt;br /&gt;
-------------------------------&lt;br /&gt;
&lt;br /&gt;
  * GATEWAY_INTERFACE                           : CGI/1.2&lt;br /&gt;
  * HTTP_ACCEPT                                 : text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&lt;br /&gt;
  * HTTP_ACCEPT_CHARSET                         : ISO-8859-1,utf-8;q=0.7,*;q=0.7&lt;br /&gt;
  * HTTP_ACCEPT_ENCODING                        : gzip,deflate&lt;br /&gt;
  * HTTP_ACCEPT_LANGUAGE                        : en-us,en;q=0.5&lt;br /&gt;
  * HTTP_CONNECTION                             : keep-alive&lt;br /&gt;
  * HTTP_COOKIE                                 : user_credentials=802e82e5fdaae678c560cb83608b57dd014606cc107a8a74aa1ec76d6ef05ceb2434c32bc70f1907b4fe2fefe8e879d07fedab9bb5dbe08f640381ee710a8ab8%3A%3A1; _idlebeats_session=BAh7DToWcHJlZmVyZWRfY3VycmVuY3k6CENOWSIVdXNlcl9jcmVkZW50aWFscyIBgDgwMmU4MmU1ZmRhYWU2NzhjNTYwY2I4MzYwOGI1N2RkMDE0NjA2Y2MxMDdhOGE3NGFhMWVjNzZkNmVmMDVjZWIyNDM0YzMyYmM3MGYxOTA3YjRmZTJmZWZlOGU4NzlkMDdmZWRhYjliYjVkYmUwOGY2NDAzODFlZTcxMGE4YWI4OhBfY3NyZl90b2tlbiIxS3BhQ1k5NnVNbCtVZS9ESnYvTFB0SWVpem5mL1lvTzJPcFk0UHErd3Vsaz06C2xvY2FsZSIKZW4tVVM6EG9yZGVyX3Rva2VuIhlRUGhLZnBRb05RZ0h0dnB4bG1uRyIYdXNlcl9jcmVkZW50aWFsc19pZGkGIgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVyOjpGbGFzaDo6Rmxhc2hIYXNoewAGOgpAdXNlZHsAOg9zZXNzaW9uX2lkIiU1NmIyY2M4ZjU3N2EzODRmZGMzOTRkMWM1YTk5NDY2Yw%3D%3D--7ff31223ff235681faff21bcde171c70fae95ab4; _huangzhimin.com_session=BAh7CDoQX2NzcmZfdG9rZW4iMTFrRzdIcnRxQzlKS0pFUWFEMnBDcjVJcW5YRlZaQnl4dnpYMG1TaXRydnc9IgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVyOjpGbGFzaDo6Rmxhc2hIYXNoewc6FHJlY2FwdGNoYV9lcnJvciIaaW5jb3JyZWN0LWNhcHRjaGEtc29sOgplcnJvciIiQ29tbWVudCB3YXMgZmFpbGVkIHRvIGNyZWF0ZS4GOgpAdXNlZHsHOwdUOwhUOg9zZXNzaW9uX2lkIiU2MTliNjY1MGI5M2I1N2U4NjkyNTEyMWRjODk0MzU5Mg%3D%3D--f0e5c9a040493f127cd399fad010fbc7231b7b8f; _store_session=BAh7BzoQX2NzcmZfdG9rZW4iMWpZalZSRjJzeHVaU215YjMzR2tYN3BOeHdZdUFVNjNReXhxOCtYZ2xQZ009Og9zZXNzaW9uX2lkIiU2OTBhYjdiZWE1NDc1OGIxNGJkY2ZkMDliMjc3Yzc0Nw%3D%3D--c6bfbbb6d932df58bbc0b3c7912a79361c000d94&lt;br /&gt;
  * HTTP_HOST                                   : localhost:8000&lt;br /&gt;
  * HTTP_KEEP_ALIVE                             : 300&lt;br /&gt;
  * HTTP_USER_AGENT                             : Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6&lt;br /&gt;
  * HTTP_VERSION                                : HTTP/1.1&lt;br /&gt;
  * PATH_INFO                                   : /posts&lt;br /&gt;
  * QUERY_STRING                                :&lt;br /&gt;
  * REMOTE_ADDR                                 : 127.0.0.1&lt;br /&gt;
  * REQUEST_METHOD                              : GET&lt;br /&gt;
  * REQUEST_PATH                                : /posts&lt;br /&gt;
  * REQUEST_URI                                 : /posts&lt;br /&gt;
  * SCRIPT_NAME                                 :&lt;br /&gt;
  * SERVER_NAME                                 : localhost&lt;br /&gt;
  * SERVER_PORT                                 : 8000&lt;br /&gt;
  * SERVER_PROTOCOL                             : HTTP/1.1&lt;br /&gt;
  * SERVER_SOFTWARE                             : Mongrel 1.1.5&lt;br /&gt;
  * action_controller.request.path_parameters   : actionindexcontrollerposts&lt;br /&gt;
  * action_controller.request.query_parameters  :&lt;br /&gt;
  * action_controller.request.request_parameters:&lt;br /&gt;
  * action_controller.rescue.request            : #&amp;lt;ActionController::Request:0x232b778&amp;gt;&lt;br /&gt;
  * action_controller.rescue.response           : #&amp;lt;ActionController::Response:0x232b4f8&amp;gt;&lt;br /&gt;
  * rack.errors                                 : #&amp;lt;IO:0x2ddc0&amp;gt;&lt;br /&gt;
  * rack.input                                  : #&amp;lt;StringIO:0x24e9538&amp;gt;&lt;br /&gt;
  * rack.multiprocess                           : false&lt;br /&gt;
  * rack.multithread                            : false&lt;br /&gt;
  * rack.request.query_hash                     :&lt;br /&gt;
  * rack.request.query_string                   :&lt;br /&gt;
  * rack.run_once                               : false&lt;br /&gt;
  * rack.session                                :&lt;br /&gt;
  * rack.session.options                        : httponlytruepath/domainkey_session_idexpire_after&lt;br /&gt;
  * rack.url_scheme                             : http&lt;br /&gt;
  * rack.version                                : 01&lt;br /&gt;
 &lt;br /&gt;
  * Process: 98384&lt;br /&gt;
  * Server : Macintosh&lt;br /&gt;
&lt;br /&gt;
-------------------------------&lt;br /&gt;
Backtrace:&lt;br /&gt;
-------------------------------&lt;br /&gt;
&lt;br /&gt;
  On line #8 of app/views/posts/index.html.erb&lt;br /&gt;
 &lt;br /&gt;
      5:     &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;
      6:   &amp;lt;/tr&amp;gt;&lt;br /&gt;
      7:&lt;br /&gt;
      8: &amp;lt;% for post in @posts %&amp;gt;&lt;br /&gt;
      9:   &amp;lt;tr&amp;gt;&lt;br /&gt;
      10:     &amp;lt;td&amp;gt;&amp;lt;%=h post.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      11:     &amp;lt;td&amp;gt;&amp;lt;%= post.comments.collect(&amp;:name) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      app/views/posts/index.html.erb:8&lt;br /&gt;
      app/controllers/posts_controller.rb:7:in `index'&lt;br /&gt;
&lt;br /&gt;
-------------------------------&lt;br /&gt;
Test:&lt;br /&gt;
-------------------------------&lt;br /&gt;
&lt;br /&gt;
  require 'test_helper' &lt;br /&gt;
 &lt;br /&gt;
  class ExceptionsTest &amp;lt; ActionController::IntegrationTest &lt;br /&gt;
    fixtures :all &lt;br /&gt;
 &lt;br /&gt;
    test "GET /posts" do &lt;br /&gt;
      get "/posts", {} &lt;br /&gt;
      assert_response :success &lt;br /&gt;
    end &lt;br /&gt;
  end
			</description>
			<pubDate>Thu, 24 Dec 2009 15:29:26 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3609.html</guid>
		</item>
		<item>
			<title>控制器级别的健康监控 ... no reply</title>
			<link>http://chinaonrails.com/topic/view/3600.html</link>
			<comments>http://chinaonrails.com/topic/view/3600.html#reply</comments>
			<dc:creator>bd7lx</dc:creator>
			<author>bd7lx</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/9.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/9_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/9_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			&lt;a href="http://github.com/blythedunham/health_monitor" rel="nofollow external" class="tpc"&gt;http://github.com/blythedunham/health_monitor&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Health Monitor&lt;br /&gt;
Monitor individual aspects of your rails application’s health&lt;br /&gt;
&lt;br /&gt;
Most rails applications have many additional moving parts of which the health cannot be assessed with simply pinging the (hopefully page cached) homepage&lt;br /&gt;
&lt;br /&gt;
例如&lt;br /&gt;
邮件是否成功发出了&lt;br /&gt;
Is the SMS gateway alive and you bought sufficient credits?&lt;br /&gt;
All database connections are alive? Backgroundrb down again?&lt;br /&gt;
The cloud computing setup jacked the imagemagick? Again?&lt;br /&gt;
You are running out of disk space and there are no more file descriptors for your&lt;br /&gt;
The git SHA and version is what ?&lt;br /&gt;
&lt;br /&gt;
&lt;img class="code" src="http://www.snowgiraffe.com/tech/wp-content/uploads/2009/12/Screen-shot-2009-12-06-at-12.29.53-AM-300x100.png" border="0" /&gt;
			</description>
			<pubDate>Tue, 15 Dec 2009 08:29:47 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3600.html</guid>
		</item>
		<item>
			<title>Versionomy （生成、解析、比较）版本号的插件 ... no reply</title>
			<link>http://chinaonrails.com/topic/view/3570.html</link>
			<comments>http://chinaonrails.com/topic/view/3570.html#reply</comments>
			<dc:creator>bd7lx</dc:creator>
			<author>bd7lx</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/9.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/9_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/9_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			&lt;a href="http://github.com/dazuma/versionomy" rel="nofollow external" class="tpc"&gt;http://github.com/dazuma/versionomy&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Versionomy is a generalized version number library. It provides tools to represent, manipulate, parse, and compare version numbers in the wide variety of versioning schemes in use.&lt;br /&gt;
&lt;br /&gt;
&lt;img class="code" src="http://www.freepicsupload.com/pics/phpVTwNHy-justin050.jpg" border="0" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.daniel-azuma.com/blog/view/z1m1jlq3vu71y5/ruby_version_numbers_done_right_" rel="nofollow external" class="tpc"&gt;http://www.daniel-azuma.com/blog/view/z1m1jlq3vu71y5/ruby_version_numbers_done_right_&lt;/a&gt;
			</description>
			<pubDate>Wed, 02 Dec 2009 08:38:45 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3570.html</guid>
		</item>
		<item>
			<title>nouse同学关于ActiveMerchant的patch，支持支付宝，财付通和快钱 ... 4 replies</title>
			<link>http://chinaonrails.com/topic/view/3551.html</link>
			<comments>http://chinaonrails.com/topic/view/3551.html#reply</comments>
			<dc:creator>flyerhzm</dc:creator>
			<author>flyerhzm</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/1229.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/1229_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/1229_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			之前nouse同学关于ActiveMerchant的patch，支持支付宝，财付通和快钱，很不错，不过使用patch毕竟不方便，所以在征得nouse同学的同意之后，把这个patch做成了一个插件放到github上面，也可以作为gem使用。&lt;br /&gt;
&lt;br /&gt;
项目地址：http://github.com/flyerhzm/activemerchant_patch_for_china&lt;br /&gt;
&lt;br /&gt;
已经测试过支付宝，可以正常使用，另外按照支付宝的文档，支持了所有的请求和应答参数。&lt;br /&gt;
&lt;br /&gt;
README上面有很详细的介绍，希望对大家有帮助
			</description>
			<pubDate>Wed, 25 Nov 2009 12:33:18 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3551.html</guid>
		</item>
		<item>
			<title>ar_merge 合并活动记录 ... no reply</title>
			<link>http://chinaonrails.com/topic/view/3532.html</link>
			<comments>http://chinaonrails.com/topic/view/3532.html#reply</comments>
			<dc:creator>bd7lx</dc:creator>
			<author>bd7lx</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/9.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/9_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/9_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			Merge 2 ActiveRecords, preserving attributes, associations and counters &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://github.com/grosser/ar_merge" rel="nofollow external" class="tpc"&gt;http://github.com/grosser/ar_merge&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img class="code" src="http://www.extremefunnypictures.com/items767/2777.jpg" border="0" /&gt;
			</description>
			<pubDate>Tue, 17 Nov 2009 14:53:39 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3532.html</guid>
		</item>
		<item>
			<title>Rails Best Practices ... 14 replies</title>
			<link>http://chinaonrails.com/topic/view/3521.html</link>
			<comments>http://chinaonrails.com/topic/view/3521.html#reply</comments>
			<dc:creator>flyerhzm</dc:creator>
			<author>flyerhzm</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/1229.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/1229_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/1229_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			相信大家一定还记得Kungfu Rails上张先生关于Rails Best Practices的演讲，非常精彩，忍不住就想把这些practices全部应用到实际项目中。所以最近正在写一个gem把这些practices的检查都做成自动化的。&lt;br /&gt;
&lt;br /&gt;
项目地址：http://github.com/flyerhzm/rails_best_practices&lt;br /&gt;
&lt;br /&gt;
主要思想是通过代码静态分析，找出违反practices的地方&lt;br /&gt;
&lt;br /&gt;
README的最后一块是现在项目的进度，完成度大概在70%左右吧&lt;br /&gt;
&lt;br /&gt;
首先是安装&lt;br /&gt;
sudo gem install rails_best_practices --source http://gemcutter.org&lt;br /&gt;
&lt;br /&gt;
使用起来很简单，直接在rails app根目录，执行&lt;br /&gt;
rails_best_practices .&lt;br /&gt;
就可以了&lt;br /&gt;
&lt;br /&gt;
下面是对我自己的website的代码的检查结果：&lt;br /&gt;
./config/routes.rb:62 - not use default route&lt;br /&gt;
./config/routes.rb:63 - not use default route&lt;br /&gt;
./db/migrate/008_create_blogs.rb:9 - isolate seed data&lt;br /&gt;
./db/migrate/008_create_blogs.rb:9 - isolate seed data&lt;br /&gt;
./app/views/comments/index.atom.builder:6 - law of demeter&lt;br /&gt;
./app/views/comments/index.atom.builder:7 - law of demeter&lt;br /&gt;
./app/controllers/msnspaces_backup_controller.rb:6 - move model logic into model (@results called_count &amp;gt; 4)&lt;br /&gt;
./app/controllers/msnspaces_backup_controller.rb:6 - move model logic into model (comment_websites called_count &amp;gt; 4)&lt;br /&gt;
./db/migrate/001_create_posts.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/001_create_posts.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/002_create_comments.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/002_create_comments.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/003_add_name_mail_website_to_comments.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/003_add_name_mail_website_to_comments.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/004_acts_as_taggable_migration.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/004_acts_as_taggable_migration.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/005_add_comments_count_to_posts.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/005_add_comments_count_to_posts.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/006_add_cached_tag_list_to_posts.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/006_add_cached_tag_list_to_posts.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/007_create_users.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/007_create_users.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/008_create_blogs.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/008_create_blogs.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/009_create_categories.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/009_create_categories.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/010_add_posts_count_to_categories.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/010_add_posts_count_to_categories.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/011_create_blogrolls.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/011_create_blogrolls.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/012_create_codes.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/012_create_codes.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/013_create_entries.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/013_create_entries.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/014_drop_title_from_codes.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/014_drop_title_from_codes.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/015_create_pasters.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/015_create_pasters.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/016_remove_iframe_from_entries.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/016_remove_iframe_from_entries.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/017_remove_codes.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/017_remove_codes.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/20090524154500_create_projects.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/20090524154500_create_projects.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/20090527143212_change_comment_to_polymorphic.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/20090527143212_change_comment_to_polymorphic.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/20090527163947_add_comments_count_to_entries.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/20090527163947_add_comments_count_to_entries.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/20090607135100_add_url_to_projects.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/20090607135100_add_url_to_projects.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/20090607144108_add_comments_count_to_projects.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/20090607144108_add_comments_count_to_projects.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/20090809143849_add_permalink_to_entries.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/20090809143849_add_permalink_to_entries.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./db/migrate/20090818130258_add_description_to_projects.rb:2 - always add db index (comments =&amp;gt; post_id)&lt;br /&gt;
./db/migrate/20090818130258_add_description_to_projects.rb:2 - always add db index (tags =&amp;gt; tag_id, tags =&amp;gt; taggable_id)&lt;br /&gt;
./app/controllers/comments_controller.rb:6 - move finder to named_scope&lt;br /&gt;
./app/controllers/msnspaces_backup_controller.rb:106 - move finder to named_scope&lt;br /&gt;
&lt;br /&gt;
Found 58 errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
如果大家对这个项目有兴趣的话，我希望大家能够在实际的项目中使用一下，然后多给我点反馈，这样我可以更好地完善它，谢谢&lt;br /&gt;
&lt;br /&gt;
最后贴一下所有的检查列表吧&lt;br /&gt;
    *  Lesson 1. Move code from Controller to Model&lt;br /&gt;
         1. Move finder to named_scope&lt;br /&gt;
         2. Use model association&lt;br /&gt;
         3. Use scope access&lt;br /&gt;
         4. Add model virtual attribute&lt;br /&gt;
         5. Use model callback&lt;br /&gt;
         6. Replace Complex Creation with Factory Method&lt;br /&gt;
         7. Move Model Logic into the Model&lt;br /&gt;
         8. model.collection_model_ids (many-to-many)&lt;br /&gt;
         9. Nested Model Forms (one-to-one)&lt;br /&gt;
        10. Nested Model Forms (one-to-many)&lt;br /&gt;
&lt;br /&gt;
    * Lesson 2. RESTful Conventions&lt;br /&gt;
         1. Overuse route customizations&lt;br /&gt;
         2. Needless deep nesting&lt;br /&gt;
         3. Not use default route&lt;br /&gt;
&lt;br /&gt;
    * Lesson 3. Model&lt;br /&gt;
         1. Keep Finders on Their Own Model&lt;br /&gt;
         2. Love named_scope # same as Move finder to named_scope&lt;br /&gt;
         3. the Law of Demeter&lt;br /&gt;
         4. DRY: metaprogramming&lt;br /&gt;
         5. Extract into Module&lt;br /&gt;
         6. Extract to composed class&lt;br /&gt;
         7. Use Observer&lt;br /&gt;
&lt;br /&gt;
    * Lesson 4. Migration&lt;br /&gt;
         1. Isolating Seed Data&lt;br /&gt;
         2. Always add DB index&lt;br /&gt;
&lt;br /&gt;
    * Lesson 5. Controller&lt;br /&gt;
         1. Use before_filter&lt;br /&gt;
         2. DRY Controller&lt;br /&gt;
&lt;br /&gt;
    * Lesson 6. View&lt;br /&gt;
         1. Move code into controller&lt;br /&gt;
         2. Move code into model&lt;br /&gt;
         3. Move code into helper&lt;br /&gt;
         4. Replace instance variable with local variable&lt;br /&gt;
         5. Use Form Builder&lt;br /&gt;
         6. Organize Helper files
			</description>
			<pubDate>Sun, 08 Nov 2009 23:45:30 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3521.html</guid>
		</item>
		<item>
			<title>alchemist 度量单位转换，一汤匙等于多少品脱? ... 1 reply</title>
			<link>http://chinaonrails.com/topic/view/3505.html</link>
			<comments>http://chinaonrails.com/topic/view/3505.html#reply</comments>
			<dc:creator>bd7lx</dc:creator>
			<author>bd7lx</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/9.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/9_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/9_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			&lt;a href="http://github.com/toastyapps/alchemist" rel="nofollow external" class="tpc"&gt;http://github.com/toastyapps/alchemist&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img class="code" src="http://www.freepicsupload.com/pics/phpPi1iQP-alchemist.jpg" border="0" /&gt;&lt;br /&gt;
&lt;br /&gt;
炼金术士的魔力&lt;br /&gt;
&lt;br /&gt;
8.meters.to.miles&lt;br /&gt;
&lt;br /&gt;
&lt;div class="code"&gt;10.kilometers + 1.mile # 11.609344 kilometers&lt;/div&gt;
			</description>
			<pubDate>Wed, 28 Oct 2009 17:59:19 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3505.html</guid>
		</item>
		<item>
			<title>Validatable ... 7 replies</title>
			<link>http://chinaonrails.com/topic/view/3501.html</link>
			<comments>http://chinaonrails.com/topic/view/3501.html#reply</comments>
			<dc:creator>bd7lx</dc:creator>
			<author>bd7lx</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/9.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/9_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/9_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			Validatable&lt;br /&gt;
Validatable is a library for adding validations.&lt;br /&gt;
&lt;br /&gt;
by Jay Fields&lt;br /&gt;
&lt;br /&gt;
&lt;img class="code" src="http://rlv.zcache.com/do_you_validate_tshirt-p235202337245383928uvhz_400.jpg" border="0" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://validatable.rubyforge.org/" rel="nofollow external" class="tpc"&gt;http://validatable.rubyforge.org/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Association add-on for the Validatable gem&lt;br /&gt;
&lt;a href="http://github.com/rubiii/validatable_associations" rel="nofollow external" class="tpc"&gt;http://github.com/rubiii/validatable_associations&lt;/a&gt;
			</description>
			<pubDate>Mon, 26 Oct 2009 15:38:12 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3501.html</guid>
		</item>
		<item>
			<title>自动生成css sprite image ... 2 replies</title>
			<link>http://chinaonrails.com/topic/view/3459.html</link>
			<comments>http://chinaonrails.com/topic/view/3459.html#reply</comments>
			<dc:creator>flyerhzm</dc:creator>
			<author>flyerhzm</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/1229.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/1229_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/1229_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			生成css sprite image的插件，减少http request，方便css维护&lt;br /&gt;
&lt;br /&gt;
项目地址：http://github.com/flyerhzm/css_sprite&lt;br /&gt;
&lt;br /&gt;
介绍可以参看javaeye上面的一篇文章：http://www.javaeye.com/topic/480705，不知道在这里怎么加图片，只能转链接了
			</description>
			<pubDate>Wed, 30 Sep 2009 10:36:48 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3459.html</guid>
		</item>
		<item>
			<title>LinkedIn提醒用户输入个人资料的完成度，此插件效法之 100% 完成 completeness-fu ... no reply</title>
			<link>http://chinaonrails.com/topic/view/3452.html</link>
			<comments>http://chinaonrails.com/topic/view/3452.html#reply</comments>
			<dc:creator>bd7lx</dc:creator>
			<author>bd7lx</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/9.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/9_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/9_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			&lt;a href="http://blog.tty.nl/2009/09/23/100-completeness-fu/" rel="nofollow external" class="tpc"&gt;http://blog.tty.nl/2009/09/23/100-completeness-fu/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://github.com/joshk/completeness-fu" rel="nofollow external" class="tpc"&gt;http://github.com/joshk/completeness-fu&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
给模型完成度打分&lt;br /&gt;
&lt;br /&gt;
&lt;img class="code" src="http://www.freepicsupload.com/pics/phpNeakQt-AmishAirlines.jpg" border="0" /&gt;
			</description>
			<pubDate>Thu, 24 Sep 2009 11:20:03 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3452.html</guid>
		</item>
		<item>
			<title>yaml_db, 各种database backends之间互相转换 ... 3 replies</title>
			<link>http://chinaonrails.com/topic/view/3445.html</link>
			<comments>http://chinaonrails.com/topic/view/3445.html#reply</comments>
			<dc:creator>leomayleomay</dc:creator>
			<author>leomayleomay</author>
			<!--<enclosure url="http://chinaonrails.com/img/p_1.gif" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p_1_s.gif" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p_1_n.gif" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			http://github.com/leomayleomay/yaml_db&lt;br /&gt;
&lt;br /&gt;
轻松实现ActiveRecord支持的各种database backends，如MySQL, Sqlite等等之间的互转。&lt;br /&gt;
&lt;br /&gt;
现在使用，更支持单表dump，多表dump，所有表dump。
			</description>
			<pubDate>Tue, 22 Sep 2009 16:06:44 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3445.html</guid>
		</item>
		<item>
			<title>给控制器加哨兵，request_sentry搬出400 拒绝请求带有恶意畸形参数 ... no reply</title>
			<link>http://chinaonrails.com/topic/view/3437.html</link>
			<comments>http://chinaonrails.com/topic/view/3437.html#reply</comments>
			<dc:creator>bd7lx</dc:creator>
			<author>bd7lx</author>
			<!--<enclosure url="http://chinaonrails.com/img/p/9.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/9_s.jpg" type="image/jpeg" />
			<enclosure url="http://chinaonrails.com/img/p/9_n.jpg" type="image/jpeg" />-->
			<category>Plugins</category>
			<description>
			&lt;a href="http://github.com/ssoroka/request_sentry" rel="nofollow external" class="tpc"&gt;http://github.com/ssoroka/request_sentry&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This Rails plugin provides a DSL for your controller to reject requests (via "400 Bad Request") that supply malicious or malformed parameters&lt;br /&gt;
&lt;br /&gt;
&lt;div class="code"&gt;Example&lt;br /&gt;
=======&lt;br /&gt;
&lt;br /&gt;
    class MyController &amp;lt; ApplicationController&lt;br /&gt;
      accept_only :number, :for =&amp;gt; :age&lt;br /&gt;
      accept_only :boolean, :for =&amp;gt; [:wants_newsletter, :email_alerts]&lt;br /&gt;
      accept_only String::VALID_POSTAL, :for =&amp;gt; :postal_code&lt;br /&gt;
      accept_only /\d{3}\-\d{4}/, :for =&amp;gt; :phone&lt;br /&gt;
&lt;br /&gt;
      #....&lt;br /&gt;
    end&lt;/div&gt;
&lt;br /&gt;
HTTP 400 错误 - 请求无效&lt;br /&gt;
&lt;img class="code" src="http://www.freepicsupload.com/pics/phpnJobdg-120d1610897g215.jpg" border="0" /&gt;
			</description>
			<pubDate>Fri, 18 Sep 2009 15:38:10 +0800</pubDate>
			<guid>http://chinaonrails.com/topic/view/3437.html</guid>
		</item>
	</channel>
</rss>