<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>zangcw (臧成威)</title>
    <link>https://ruby-china.org/zangcw</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>令人苦恼的性能问题</title>
      <description>&lt;p&gt;最近很长一段时间，一直在查性能问题，几个月过去了，ab 并发量从原来的 4 台机器 20 多并发，到现在 100 多，还是非常低。
服务器的环境从原来的 &lt;code&gt;Nginx + Unicorn + Padrino + Mongoid&lt;/code&gt;改成了&lt;code&gt;Nginx + Rainbows(EventMachine) + Padrino + Moped + Sinatra::Synchrony&lt;/code&gt;性能提升的也一般
业务逻辑上，主要是论坛的那种逻辑，分为 客户端 - 群组 - 讨论 - 回复等几个层次，主要使用 reference 进行查询，用于测试并发的接口的逻辑主要就是查询一个客户端下所有的群组信息，以及某一个用户在这些群组的权限，查询的次数已经尽量减少了。
执行 perf 输出，发现 garbage_collector 占比很高，不知道什么原因
大家都帮忙想想办法吧
&lt;img src="//l.ruby-china.com/photo/2014/4e8fd1ff6aaa7d03a6ab9739086fce9a.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>zangcw</author>
      <pubDate>Wed, 15 Jan 2014 00:11:18 +0800</pubDate>
      <link>https://ruby-china.org/topics/16811</link>
      <guid>https://ruby-china.org/topics/16811</guid>
    </item>
    <item>
      <title>多级类别的利器 awesome_nested_set</title>
      <description>&lt;p&gt;应朋友的要求，从今天起，把用到的 gem 都写在 blog 上，即是给大家一个分享，也给自己一个记忆的地方。&lt;/p&gt;

&lt;p&gt;原则就是，都是原创，可以少写，但是不帖大量自己没有搞懂的代码或者别人的观点。&lt;/p&gt;

&lt;p&gt;今天用到了一个 gem 包叫做
&lt;code&gt;awesome_nested_set&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;是一个专门处理多级 Model 嵌套的。使用二叉树算法，很精妙&lt;/p&gt;

&lt;p&gt;用法&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'awesome_nested_set'&lt;/span&gt;
&lt;span class="c1"&gt;# gem 'awesome_nested_set', github: 'collectiveidea/awesome_nested_set' #on Rails 4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后在你的 Migration 里面，要多级嵌套的地方写上&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;create_table&lt;/span&gt; &lt;span class="ss"&gt;:article_categories&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
  &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt; &lt;span class="ss"&gt;:name&lt;/span&gt;
  &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;integer&lt;/span&gt; &lt;span class="ss"&gt;:parent_id&lt;/span&gt;
  &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;integer&lt;/span&gt; &lt;span class="ss"&gt;:lft&lt;/span&gt;
  &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;integer&lt;/span&gt; &lt;span class="ss"&gt;:rgt&lt;/span&gt;
  &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;integer&lt;/span&gt; &lt;span class="ss"&gt;:depth&lt;/span&gt;

  &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;timestamps&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后在 model 里&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;acts_as_nested_set
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;OK 了，一个多级嵌套的模型已经搭建完毕了，简单吧？怎么用呢？&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;such&lt;/span&gt; &lt;span class="n"&gt;as&lt;/span&gt; &lt;span class="n"&gt;article_category&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;ancestors&lt;/span&gt; &lt;span class="c1"&gt;#所有的父节点(包括祖父节点）&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Boolean&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;child?&lt;/span&gt; &lt;span class="c1"&gt;#是否是子节点？=有父节点&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;descendants&lt;/span&gt; &lt;span class="c1"&gt;#所有的子节点(包括孙子节点)&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Boolean&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;is_ancestor_of?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;other&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#是否是other的父辈&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Boolean&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;is_descendant_of?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;other&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#是否是other的子辈&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Boolean&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;is_or_is_ancestor_of?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;other&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#是否是other的父辈或自己&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Boolean&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;is_or_is_descendant_of?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;other&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#是否是other的子辈或自己&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Boolean&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;leaf?&lt;/span&gt; &lt;span class="c1"&gt;#是否是尾叶子节点？=没有子节点&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;leaves&lt;/span&gt; &lt;span class="c1"&gt;#列出所有的叶子节点&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="c1"&gt;#左边的兄弟编号(二叉树节点号，可不是id哟）&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;left_sibling&lt;/span&gt; &lt;span class="c1"&gt;#左边的兄弟&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;level&lt;/span&gt; &lt;span class="c1"&gt;#深度，0是root&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;move_left&lt;/span&gt; &lt;span class="c1"&gt;#挪到左边兄弟的左边&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Boolean&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;move_possible?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#能否挪到target的旁边(父子兄弟)，如果是target的祖父就不可以&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;move_right&lt;/span&gt; &lt;span class="c1"&gt;#挪到右边兄弟的右边&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;move_to_child_of&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#挪到node的子节点&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;move_to_child_with_index&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#挪到node的子节点，并且排序为index&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;move_to_left_of&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#挪到node的左边&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;move_to_ordered_child_of&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;parent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;order_attribute&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ascending&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#挪到parent下，按照order_attribute进行升序(ascending=true)或者降序(ascending=false)排序&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;move_to_right_of&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#挪到node的右边&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;move_to_root&lt;/span&gt; &lt;span class="c1"&gt;#使自己脱离成为根节点&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;parent&lt;/span&gt; &lt;span class="c1"&gt;#父节点&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;right&lt;/span&gt; &lt;span class="c1"&gt;#右边的兄弟编号（同上）&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;right_sibling&lt;/span&gt; &lt;span class="c1"&gt;#右边的兄弟&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="c1"&gt;#返回所处的树的根节点&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Boolean&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;root?&lt;/span&gt; &lt;span class="c1"&gt;#是否是根节点=没有父节点&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Boolean&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;same_scope?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;other&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#这个不是很明白哦，以后搞懂再改&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;self_and_ancestors&lt;/span&gt; &lt;span class="c1"&gt;#自己和所有的父辈&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;self_and_descendants&lt;/span&gt; &lt;span class="c1"&gt;#自己和所有的子孙&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;self_and_siblings&lt;/span&gt; &lt;span class="c1"&gt;#自己和所有的兄弟&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;siblings&lt;/span&gt; &lt;span class="c1"&gt;#所有的兄弟&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;to_text&lt;/span&gt; &lt;span class="c1"&gt;#以文本形式列出树,方便debug&lt;/span&gt;
&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="c1"&gt;#&amp;lt;ArticleCategory:0x007fa6815e6e90&amp;gt; (, 1, 8)&lt;/span&gt;
&lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="c1"&gt;#&amp;lt;ArticleCategory:0x007fa6815e6ad0&amp;gt; (1, 2, 7)&lt;/span&gt;
&lt;span class="o"&gt;***&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="c1"&gt;#&amp;lt;ArticleCategory:0x007fa6815e67b0&amp;gt; (2, 3, 4)&lt;/span&gt;
&lt;span class="o"&gt;***&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="c1"&gt;#&amp;lt;ArticleCategory:0x007fa6815e64b8&amp;gt; (2, 5, 6)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;通过 mysql 的 log 可以看出，每个方法都是一次读取数据库，不需要递归，不需要循环哦。
另外，可以加 callbacks
只需要在 acts_as_nested_set 后面加上一些参数即可&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;acts_as_nested_set  :before_add     =&amp;gt; :do_before_add_stuff,
                    :after_add      =&amp;gt; :do_after_add_stuff,
                    :before_remove  =&amp;gt; :do_before_remove_stuff,
                    :after_remove   =&amp;gt; :do_after_remove_stuff
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;好了，今天就到此吧，希望可以给大家帮助&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.csdn.net/zangcw/article/details/17131385" rel="nofollow" target="_blank" title=""&gt;转自我的 CSDN 博客&lt;/a&gt;&lt;/p&gt;</description>
      <author>zangcw</author>
      <pubDate>Thu, 05 Dec 2013 01:11:51 +0800</pubDate>
      <link>https://ruby-china.org/topics/16020</link>
      <guid>https://ruby-china.org/topics/16020</guid>
    </item>
    <item>
      <title>Unicorn + Mongoid 发现 Unicorn 工作进程在压力测试的时候挂的，求破</title>
      <description>&lt;p&gt;环境是这样的
ruby 1.9.3-p448
mongoid 3.1.5
padrino 0.11.2
unicorn 4.7
正常跑起来没有事，但是用 ab 压力测试，就发现 unicorn.stderr.log 里 worker 都挂了，挂的原因还都不一样
有&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ArgumentError - negative length -463994859 given:
&lt;/code&gt;&lt;/pre&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app error: "The operation: #&amp;lt;Moped::Protocol::Command\n  @length=58\n  @request_id=3\n  @response_to=0\n  @op_code=2004\n  @flags=[]\n  @full_collection_name=\"admin.$cmd\"\n  @skip=0\n  @limit=-1\n  @selector={:ismaster=&amp;gt;1}\n  @fields=nil&amp;gt;\nfailed with error nil" (Moped::Errors::OperationFailure)
&lt;/code&gt;&lt;/pre&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Moped::Errors::OperationFailure - The operation: #&amp;lt;Moped::Protocol::Command
  @length=123
  @request_id=11
  @response_to=0
  @op_code=2004
  @flags=[:slave_ok]
  @full_collection_name="group_production.$cmd"
  @skip=0
  @limit=-1
  @selector={:count=&amp;gt;"users", :query=&amp;gt;{"$and"=&amp;gt;[{"_id"=&amp;gt;{"$in"=&amp;gt;[]}}]}}
  @fields=nil&amp;gt;
failed with error nil:
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;单体跑的时候都正常，为什么呢？有没有相同遭遇的？&lt;/p&gt;</description>
      <author>zangcw</author>
      <pubDate>Sun, 24 Nov 2013 18:24:58 +0800</pubDate>
      <link>https://ruby-china.org/topics/15753</link>
      <guid>https://ruby-china.org/topics/15753</guid>
    </item>
    <item>
      <title>搞了个 Rails engine，但是居然不生效求解释</title>
      <description>&lt;p&gt;地址是&lt;a href="https://github.com/WilliamZang/bootstrap3-kaminari-views" rel="nofollow" target="_blank" title=""&gt;https://github.com/WilliamZang/bootstrap3-kaminari-views&lt;/a&gt;
是做 Kaminari 分页的 bootstrap3 适配，但是死活没效果，请大神帮忙看看。
第一次搞 engine，做的不好见笑了&lt;/p&gt;</description>
      <author>zangcw</author>
      <pubDate>Tue, 12 Nov 2013 23:25:13 +0800</pubDate>
      <link>https://ruby-china.org/topics/15496</link>
      <guid>https://ruby-china.org/topics/15496</guid>
    </item>
  </channel>
</rss>
