<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>tini8 (tini8)</title>
    <link>https://ruby-china.org/tini8</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>果然 V2EX 跟当年落伍者的运营方式如出一辙</title>
      <description>&lt;p&gt;10 年前落伍者让我流连忘返，为什么？因为那里面总有一些同行讲故事给我听，并且讲的头头是道，让人听的上瘾，几天不去看看就觉得生活少了点什么似的。直到 10 年以后，我才逐渐发现那些讲故事的 ID 都是同一个人，因为文风太像了，讲的朦朦胧胧让人每看一篇都觉得人生有了收获，但其实什么收获都没有，如同心灵鸡汤，只不过比心灵鸡汤更接地气，因为那是站在自己的行业讲故事给自己听，又亲切又接地气，简直太爽了。当然收获嘛，除了荒废了大好的青春什么收获都没有。&lt;/p&gt;

&lt;p&gt;今天我在 v2ex 又看到一篇第一人称的故事，当然这个故事是站在程序员的角度讲的，刚好我这段时间从站长转行为程序员，当年在落伍那种亲切又接地气的感觉又来了 &lt;a href="http://www.v2ex.com/t/237958" rel="nofollow" target="_blank"&gt;http://www.v2ex.com/t/237958&lt;/a&gt; 。不过这次我学聪明了，毕竟被落伍荒废了近 10 年的青春还是有教训的，于是我在下面回复“跟当年的落伍者风格很像啊”，于是，我就被封 ID 了。&lt;/p&gt;</description>
      <author>tini8</author>
      <pubDate>Sun, 22 Nov 2015 00:54:24 +0800</pubDate>
      <link>https://ruby-china.org/topics/28144</link>
      <guid>https://ruby-china.org/topics/28144</guid>
    </item>
    <item>
      <title>send_file 如果是图片的时候可不可以不下载直接在浏览器中显示？</title>
      <description>&lt;p&gt;在 controller 中是这样的：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'Cache-Control'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'public, max-age=2592000'&lt;/span&gt;
&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'Content-type'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'image/jpeg'&lt;/span&gt;
&lt;span class="n"&gt;send_file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;filepath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="ss"&gt;:filename&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="vi"&gt;@attachment.name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="ss"&gt;:type&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="vi"&gt;@attachment.content_type&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我希望在附件是图片的时候，打开这个网址，直接在浏览器中显示图片，而不是像其它文件一样直接下载下来&lt;/p&gt;</description>
      <author>tini8</author>
      <pubDate>Sat, 05 Sep 2015 14:49:06 +0800</pubDate>
      <link>https://ruby-china.org/topics/27193</link>
      <guid>https://ruby-china.org/topics/27193</guid>
    </item>
    <item>
      <title>函数的返回值你用 return 吗？</title>
      <description>&lt;p&gt;ruby 默认返回最后一行内容，但我还是习惯用 return 返回内容，不写总觉得怪怪的&lt;/p&gt;</description>
      <author>tini8</author>
      <pubDate>Mon, 10 Aug 2015 15:17:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/26853</link>
      <guid>https://ruby-china.org/topics/26853</guid>
    </item>
    <item>
      <title>递归文件夹是用 Find.find 还是 Dir.glob</title>
      <description>&lt;p&gt;貌似 Dir.glob 很强大，可以用通配符过滤，不过既然有这么强大的为什么还有 Find.find 呢？&lt;/p&gt;</description>
      <author>tini8</author>
      <pubDate>Mon, 27 Jul 2015 15:06:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/26659</link>
      <guid>https://ruby-china.org/topics/26659</guid>
    </item>
    <item>
      <title>根据不同的域名，选择不同的 views 目录有没有捷径？</title>
      <description>&lt;p&gt;因为要做手机站，访问 m.xxxx.com 的时候想使用手机版的模板，controller、models 手机版倒不用特殊定制了，就是 views 跟 PC 版不一样，有没有办法让访问 m.xxxx.com 的时候加载 views/m/ 文件夹下的模板？&lt;/p&gt;</description>
      <author>tini8</author>
      <pubDate>Sat, 27 Jun 2015 13:30:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/26205</link>
      <guid>https://ruby-china.org/topics/26205</guid>
    </item>
    <item>
      <title>guides.ruby-china.org 好卡啊，能不能把它也转回国内啊？</title>
      <description>&lt;p&gt;看了下 IP 地址，澳大利亚的，&lt;a href="http://guides.ruby-china.org/" rel="nofollow" target="_blank"&gt;http://guides.ruby-china.org/&lt;/a&gt; 翻译的文档很好，比看英文文档快很多&lt;/p&gt;</description>
      <author>tini8</author>
      <pubDate>Wed, 10 Jun 2015 15:49:48 +0800</pubDate>
      <link>https://ruby-china.org/topics/25958</link>
      <guid>https://ruby-china.org/topics/25958</guid>
    </item>
    <item>
      <title>真是用了 Ruby 就没法再用其他语言了</title>
      <description>&lt;p&gt;太人性化了，发张小图骚情一下&lt;/p&gt;</description>
      <author>tini8</author>
      <pubDate>Tue, 05 May 2015 10:46:58 +0800</pubDate>
      <link>https://ruby-china.org/topics/25435</link>
      <guid>https://ruby-china.org/topics/25435</guid>
    </item>
    <item>
      <title>用了 Ruby 以后，发现瓶颈已不在数据库，而在语言</title>
      <description>&lt;p&gt;以 N 级菜单为例，在 php 下我是这样的：&lt;/p&gt;

&lt;p&gt;`先用 "select * from trees" 查询出所有的菜单项，存入到一个数组，然后用一个递归函数循环这个数组，遇到 tree1.id == tree2.parent_id 的时候，把 tree2 保存到 tree1 的 children 里面。&lt;/p&gt;

&lt;p&gt;这样只运行了一行 sql 查询，剩下的用程序算法实现。&lt;/p&gt;

&lt;p&gt;在 ruby 下我也试着这样处理，结果速度慢的超乎我的想想，于是，在 ruby 下我只能这样做：&lt;/p&gt;

&lt;p&gt;先用 "select * from trees where depth=1" 查询出所有的一级菜单项，然后 &lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;trees&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;trees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&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;tree&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
  &lt;span class="n"&gt;tree&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;children&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Tree&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;parent_id: &lt;/span&gt;&lt;span class="n"&gt;tree&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;tree&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;children&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tree&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;children&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&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;child&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;children&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Tree&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;parent_id&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="nf"&gt;child&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;child&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="n"&gt;tree&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样会进行好多次 sql 查询，但这样的速度是最快的，对 ruby 来说&lt;/p&gt;

&lt;p&gt;================================= 2015-04-27 20:06 补充 ==================================
PHP 递归实现菜单树的代码：&lt;/p&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;make_tree&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$arr&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nb"&gt;function_exists&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'make_tree1'&lt;/span&gt;&lt;span class="p"&gt;)){&lt;/span&gt;
        &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;make_tree1&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nv"&gt;$arr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$parent_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
            &lt;span class="nv"&gt;$new_arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
            &lt;span class="k"&gt;foreach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$arr&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$k&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="nv"&gt;$v&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
                &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$v&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;parent_id&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nv"&gt;$parent_id&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
                    &lt;span class="nv"&gt;$new_arr&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$v&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                    &lt;span class="k"&gt;unset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$k&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="k"&gt;foreach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$new_arr&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nv"&gt;$a&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
                &lt;span class="nv"&gt;$a&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;children&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;make_tree1&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$arr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$a&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$new_arr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;make_tree1&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$arr&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>tini8</author>
      <pubDate>Mon, 27 Apr 2015 10:28:18 +0800</pubDate>
      <link>https://ruby-china.org/topics/25330</link>
      <guid>https://ruby-china.org/topics/25330</guid>
    </item>
    <item>
      <title>中午吃饭的时候同事问"你是用驴逼的?"</title>
      <description>&lt;p&gt;半天我没反应过来，想了半天感觉有点像 ruby，我确实是在公司写 ruby 的。真不知道他是故意的还是有意的&lt;/p&gt;</description>
      <author>tini8</author>
      <pubDate>Thu, 16 Apr 2015 12:42:05 +0800</pubDate>
      <link>https://ruby-china.org/topics/25166</link>
      <guid>https://ruby-china.org/topics/25166</guid>
    </item>
    <item>
      <title>有用 Spree Commerce 的吗？真心慢啊</title>
      <description>&lt;p&gt;在 MAC 上搭建了一个，每打开一个页面差不多得 2 秒钟，都花费再 erb 模板渲染上了，production 环境应该也改善不了多少吧，erb 模板没法缓存。&lt;/p&gt;

&lt;p&gt;下面是打开首页时 console 的信息：&lt;/p&gt;

&lt;p&gt;Started GET "/" for ::1 at 2015-04-03 21:59:17 +0800
Processing by Spree::HomeController#index as HTML
  Spree::Preference Load (0.1ms)  SELECT  "spree_preferences".* FROM "spree_preferences" WHERE "spree_preferences"."key" = ? LIMIT 1  [["key", "spree/frontend_configuration/locale"]]
  Spree::User Load (0.1ms)  SELECT  "spree_users".* FROM "spree_users" WHERE "spree_users"."deleted_at" IS NULL AND "spree_users"."id" = ?  ORDER BY "spree_users"."id" ASC LIMIT 1  [["id", 1]]
  Spree::Store Load (0.1ms)  SELECT  "spree_stores".* FROM "spree_stores" WHERE (url like '%localhost%')  ORDER BY "spree_stores"."id" ASC LIMIT 1
  Spree::Store Load (0.1ms)  SELECT  "spree_stores".* FROM "spree_stores" WHERE "spree_stores"."default" = 't'  ORDER BY "spree_stores"."id" ASC LIMIT 1
  Spree::Order Load (0.0ms)  SELECT  "spree_orders".* FROM "spree_orders" WHERE "spree_orders"."completed_at" IS NULL AND "spree_orders"."currency" = ? AND "spree_orders"."guest_token" = ? AND "spree_orders"."store_id" = ? AND "spree_orders"."user_id" = ? LIMIT 1  [["currency", "USD"], ["guest_token", "Kw4AVot88W6Elx_pi9Tpkw"], ["store_id", 1], ["user_id", 1]]
  Spree::Order Load (0.1ms)  SELECT  "spree_orders".* FROM "spree_orders" WHERE "spree_orders"."user_id" = ? AND "spree_orders"."completed_at" IS NULL  ORDER BY created_at DESC LIMIT 1  [["user_id", 1]]
  Spree::Taxonomy Load (0.1ms)  SELECT "spree_taxonomies".* FROM "spree_taxonomies"  ORDER BY spree_taxonomies.position, spree_taxonomies.created_at
  Spree::Taxon Load (0.2ms)  SELECT "spree_taxons".* FROM "spree_taxons" WHERE "spree_taxons"."parent_id" IS NULL AND "spree_taxons"."taxonomy_id" IN (1, 2)
  Spree::Taxon Load (0.2ms)  SELECT "spree_taxons".* FROM "spree_taxons" WHERE "spree_taxons"."parent_id" IN (1, 2)  ORDER BY "lft"
  Rendered /Users/tini8/.rvm/gems/ruby-2.2.1@rails420/gems/spree_frontend-3.0.0/app/views/spree/shared/_taxonomies.html.erb (13.9ms)
   (0.3ms)  SELECT COUNT(count_column) FROM (SELECT  1 AS count_column FROM "spree_products" INNER JOIN "spree_variants" ON "spree_variants"."product_id" = "spree_products"."id" AND "spree_variants"."is_master" = 't' AND "spree_variants"."deleted_at" IS NULL INNER JOIN "spree_prices" ON "spree_prices"."variant_id" = "spree_variants"."id" AND "spree_prices"."deleted_at" IS NULL WHERE "spree_products"."deleted_at" IS NULL AND ("spree_products".deleted_at IS NULL or "spree_products".deleted_at &amp;gt;= '2015-04-03 13:59:17.648583') AND ("spree_products".available_on &amp;lt;= '2015-04-03 13:59:17.649115') AND (spree_prices.amount IS NOT NULL) AND "spree_prices"."currency" = 'USD' LIMIT 12 OFFSET 0) subquery_for_count
   (0.2ms)  SELECT  MAX("spree_products"."updated_at") FROM "spree_products" INNER JOIN "spree_variants" ON "spree_variants"."product_id" = "spree_products"."id" AND "spree_variants"."is_master" = 't' AND "spree_variants"."deleted_at" IS NULL INNER JOIN "spree_prices" ON "spree_prices"."variant_id" = "spree_variants"."id" AND "spree_prices"."deleted_at" IS NULL WHERE "spree_products"."deleted_at" IS NULL AND ("spree_products".deleted_at IS NULL or "spree_products".deleted_at &amp;gt;= '2015-04-03 13:59:17.648583') AND ("spree_products".available_on &amp;lt;= '2015-04-03 13:59:17.649115') AND (spree_prices.amount IS NOT NULL) AND "spree_prices"."currency" = 'USD' LIMIT 12 OFFSET 0
   (0.3ms)  SELECT COUNT(&lt;em&gt;) FROM "spree_products" INNER JOIN "spree_variants" ON "spree_variants"."product_id" = "spree_products"."id" AND "spree_variants"."is_master" = 't' AND "spree_variants"."deleted_at" IS NULL INNER JOIN "spree_prices" ON "spree_prices"."variant_id" = "spree_variants"."id" AND "spree_prices"."deleted_at" IS NULL WHERE "spree_products"."deleted_at" IS NULL AND ("spree_products".deleted_at IS NULL or "spree_products".deleted_at &amp;gt;= '2015-04-03 13:59:17.648583') AND ("spree_products".available_on &amp;lt;= '2015-04-03 13:59:17.649115') AND (spree_prices.amount IS NOT NULL) AND "spree_prices"."currency" = 'USD'
  CACHE (0.0ms)  SELECT COUNT(count_column) FROM (SELECT  1 AS count_column FROM "spree_products" INNER JOIN "spree_variants" ON "spree_variants"."product_id" = "spree_products"."id" AND "spree_variants"."is_master" = 't' AND "spree_variants"."deleted_at" IS NULL INNER JOIN "spree_prices" ON "spree_prices"."variant_id" = "spree_variants"."id" AND "spree_prices"."deleted_at" IS NULL WHERE "spree_products"."deleted_at" IS NULL AND ("spree_products".deleted_at IS NULL or "spree_products".deleted_at &amp;gt;= '2015-04-03 13:59:17.648583') AND ("spree_products".available_on &amp;lt;= '2015-04-03 13:59:17.649115') AND (spree_prices.amount IS NOT NULL) AND "spree_prices"."currency" = 'USD' LIMIT 12 OFFSET 0) subquery_for_count
  CACHE (0.0ms)  SELECT COUNT(count_column) FROM (SELECT  1 AS count_column FROM "spree_products" INNER JOIN "spree_variants" ON "spree_variants"."product_id" = "spree_products"."id" AND "spree_variants"."is_master" = 't' AND "spree_variants"."deleted_at" IS NULL INNER JOIN "spree_prices" ON "spree_prices"."variant_id" = "spree_variants"."id" AND "spree_prices"."deleted_at" IS NULL WHERE "spree_products"."deleted_at" IS NULL AND ("spree_products".deleted_at IS NULL or "spree_products".deleted_at &amp;gt;= '2015-04-03 13:59:17.648583') AND ("spree_products".available_on &amp;lt;= '2015-04-03 13:59:17.649115') AND (spree_prices.amount IS NOT NULL) AND "spree_prices"."currency" = 'USD' LIMIT 12 OFFSET 0) subquery_for_count
  Spree::Product Load (0.3ms)  SELECT  "spree_products".&lt;/em&gt; FROM "spree_products" INNER JOIN "spree_variants" ON "spree_variants"."product_id" = "spree_products"."id" AND "spree_variants"."is_master" = 't' AND "spree_variants"."deleted_at" IS NULL INNER JOIN "spree_prices" ON "spree_prices"."variant_id" = "spree_variants"."id" AND "spree_prices"."deleted_at" IS NULL WHERE "spree_products"."deleted_at" IS NULL AND ("spree_products".deleted_at IS NULL or "spree_products".deleted_at &amp;gt;= '2015-04-03 13:59:17.648583') AND ("spree_products".available_on &amp;lt;= '2015-04-03 13:59:17.649115') AND (spree_prices.amount IS NOT NULL) AND "spree_prices"."currency" = 'USD' LIMIT 12 OFFSET 0
  Spree::Variant Load (0.2ms)  SELECT "spree_variants".* FROM "spree_variants" WHERE "spree_variants"."deleted_at" IS NULL AND "spree_variants"."is_master" = 't' AND "spree_variants"."product_id" IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
  Spree::Price Load (0.2ms)  SELECT "spree_prices".* FROM "spree_prices" WHERE "spree_prices"."deleted_at" IS NULL AND "spree_prices"."variant_id" IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
  Spree::Image Load (0.3ms)  SELECT "spree_assets".* FROM "spree_assets" WHERE "spree_assets"."type" IN ('Spree::Image') AND "spree_assets"."viewable_type" = 'Spree::Variant' AND "spree_assets"."viewable_id" IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)  ORDER BY "spree_assets"."position" ASC
  Rendered /Users/tini8/.rvm/gems/ruby-2.2.1@rails420/gems/spree_frontend-3.0.0/app/views/spree/shared/_products.html.erb (447.9ms)
  Rendered /Users/tini8/.rvm/gems/ruby-2.2.1@rails420/gems/spree_frontend-3.0.0/app/views/spree/home/index.html.erb within spree/layouts/spree_application (622.9ms)
  Rendered /Users/tini8/.rvm/gems/ruby-2.2.1@rails420/gems/spree_frontend-3.0.0/app/views/spree/shared/_head.html.erb (189.1ms)
  Spree::Tracker Load (0.2ms)  SELECT  "spree_trackers".* FROM "spree_trackers" WHERE "spree_trackers"."active" = 't'  ORDER BY "spree_trackers"."id" ASC LIMIT 1
  Rendered /Users/tini8/.rvm/gems/ruby-2.2.1@rails420/gems/spree_frontend-3.0.0/app/views/spree/shared/_google_analytics.js.erb (1.1ms)
Deface: 1 overrides found for 'spree/shared/_nav_bar'
Deface: 'auth_shared_login_bar' matched 1 times with 'li#search-bar'
Deface: [ERROR] The original source for 'auth_shared_login_bar' has changed, this override should be reviewed to ensure it's still valid.
   (0.2ms)  SELECT MAX("spree_taxons"."updated_at") FROM "spree_taxons" WHERE "spree_taxons"."parent_id" IS NULL
  Spree::Taxon Load (0.1ms)  SELECT "spree_taxons".* FROM "spree_taxons" WHERE "spree_taxons"."parent_id" IS NULL  ORDER BY "spree_taxons"."lft"
  Rendered /Users/tini8/.rvm/gems/ruby-2.2.1@rails420/gems/spree_frontend-3.0.0/app/views/spree/shared/_search.html.erb (4.5ms)
  Rendered /Users/tini8/.rvm/gems/ruby-2.2.1@rails420/gems/spree_frontend-3.0.0/app/views/spree/shared/_nav_bar.html.erb (91.6ms)
  Rendered /Users/tini8/.rvm/gems/ruby-2.2.1@rails420/gems/spree_frontend-3.0.0/app/views/spree/shared/_main_nav_bar.html.erb (2.8ms)
  Rendered /Users/tini8/.rvm/gems/ruby-2.2.1@rails420/gems/spree_frontend-3.0.0/app/views/spree/shared/_header.html.erb (292.5ms)
  Rendered /Users/tini8/.rvm/gems/ruby-2.2.1@rails420/gems/spree_frontend-3.0.0/app/views/spree/shared/_sidebar.html.erb (0.2ms)
Completed 200 OK in 1593ms (Views: 1582.2ms | ActiveRecord: 3.4ms)&lt;/p&gt;</description>
      <author>tini8</author>
      <pubDate>Fri, 03 Apr 2015 22:07:18 +0800</pubDate>
      <link>https://ruby-china.org/topics/24991</link>
      <guid>https://ruby-china.org/topics/24991</guid>
    </item>
    <item>
      <title>rmbp 用了一下外接鼠标，被感动到了</title>
      <description>&lt;p&gt;太 TM 好用了，还只是普通的杂牌鼠标。除了滚动不如触摸板平滑，其他点击操作啥的，比触摸板舒服多了。&lt;/p&gt;</description>
      <author>tini8</author>
      <pubDate>Tue, 24 Mar 2015 18:29:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/24819</link>
      <guid>https://ruby-china.org/topics/24819</guid>
    </item>
    <item>
      <title>Ruby 为什么没有 rbquery？Nokogiri 实在差强人意</title>
      <description>&lt;p&gt;python 有个 pyquery，ruby 也应该有个 rbquery，nokogiri 用起来完全没有 jquery 的感觉啊。pyquery 能找到 80% 的 jquery 的感觉&lt;/p&gt;</description>
      <author>tini8</author>
      <pubDate>Sun, 15 Feb 2015 11:59:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/24275</link>
      <guid>https://ruby-china.org/topics/24275</guid>
    </item>
  </channel>
</rss>
