<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>bindiry (yridnib)</title>
    <link>https://ruby-china.org/bindiry</link>
    <description>无</description>
    <language>en-us</language>
    <item>
      <title>消息提醒的未读数字不能重置</title>
      <description>&lt;p&gt;反馈一个小问题：&lt;/p&gt;

&lt;p&gt;右上角的消息提醒数字（目前是 89），我点击后进入消息界面，数字变成 88，一直在累加，除非我点消息里面的清空，数字才会变成 0&lt;/p&gt;</description>
      <author>bindiry</author>
      <pubDate>Tue, 14 Nov 2017 15:45:08 +0800</pubDate>
      <link>https://ruby-china.org/topics/34574</link>
      <guid>https://ruby-china.org/topics/34574</guid>
    </item>
    <item>
      <title>关于收藏功能取消后依然存在列表中的问题</title>
      <description>&lt;p&gt;今天在清理过期收藏的贴子的时候，反馈一下发现两个问题：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;分页有重复项，具体为翻到第二页后，发现有多个在第一页出现过的重复收藏项。&lt;/li&gt;
&lt;li&gt;取消某些贴子的收藏后，刷新收藏列表页，那个本该消失的收藏项依然存在，点进帖子里可以看到已经取消收藏了。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;环境：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;系统：macOS 10.12.3&lt;/li&gt;
&lt;li&gt;浏览器：Chrome 56.0.2924.87 (64-bit)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;说明：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;截图 1 和截图 2 中前几项可以看出有重复&lt;/li&gt;
&lt;li&gt;截图 3 和截图 4 可以看到第一项的状态是不收藏，但是这个贴子还存在于我的收藏里面。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;截图 1
&lt;img src="https://l.ruby-china.com/photo/2017/f0b9653076b147cf29b6aae23dde09ce.png!large" title="" alt="截图1"&gt;&lt;/p&gt;

&lt;p&gt;截图 2
&lt;img src="https://l.ruby-china.com/photo/2017/bc52fe975d3a634f7708effd835f5c9a.png!large" title="" alt="截图2"&gt;&lt;/p&gt;

&lt;p&gt;截图 3
&lt;img src="https://l.ruby-china.com/photo/2017/ca795eac2a7ac35bde867fe59ea79e72.png!large" title="" alt="截图3"&gt;&lt;/p&gt;

&lt;p&gt;截图 4
&lt;img src="https://l.ruby-china.com/photo/2017/3b6422be71611215655f764686cf6bcf.png!large" title="" alt="截图4"&gt;&lt;/p&gt;</description>
      <author>bindiry</author>
      <pubDate>Mon, 13 Mar 2017 16:06:12 +0800</pubDate>
      <link>https://ruby-china.org/topics/32517</link>
      <guid>https://ruby-china.org/topics/32517</guid>
    </item>
    <item>
      <title>为 module 使用 ActiveSupport::Concern 并 include 后，怎样马上使用 include 后的方法？</title>
      <description>&lt;p&gt;我想通过 &lt;code&gt;ActiveSupport::Concern&lt;/code&gt; 将一个 module 里的实例方法引入到 module 中，但发现在 include 后，不能马上使用这个方法。&lt;/p&gt;

&lt;p&gt;代码如下：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# writable.rb&lt;/span&gt;
&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;Writable&lt;/span&gt;
  &lt;span class="kp"&gt;extend&lt;/span&gt; &lt;span class="no"&gt;ActiveSupport&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Concern&lt;/span&gt;

  &lt;span class="n"&gt;included&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="nb"&gt;attr_reader&lt;/span&gt; &lt;span class="ss"&gt;:write_worker&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;set_options&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;worker&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="vi"&gt;@worker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;worker&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# user.rb&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ApplicationRecord&lt;/span&gt;
  &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;Writable&lt;/span&gt;
  &lt;span class="n"&gt;set_options&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"UserWorker"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 这里因为每个model需要传入不同的参数，所在需要单独在每个被include的model中调用&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这时候我去 new 这个类的时候会出错，找不到 set_options 方法&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# console&lt;/span&gt;
&lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;
&lt;span class="c1"&gt;# =&amp;gt; undefined method `set_options' for #&amp;lt;Class:0x007f909bec0508&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果我把这个方法放在 &lt;code&gt;after_initialize&lt;/code&gt; 里，就可以正常，但感觉很啰嗦&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# user.rb&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ApplicationRecord&lt;/span&gt;
  &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;Writable&lt;/span&gt;
  &lt;span class="n"&gt;after_initialize&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;set_options&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;xxxx&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;请问有没有办法在不使用 &lt;code&gt;after_initialize&lt;/code&gt; 的情况下让代码晚优雅简练地达到目的？&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;之前搞错了概念，用如下方式就可以在实例方法里取类成员属性，不用加 &lt;code&gt;after_initialize&lt;/code&gt; 了。&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;Workable&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nc"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;included&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extend&lt;/span&gt; &lt;span class="no"&gt;ClassMethods&lt;/span&gt;
    &lt;span class="c1"&gt;#include InstanceMethods&lt;/span&gt;
    &lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:include&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;InstanceMethods&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;ClassMethods&lt;/span&gt;
    &lt;span class="nb"&gt;attr_reader&lt;/span&gt; &lt;span class="ss"&gt;:worker&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;set_options&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;worker: &lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="vi"&gt;@worker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;worker&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;InstanceMethods&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_options&lt;/span&gt;
      &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"worker: &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;class&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;worker&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Test&lt;/span&gt;
  &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;Workable&lt;/span&gt;
  &lt;span class="n"&gt;set_options&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;worker: &lt;/span&gt;&lt;span class="s1"&gt;'worker1'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Test2&lt;/span&gt;
  &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;Workable&lt;/span&gt;
  &lt;span class="n"&gt;set_options&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;worker: &lt;/span&gt;&lt;span class="s1"&gt;'worker2'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="no"&gt;Test&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_options&lt;/span&gt; &lt;span class="c1"&gt;# =&amp;gt; worker1&lt;/span&gt;
&lt;span class="no"&gt;Test2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_options&lt;/span&gt; &lt;span class="c1"&gt;# =&amp;gt; worker2&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;</description>
      <author>bindiry</author>
      <pubDate>Mon, 31 Oct 2016 17:59:57 +0800</pubDate>
      <link>https://ruby-china.org/topics/31485</link>
      <guid>https://ruby-china.org/topics/31485</guid>
    </item>
    <item>
      <title>一个基于 NeoVim 专注于 Mac 平台的 GUI 项目 VimR</title>
      <description>&lt;p&gt;官网：&lt;a href="http://vimr.org/" rel="nofollow" target="_blank"&gt;http://vimr.org/&lt;/a&gt;
Github: &lt;a href="https://github.com/qvacua/vimr" rel="nofollow" target="_blank"&gt;https://github.com/qvacua/vimr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://raw.githubusercontent.com/qvacua/vimr/master/resources/screenshot.png" title="" alt="截图"&gt;&lt;/p&gt;

&lt;p&gt;使用 Swift 和 Objective-C 写的，看起来很有潜力。&lt;/p&gt;</description>
      <author>bindiry</author>
      <pubDate>Mon, 03 Oct 2016 22:21:56 +0800</pubDate>
      <link>https://ruby-china.org/topics/31231</link>
      <guid>https://ruby-china.org/topics/31231</guid>
    </item>
    <item>
      <title>用什么方法可以防止 Rails 站被 wappalyzer 类的工具发现？</title>
      <description>&lt;p&gt;看到 wappalyzer &lt;a href="https://github.com/AliasIO/Wappalyzer/blob/7c8886ec3e4ed466ab2d326a7e9fe739f72aa701/src/apps.json#L5782" rel="nofollow" target="_blank" title=""&gt;源码&lt;/a&gt;里关于 Ruby on Rails 的设别代码。&lt;/p&gt;

&lt;p&gt;换句许说：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;用什么方法将下面代码里 headers 里的 Server 和 X-Powered-By 的信息隐藏掉？&lt;/li&gt;
&lt;li&gt;用什么方法修改 &lt;code&gt;csrf-param&lt;/code&gt; 的格式？&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"Ruby"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"cats"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="mi"&gt;27&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Server"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"(?:Mongrel|WEBrick|Ruby)"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"icon"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ruby.png"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"website"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ruby-lang.org"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"Ruby on Rails"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"cats"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Server"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"(?:mod_rails|mod_rack|Phusion(?:&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;.|_)Passenger)&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;;confidence:50"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"X-Powered-By"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"(?:mod_rails|mod_rack|Phusion[&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;._ ]Passenger)(?: &lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;(mod_rails/mod_rack&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;))?(?: ?/?([&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;d&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;.]+))?&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;;version:&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;1&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;;confidence:50"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"icon"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ruby on Rails.png"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"implies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ruby"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"meta"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"csrf-param"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"authenticity_token&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;;confidence:50"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"script"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/assets/application-[a-z&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;d]{32}/&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;.js&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;;confidence:50"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"website"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"rubyonrails.org"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</description>
      <author>bindiry</author>
      <pubDate>Mon, 04 Jul 2016 08:40:49 +0800</pubDate>
      <link>https://ruby-china.org/topics/30439</link>
      <guid>https://ruby-china.org/topics/30439</guid>
    </item>
    <item>
      <title>大量网站易受 ImageMagick 漏洞影响</title>
      <description>&lt;p&gt;被 PHP、Ruby、NodeJS 和 Python 等语言支持的一个广泛使用的图像处理库 ImageMagick 发现了多个漏洞，其中一个漏洞允许远程代码执行，攻击者上传内置恶意代码的图像，网站在处理时能被利用执行攻击者选择的代码。很多社交媒体和博客网站，以及内容管理系统，都直接或间接的依靠基于 ImageMagick 的图像处理，以调整用户上传图像的大小。ImageMagick 维护者尚未释出修复漏洞的补丁，而是提供了一些权宜之计，他们建议网站管理员加入多行代码屏蔽部分可能的利用。&lt;/p&gt;

&lt;p&gt;新闻来源：&lt;a href="http://www.solidot.org/story?sid=48088" rel="nofollow" target="_blank" title=""&gt;solidot&lt;/a&gt;&lt;/p&gt;</description>
      <author>bindiry</author>
      <pubDate>Wed, 04 May 2016 21:37:16 +0800</pubDate>
      <link>https://ruby-china.org/topics/29909</link>
      <guid>https://ruby-china.org/topics/29909</guid>
    </item>
    <item>
      <title>Toughtbot 推出的 Rails 应用后台工具: administrate</title>
      <description>&lt;p&gt;来源： &lt;a href="https://robots.thoughtbot.com/announcing-administrate" rel="nofollow" target="_blank"&gt;https://robots.thoughtbot.com/announcing-administrate&lt;/a&gt;
项目地址： &lt;a href="https://github.com/thoughtbot/administrate" rel="nofollow" target="_blank"&gt;https://github.com/thoughtbot/administrate&lt;/a&gt;&lt;/p&gt;</description>
      <author>bindiry</author>
      <pubDate>Thu, 05 Nov 2015 10:55:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/27957</link>
      <guid>https://ruby-china.org/topics/27957</guid>
    </item>
    <item>
      <title>Ruby-China API 文档是用什么生成的？</title>
      <description>&lt;p&gt;&lt;a href="https://ruby-china.org/api" title=""&gt;https://ruby-china.org/api&lt;/a&gt; 这个页面的 API 是用什么生成的？&lt;/p&gt;</description>
      <author>bindiry</author>
      <pubDate>Wed, 22 Jul 2015 11:40:48 +0800</pubDate>
      <link>https://ruby-china.org/topics/26600</link>
      <guid>https://ruby-china.org/topics/26600</guid>
    </item>
    <item>
      <title>关于 ActiveRecord 的 Store 序列化功能</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/ef0d145e01ac0fb432445345f8dff167.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;类似『下厨房』的 web 版，添加一个菜谱的时候，可以动态添加『步骤』，我本想用 Store 将所有步聚序列化存进一个字段中&lt;/p&gt;

&lt;p&gt;但每一个步聚包含一个图片，就不太好和 CarrierWave 结合来用，否则就要另外建一个表来存图片路径，关系处理起来挺麻烦。&lt;/p&gt;

&lt;p&gt;问一下同学们有没有更好的解决方法或者 Gem？&lt;/p&gt;</description>
      <author>bindiry</author>
      <pubDate>Mon, 20 Jul 2015 18:16:00 +0800</pubDate>
      <link>https://ruby-china.org/topics/26577</link>
      <guid>https://ruby-china.org/topics/26577</guid>
    </item>
    <item>
      <title>关于父子分类的查询问题</title>
      <description>&lt;p&gt;下面是实现父子分类的代码：&lt;/p&gt;

&lt;p&gt;migrate:&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CreateCategories&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Migration&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;change&lt;/span&gt;
    &lt;span class="n"&gt;create_table&lt;/span&gt; &lt;span class="ss"&gt;: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;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;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;timestamps&lt;/span&gt; &lt;span class="ss"&gt;null: &lt;/span&gt;&lt;span class="kp"&gt;false&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&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 ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Category&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;
  &lt;span class="n"&gt;has_many&lt;/span&gt; &lt;span class="ss"&gt;:sub_categories&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;class_name: &lt;/span&gt;&lt;span class="s2"&gt;"Category"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;foreign_key: &lt;/span&gt;&lt;span class="s2"&gt;"parent_id"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;dependent: :destroy&lt;/span&gt;
  &lt;span class="n"&gt;belongs_to&lt;/span&gt; &lt;span class="ss"&gt;:parent_category&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;class_name: &lt;/span&gt;&lt;span class="s2"&gt;"Category"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;foreign_key: &lt;/span&gt;&lt;span class="s2"&gt;"parent_id"&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查询语句：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;categories&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Category&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:sub_categories&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="kp"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;控制台返回的 SQL：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Category&lt;/span&gt; &lt;span class="no"&gt;Load&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.5&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="no"&gt;SELECT&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;*&lt;/span&gt; &lt;span class="no"&gt;FROM&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt; &lt;span class="no"&gt;WHERE&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="s2"&gt;"parent_id"&lt;/span&gt; &lt;span class="no"&gt;IS&lt;/span&gt; &lt;span class="no"&gt;NULL&lt;/span&gt;
&lt;span class="no"&gt;Category&lt;/span&gt; &lt;span class="no"&gt;Load&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.8&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="no"&gt;SELECT&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;*&lt;/span&gt; &lt;span class="no"&gt;FROM&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt; &lt;span class="no"&gt;WHERE&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="s2"&gt;"parent_id"&lt;/span&gt; &lt;span class="no"&gt;IN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="no"&gt;Category&lt;/span&gt; &lt;span class="no"&gt;Load&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.9&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="no"&gt;SELECT&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;*&lt;/span&gt; &lt;span class="no"&gt;FROM&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt; &lt;span class="no"&gt;WHERE&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="s2"&gt;"parent_id"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt;  &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="s2"&gt;"parent_id"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;span class="no"&gt;Category&lt;/span&gt; &lt;span class="no"&gt;Load&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.2&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="no"&gt;SELECT&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;*&lt;/span&gt; &lt;span class="no"&gt;FROM&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt; &lt;span class="no"&gt;WHERE&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="s2"&gt;"parent_id"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt;  &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="s2"&gt;"parent_id"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;span class="no"&gt;Category&lt;/span&gt; &lt;span class="no"&gt;Load&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.3&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="no"&gt;SELECT&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;*&lt;/span&gt; &lt;span class="no"&gt;FROM&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt; &lt;span class="no"&gt;WHERE&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="s2"&gt;"parent_id"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt;  &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="s2"&gt;"parent_id"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;span class="no"&gt;Category&lt;/span&gt; &lt;span class="no"&gt;Load&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.3&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="no"&gt;SELECT&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;*&lt;/span&gt; &lt;span class="no"&gt;FROM&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt; &lt;span class="no"&gt;WHERE&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="s2"&gt;"parent_id"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt;  &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="s2"&gt;"parent_id"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;span class="no"&gt;Category&lt;/span&gt; &lt;span class="no"&gt;Load&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="no"&gt;SELECT&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;*&lt;/span&gt; &lt;span class="no"&gt;FROM&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt; &lt;span class="no"&gt;WHERE&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="s2"&gt;"parent_id"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt;  &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="s2"&gt;"parent_id"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;span class="no"&gt;Category&lt;/span&gt; &lt;span class="no"&gt;Load&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.2&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="no"&gt;SELECT&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;*&lt;/span&gt; &lt;span class="no"&gt;FROM&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt; &lt;span class="no"&gt;WHERE&lt;/span&gt; &lt;span class="s2"&gt;"categories"&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="s2"&gt;"parent_id"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt;  &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="s2"&gt;"parent_id"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;发现会为子分类再查询一遍子分类，控制台返回的 SQL 语句从第 2 行之后，都是无用的。&lt;/p&gt;

&lt;p&gt;另外数据是要最终渲染成 API 提供的 json 数据。&lt;/p&gt;

&lt;p&gt;哪位同学有好的解决办法？&lt;/p&gt;</description>
      <author>bindiry</author>
      <pubDate>Thu, 16 Jul 2015 16:06:09 +0800</pubDate>
      <link>https://ruby-china.org/topics/26523</link>
      <guid>https://ruby-china.org/topics/26523</guid>
    </item>
    <item>
      <title>Mongoid 怎样做关联查询？</title>
      <description>&lt;p&gt;例如我有两张表：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;brands 和 devices&lt;/li&gt;
&lt;li&gt;brand has_many devices&lt;/li&gt;
&lt;li&gt;devices belongs_to brand&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;我想在一个页面列出所有 brands，以及每个 brand 下面的 devices。&lt;/p&gt;

&lt;p&gt;我现在的做法是先 &lt;a href="/brands" class="user-mention" title="@brands"&gt;&lt;i&gt;@&lt;/i&gt;brands&lt;/a&gt; = Brand.all，然后通过循环取每个 brand 下面的 devices，就像下面这样：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@brands.each do |brand|
  brand.devices.each do |device|
    do something...
  end
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是看日志，每次 brand.devices.each 都会再去查询一次。&lt;/p&gt;

&lt;p&gt;想请教一下，怎样做到关联查询，一次性把 brands 及下面的 devices 一起按结构层级取出来？  &lt;/p&gt;</description>
      <author>bindiry</author>
      <pubDate>Thu, 09 Feb 2012 00:50:51 +0800</pubDate>
      <link>https://ruby-china.org/topics/1091</link>
      <guid>https://ruby-china.org/topics/1091</guid>
    </item>
    <item>
      <title>有没有人用过 webfaction？来做放 Rails 应用如何？</title>
      <description>&lt;p&gt;&lt;a href="http://www.webfaction.com/" rel="nofollow" target="_blank"&gt;http://www.webfaction.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;这个虚拟主机商支持的语言挺全面，现在还有$53/年的优惠，但不知道稳不稳定，国内访问快不快。  &lt;/p&gt;</description>
      <author>bindiry</author>
      <pubDate>Tue, 07 Feb 2012 18:15:26 +0800</pubDate>
      <link>https://ruby-china.org/topics/1074</link>
      <guid>https://ruby-china.org/topics/1074</guid>
    </item>
    <item>
      <title>ubuntu 安装 ruby1.9.3 出现 Error running 'autoreconf -is --force'</title>
      <description>&lt;p&gt;安装 ruby1.9.3 之前，我先用 rvm 安装 Readline/ IConv / Zlib / OpenSSL / Autoconf&lt;/p&gt;

&lt;p&gt;安装到 readline 和 iconv 的时候，总是有以下错误提示（加粗部分是错误），我确定我安装了 autoconf，也安装了 libreadline-dev：&lt;/p&gt;

&lt;p&gt;root@ubuntu-server:~# rvm pkg install readline
Fetching readline-5.2.tar.gz to /usr/local/rvm/archives
Extracting readline-5.2.tar.gz to /usr/local/rvm/src
Applying patch '/usr/local/rvm/patches/readline-5.2/shobj-conf.patch'...
Prepare readline in /usr/local/rvm/src/readline-5.2.
&lt;strong&gt;Error running 'autoreconf -is --force', please read /usr/local/rvm/log/readline/autoreconf.log&lt;/strong&gt;
Configuring readline in /usr/local/rvm/src/readline-5.2.
Compiling readline in /usr/local/rvm/src/readline-5.2.
Installing readline to /usr/local/rvm/usr
Fetching readline-6.2.tar.gz to /usr/local/rvm/archives
Extracting readline-6.2.tar.gz to /usr/local/rvm/src
Applying patch '/usr/local/rvm/patches/readline-6.2/patch-shobj-conf.diff'...
Prepare readline in /usr/local/rvm/src/readline-6.2.
&lt;strong&gt;Error running 'autoreconf -is --force', please read /usr/local/rvm/log/readline/autoreconf.log&lt;/strong&gt;
Configuring readline in /usr/local/rvm/src/readline-6.2.
Compiling readline in /usr/local/rvm/src/readline-6.2.
Installing readline to /usr/local/rvm/usr&lt;/p&gt;</description>
      <author>bindiry</author>
      <pubDate>Wed, 01 Feb 2012 12:03:55 +0800</pubDate>
      <link>https://ruby-china.org/topics/996</link>
      <guid>https://ruby-china.org/topics/996</guid>
    </item>
    <item>
      <title>怎样获取一个文件的 MIME 类型？</title>
      <description>&lt;p&gt;我安装了 mime-types 这个 gem 后，一些常用的文件类型可以通过
&lt;code&gt;MIME::Types.type_for("filename")&lt;/code&gt;
来获取 MIME 类型。&lt;/p&gt;

&lt;p&gt;但有一些比较少见的文件类型就无法获得，比如：.g2nua&lt;/p&gt;

&lt;p&gt;请教有没有其它的方法？&lt;/p&gt;

&lt;p&gt;我的最终目的是用 file_field 的参数:accept 来过滤上传的文件类型。&lt;/p&gt;

&lt;p&gt;让上传文件的对话框里，只允许上传扩展名为.g2nua 的文件（就是文件类型下拉框里只有 .g2nua 文件可供选择，没有“所有文件”这一项）  &lt;/p&gt;</description>
      <author>bindiry</author>
      <pubDate>Thu, 26 Jan 2012 15:58:38 +0800</pubDate>
      <link>https://ruby-china.org/topics/946</link>
      <guid>https://ruby-china.org/topics/946</guid>
    </item>
    <item>
      <title>升级到 rails3.2.0 后，显示 DEPRECATION WARNING</title>
      <description>&lt;p&gt;升级到 rails 3.2.0 后，rails server 后，显示
&lt;code&gt;DEPRECATION WARNING: ActiveSupport::Memoizable is deprecated and will be removed in future releases,simply use Ruby memoization pattern instead. (called from &amp;lt;top (required)&amp;gt; at /var/workspace/yinse/config/application.rb:12)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;google 了一下，没搞明白 Ruby memoization 是个啥东东，
请教同学们这个问题应该怎样解决？&lt;/p&gt;

&lt;p&gt;application.rb 12 行的内容，对比了一下，和用 rails3.2.0 新建一个项目一样&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bundler.require(*Rails.groups(:assets =&amp;gt; %w(development test)))
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>bindiry</author>
      <pubDate>Sat, 21 Jan 2012 13:11:25 +0800</pubDate>
      <link>https://ruby-china.org/topics/925</link>
      <guid>https://ruby-china.org/topics/925</guid>
    </item>
    <item>
      <title>carrierwave+gridfs 怎样实现强制下载？</title>
      <description>&lt;p&gt;我用如下代码，想实现强制下载，但总是报错：
&lt;code&gt;Cannot read file /uploads/video/4f03eae211aa2b21b1000fa5/aaa.mp4&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;view:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%= link_to "下载", { :action =&amp;gt; "download", :id =&amp;gt; @video.id } %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;controller:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def download
  @video = Video.find(params[:id])
  if @video.blank?
    render_404
  end
  @video.download = @video.download + 1
  @video.save
  send_file @video.file_url, :type =&amp;gt; 'application/octet-stream', :disposition =&amp;gt; 'inline'
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;而直接在 view 里&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%= link_to "下载", @video.file_url %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;是可以访问的。
请教同学们，问题出在哪儿呢？  &lt;/p&gt;</description>
      <author>bindiry</author>
      <pubDate>Fri, 20 Jan 2012 15:19:09 +0800</pubDate>
      <link>https://ruby-china.org/topics/915</link>
      <guid>https://ruby-china.org/topics/915</guid>
    </item>
    <item>
      <title>请教用 sublime text 2 的同学，有什么方法快捷输入&lt;%= %&gt;</title>
      <description>&lt;p&gt;就像 textmate 一样，在 html(rails) 中，输入&amp;lt;%后，自动补全 = %&amp;gt;，并且光标在=号后面  &lt;/p&gt;</description>
      <author>bindiry</author>
      <pubDate>Wed, 11 Jan 2012 14:42:17 +0800</pubDate>
      <link>https://ruby-china.org/topics/813</link>
      <guid>https://ruby-china.org/topics/813</guid>
    </item>
    <item>
      <title>关于用 carrierwave 上传文件到 GridFS 中，获取文件大小的问题</title>
      <description>&lt;p&gt;我用 carrierwave 实现上传文件到 GridFS 中，通过页面中调用 model.file_url 来获取文件 url 并下载。&lt;/p&gt;

&lt;p&gt;想请教，怎样来获取 GridFS 中文件的大小？  &lt;/p&gt;</description>
      <author>bindiry</author>
      <pubDate>Mon, 26 Dec 2011 15:51:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/601</link>
      <guid>https://ruby-china.org/topics/601</guid>
    </item>
    <item>
      <title>mongofiles 怎么来清空 GridFS 中的文件？</title>
      <description>&lt;p&gt;现在只知道用 mongofiles delete 文件名 的方式来删除 GridFS 中文件&lt;/p&gt;

&lt;p&gt;想清空文件没有找到相关方法，哪个朋友知道？&lt;/p&gt;

&lt;p&gt;或得有别的工具？  &lt;/p&gt;</description>
      <author>bindiry</author>
      <pubDate>Thu, 22 Dec 2011 14:25:28 +0800</pubDate>
      <link>https://ruby-china.org/topics/558</link>
      <guid>https://ruby-china.org/topics/558</guid>
    </item>
    <item>
      <title>Rails API Search for Chrome</title>
      <description>&lt;p&gt;地址： &lt;a href="https://chrome.google.com/webstore/detail/gkofcakhknfolcmdjbmpcpedpkkbochf" rel="nofollow" target="_blank"&gt;https://chrome.google.com/webstore/detail/gkofcakhknfolcmdjbmpcpedpkkbochf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;使用方法：在地址伴输入 rails+ 空格 即可开始搜索了。&lt;/p&gt;

&lt;p&gt;截图：&lt;img src="//l.ruby-china.com/photo/9f6add27b9665198befec53c1a56fbcc.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>bindiry</author>
      <pubDate>Wed, 14 Dec 2011 14:19:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/484</link>
      <guid>https://ruby-china.org/topics/484</guid>
    </item>
  </channel>
</rss>
