<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>cdredfox (Yang Fei)</title>
    <link>https://ruby-china.org/cdredfox</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>还有类似 Copycopter 这样的服务在线的吗？</title>
      <description>&lt;p&gt;最近在做一个东西，需要动态的发布一些内容，比如公告，比如标题之类的，但是又不想增加这块的后台管理功能，所以想问一下，目前线上还有类似 Copycopter 这样的服务吗？可以直接通过 API 获取到内容，而且也有后台进行维护的？&lt;/p&gt;

&lt;p&gt;不要说自已布署一个 Copycopter，其实我想找一下有没有类似这样的在线服务？如果真没有，只能自已写了。&lt;/p&gt;

&lt;p&gt;谢谢大家！&lt;/p&gt;</description>
      <author>cdredfox</author>
      <pubDate>Mon, 05 Aug 2013 12:43:27 +0800</pubDate>
      <link>https://ruby-china.org/topics/13053</link>
      <guid>https://ruby-china.org/topics/13053</guid>
    </item>
    <item>
      <title>请教一个关于 daemon-spawn 的问题</title>
      <description>&lt;p&gt;我使用 daemon-spawn 来新建了一个后台任务，但是我这个后台任务有调用到我本身 rails 项目里面的一些依赖类，比如 Rails.root，比如某个 model 类，如果我现在按着官方的文 档，直接运行的话，会说找不到这些类，请问这个方式下需要怎么才能做到呢？&lt;/p&gt;

&lt;p&gt;另外：是否有其它的更好的 gem 来实现？&lt;/p&gt;

&lt;p&gt;我的需求是这样的：&lt;/p&gt;

&lt;p&gt;我在程序启动的时候，需要启动一个类，但是这个类是一至在运行着，和服务器建立了一个长连接，来监听一些消息之类的东西。如果我直接在启动的时候，调这个类的话，服务器就起不起来了。&lt;/p&gt;

&lt;p&gt;谢谢大家。&lt;/p&gt;</description>
      <author>cdredfox</author>
      <pubDate>Tue, 11 Jun 2013 16:55:39 +0800</pubDate>
      <link>https://ruby-china.org/topics/11651</link>
      <guid>https://ruby-china.org/topics/11651</guid>
    </item>
    <item>
      <title>omniauth 登录报 SSL 错误？</title>
      <description>&lt;p&gt;准备写个 omniauth 的 taobao 登录 gem，但是我在 callback 阶段总是出现这样的错误：&lt;/p&gt;

&lt;p&gt;SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed&lt;/p&gt;

&lt;p&gt;大家有碰到过这样的情况吗？&lt;/p&gt;

&lt;p&gt;网上 google 了一大把，说需要证书？&lt;/p&gt;</description>
      <author>cdredfox</author>
      <pubDate>Tue, 05 Mar 2013 14:58:27 +0800</pubDate>
      <link>https://ruby-china.org/topics/9139</link>
      <guid>https://ruby-china.org/topics/9139</guid>
    </item>
    <item>
      <title>关于 Net::HTTP.get_response 请求时 Broken pipe 这个异常，大家怎么解决的？</title>
      <description>&lt;p&gt;我在使用 Net::HTTP.get_response 请求一个网址时，上于我需要传一些参数，正常情况下都是 ok 的，但是如果我要传送一个图片，对方给出的要求是将图片转换成 byte[] 数组后，再通过 http 请求传输过来。但我在 ruby 中使用 Net::HTTP.get_response 的时候，传递这个大的 byte 数组的时候，就会报 Broken pipe，大家以前碰到过类似的问题吗？有什么解决方案吗？&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;#读取图片，并转换成byte数组 &lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;read_image&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image_url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="n"&gt;uri&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;URI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image_url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;    
   &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Net&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;HTTP&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;bytes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_a&lt;/span&gt;
 &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;请求的代码片段，param_map 中放了那个图片流数组&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;uri&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;URI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'http://gw.api.taobao.com/router/rest'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;query&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;URI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode_www_form&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;param_map&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Net&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;HTTP&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;</description>
      <author>cdredfox</author>
      <pubDate>Sat, 03 Nov 2012 12:03:03 +0800</pubDate>
      <link>https://ruby-china.org/topics/6495</link>
      <guid>https://ruby-china.org/topics/6495</guid>
    </item>
    <item>
      <title>请教一个 nginx 配置新手问题</title>
      <description>&lt;p&gt;问题是这样的：&lt;/p&gt;

&lt;p&gt;我有一个域名：abc.com
我有一个网站只有二级域名：abc.demo.com
我对 abc.demo.com 的配置没有权限改，你可以想象成共享空间那样的。abc.demo.com 不支持绑定域名。即不对持 cname 之类的&lt;/p&gt;

&lt;p&gt;我现在想把 abc.com 这个域名指向到 abc.demo.com 这个网站上。达到和 cname 一样的效果，不是做域名跳转，于是我采用 nginx 反向代理的方式来实现。&lt;/p&gt;

&lt;p&gt;我现在找了一台机器，在这个机器上安装了 nginx,nginx 配置如下：&lt;/p&gt;

&lt;p&gt;server
        {
                listen          80;
                server_name     abc.com;
                location / {
                        proxy_pass              &lt;a href="http://abc.demo.com/" rel="nofollow" target="_blank"&gt;http://abc.demo.com/&lt;/a&gt;;
                        proxy_redirect          off;
                        proxy_set_header        X-Real-IP       $remote_addr;
                         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                }
        }&lt;/p&gt;

&lt;p&gt;但是不知道为什么，我访问 Abc.com 这个域名是不能够反向代理到 abc.demo.com 这个网站上，报 404 错误，请问一下大家，我这个配置什么地方有错吗？谢谢了。&lt;/p&gt;</description>
      <author>cdredfox</author>
      <pubDate>Wed, 24 Oct 2012 13:20:16 +0800</pubDate>
      <link>https://ruby-china.org/topics/6291</link>
      <guid>https://ruby-china.org/topics/6291</guid>
    </item>
    <item>
      <title>devise 生成的密码可逆吗？</title>
      <description>&lt;p&gt;想请教一下各位大牛，devise 生成的密码可逆吗？
主要原因是我之前有个站，有一些注册用户，现在需要迁移到另一个站上去，但是两者采用的密码加密方式是不一样的，怕以想做数据迁移，但是不知道这个密码是否可逆呢？重新加密。谢谢各位了。&lt;/p&gt;</description>
      <author>cdredfox</author>
      <pubDate>Mon, 22 Oct 2012 14:23:26 +0800</pubDate>
      <link>https://ruby-china.org/topics/6236</link>
      <guid>https://ruby-china.org/topics/6236</guid>
    </item>
    <item>
      <title>OmniAuth 的插件如果不是以 gem 的方式存在，因该放到哪个目录下？</title>
      <description>&lt;p&gt;Hi,all&lt;/p&gt;

&lt;p&gt;由于我目前想用 OmniAuth 集成一个登录，但是开发阶段，我先不想做成 Gem 的方式，而是想放到我自已的项目下面，请问该放到哪个目录下面呢？&lt;/p&gt;

&lt;p&gt;我目前放到 vendor 这个目录下：
    结构如下：
     vendor/omniauth_taobao/lib/omniauth_taobao.rb
     vendor/omniauth_taobao/lib/omniauth_taobao
     vendor/omniauth_taobao/lib/omniauth&lt;/p&gt;

&lt;p&gt;谢谢大家～&lt;/p&gt;</description>
      <author>cdredfox</author>
      <pubDate>Mon, 17 Sep 2012 20:22:42 +0800</pubDate>
      <link>https://ruby-china.org/topics/5592</link>
      <guid>https://ruby-china.org/topics/5592</guid>
    </item>
    <item>
      <title>simple_form 报 undefined method `merchants_path' for #&lt;#&lt;Class:0x007f9740c9c348&gt;:0x007f973df44d78&gt;错误</title>
      <description>&lt;p&gt;hi,&lt;/p&gt;

&lt;p&gt;我在使用 simple_form 过程中，我就建了一个最简单的表格，查是报了标题上的错，不知道为什么？&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%= simple_form_for @merchant do |f| %&amp;gt;
  &amp;lt;%= f.input :name%&amp;gt;
&amp;lt;%end%&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我在页面中一运行就报：
undefined method `merchants_path' for #&amp;lt;#&lt;a rel="nofollow" target="_blank"&gt;Class:0x007f9740c9c348&lt;/a&gt;:0x007f973df44d78&amp;gt;
这个错误，有人碰到过吗？谢谢！&lt;/p&gt;</description>
      <author>cdredfox</author>
      <pubDate>Thu, 13 Sep 2012 23:49:49 +0800</pubDate>
      <link>https://ruby-china.org/topics/5537</link>
      <guid>https://ruby-china.org/topics/5537</guid>
    </item>
    <item>
      <title>有没有 ruby 写的类似于 phpmyadmin 这样的程序</title>
      <description>&lt;p&gt;RT&lt;/p&gt;</description>
      <author>cdredfox</author>
      <pubDate>Sun, 02 Sep 2012 11:27:05 +0800</pubDate>
      <link>https://ruby-china.org/topics/5313</link>
      <guid>https://ruby-china.org/topics/5313</guid>
    </item>
    <item>
      <title>HMAC-SHA256 方式加密的字符串，如何解密呢？</title>
      <description>&lt;p&gt;HMAC-SHA256 方式加密的字符串，如何解密呢？
非常谢谢大家&lt;/p&gt;</description>
      <author>cdredfox</author>
      <pubDate>Tue, 28 Aug 2012 17:06:28 +0800</pubDate>
      <link>https://ruby-china.org/topics/5209</link>
      <guid>https://ruby-china.org/topics/5209</guid>
    </item>
    <item>
      <title>关于 require_self，求扫盲</title>
      <description>&lt;p&gt;谁能帮忙解说一下 require_self 的含义？
我之前一至理解的是，比如我有二个页面叫 test.html.erb,test1.html.erb 有个 layout 叫 application.html.erb。那么如果我在 application.css.scss 中如果加入 require_self 之后，我在执行 test.html.erb 时，就会加载对应的 test.css.scss.我在访问 test1.html.erb 时，就加载 test1.css.scss。
不过我今天试了一下，貌似不是这样的。加了 require_self 之后，并不会加入对应的 css.scss.&lt;/p&gt;

&lt;p&gt;求扫盲～  &lt;/p&gt;</description>
      <author>cdredfox</author>
      <pubDate>Mon, 09 Jul 2012 23:05:14 +0800</pubDate>
      <link>https://ruby-china.org/topics/4214</link>
      <guid>https://ruby-china.org/topics/4214</guid>
    </item>
    <item>
      <title>关于 string 的 delete 方法的一个疑问？</title>
      <description>&lt;p&gt;我使用&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;abcdefgabcdefgaaaaa&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"abcd"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;他实际上不仅仅只是删除了“abcd”这个字符中，而是删除了所有的 a,b,c,d 这四个字符串？&lt;/p&gt;

&lt;p&gt;请问我仅仅是需要删除字符串，这个需要怎么写？查了一下文档，没查到？  &lt;/p&gt;</description>
      <author>cdredfox</author>
      <pubDate>Tue, 03 Jul 2012 12:13:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/4100</link>
      <guid>https://ruby-china.org/topics/4100</guid>
    </item>
    <item>
      <title>Net::HTTP.post_form 如何读取长连接的数据？</title>
      <description>&lt;p&gt;问题是这样的：&lt;/p&gt;

&lt;p&gt;对方网站提供了一个长连接，我通过 Net::HTTP.post_form 提交请求到长连接的地址，会和服务器建立一个长连接，可以不停的从这个长连接中读取一些数据。（对方要求以 post 请求提交)
我目前通过 Net::HTTP.post_form 这种方式提交，在提交后，就一至卡在哪儿，然后等了一段时间后，就直接报错了：
Errno::ETIMEDOUT: Operation timed out - connect(2)&lt;/p&gt;

&lt;p&gt;我想请求一下，对于这种长连接取值的方式，是否可以使用 Net::HTTP.post_form 提交请求？或者 Ruby 中有其它的解决方式？&lt;/p&gt;

&lt;p&gt;非常谢谢～！  &lt;/p&gt;</description>
      <author>cdredfox</author>
      <pubDate>Thu, 21 Jun 2012 22:45:39 +0800</pubDate>
      <link>https://ruby-china.org/topics/3930</link>
      <guid>https://ruby-china.org/topics/3930</guid>
    </item>
    <item>
      <title>OmniAuth 能否跳过 token 阶段 (不执行获取 token 阶段)</title>
      <description>&lt;p&gt;Hi,&lt;/p&gt;

&lt;p&gt;想咨询一下，关于 OmniAuth 能否跳过获取 token 阶段？
主要是因为目前正在写一个淘宝客网站登录淘宝的登录 gem，国内一些使用 OmniAuth 的公司，不按常理出牌，部分服务的登录方式，根据不需要换取令牌，所以想咨询一下，能否手工设置跳过获取 token 阶段？&lt;/p&gt;

&lt;p&gt;他们的文档如下：
&lt;a href="http://open.taobao.com/doc/detail.htm?id=974" rel="nofollow" target="_blank"&gt;http://open.taobao.com/doc/detail.htm?id=974&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;我的代码如下：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'omniauth/strategies/oauth2'&lt;/span&gt;
&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;OmniAuth&lt;/span&gt;
  &lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;Strategies&lt;/span&gt;
    &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Taobaoke&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;OmniAuth&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Strategies&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;OAuth2&lt;/span&gt;
      &lt;span class="n"&gt;option&lt;/span&gt; &lt;span class="ss"&gt;:name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"taobaoke"&lt;/span&gt;

      &lt;span class="n"&gt;option&lt;/span&gt; &lt;span class="ss"&gt;:client_options&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="ss"&gt;:site&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'https://oauth.taobao.com/'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="ss"&gt;:authorize_url&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'/authorize'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="c1"&gt;#:token_url =&amp;gt; "/token"&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;

      &lt;span class="n"&gt;option&lt;/span&gt; &lt;span class="ss"&gt;:authorize_params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="ss"&gt;:response_type&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'user'&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;

      &lt;span class="n"&gt;info&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; 
        &lt;span class="p"&gt;{&lt;/span&gt; 
          &lt;span class="ss"&gt;:nickname&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;raw_info&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'nick'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;

      &lt;span class="n"&gt;extra&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="c1"&gt;#:raw_info =&amp;gt; raw_info&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;def&lt;/span&gt; &lt;span class="nf"&gt;raw_info&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;end&lt;/span&gt;

&lt;span class="no"&gt;OmniAuth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_camelization&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'taobaoke'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Taobaoke'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>cdredfox</author>
      <pubDate>Wed, 20 Jun 2012 13:26:38 +0800</pubDate>
      <link>https://ruby-china.org/topics/3901</link>
      <guid>https://ruby-china.org/topics/3901</guid>
    </item>
    <item>
      <title>layout 可以嵌套吗？</title>
      <description>&lt;p&gt;比如我有一个 layout 叫 appliction.html.erb，基于这个 layout，我还有个 layout 是需要继承 appliction.html.erb 这个 layout 的。
想问一下，类似这样的情况是否能够实现？
除了把 appliction.html.erb 里面的代码再复制一次以外。  &lt;/p&gt;</description>
      <author>cdredfox</author>
      <pubDate>Tue, 29 May 2012 10:31:32 +0800</pubDate>
      <link>https://ruby-china.org/topics/3538</link>
      <guid>https://ruby-china.org/topics/3538</guid>
    </item>
    <item>
      <title>@huacnlee 咨询一下关于酷站提交的规则？</title>
      <description>&lt;p&gt;Hi,&lt;a href="/huacnlee" class="user-mention" title="@huacnlee"&gt;&lt;i&gt;@&lt;/i&gt;huacnlee&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;我想咨询一下
  之前在酷站里面提交的用 rails 做的网站折扣街 (&lt;a href="http://zhekoujie.cloudfoundry.com" rel="nofollow" target="_blank"&gt;http://zhekoujie.cloudfoundry.com&lt;/a&gt;) ,不知道就怎么删除了？我想确认一下，是有什么要求吗？或者是违反了什么规定？我看提交页面上没有说明什么站不能提交什么站能提交？如果因为是网站类型不合适的话，我看上面有一个还珠格格 也是和我同类型 的？谢谢～  &lt;/p&gt;</description>
      <author>cdredfox</author>
      <pubDate>Sat, 12 May 2012 09:55:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/3227</link>
      <guid>https://ruby-china.org/topics/3227</guid>
    </item>
    <item>
      <title>devise wiki 写的有 bug?</title>
      <description>&lt;p&gt;&lt;a href="https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address" rel="nofollow" target="_blank"&gt;https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;这个 wiki，启用用户名和邮箱混合登录，如果只是启用登录，不做重置密码的部分，则进入重置页面后，点击重置会报错。如果按 wifi 重置也启用用户名和密码都可以。则得到 reset_token 之后，点击过来保存的时候，会报错。&lt;/p&gt;

&lt;p&gt;主要原因是要求重写下面的方法：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&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;find_first_by_auth_conditions&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;warden_conditions&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;conditions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;warden_conditions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dup&lt;/span&gt;
  &lt;span class="n"&gt;login&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;conditions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:login&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;downcase&lt;/span&gt;
  &lt;span class="n"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;conditions&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="s2"&gt;"lower(username) = :value OR lower(email) = :value"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="ss"&gt;:value&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;login&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;downcase&lt;/span&gt; &lt;span class="p"&gt;}]).&lt;/span&gt;&lt;span class="nf"&gt;first&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是搞不懂为什么 reset_token 提交的时候，也会调用这个里，因为页面上没有:login 所以报错。请问大家有碰到过吗？  &lt;/p&gt;</description>
      <author>cdredfox</author>
      <pubDate>Mon, 30 Apr 2012 19:06:04 +0800</pubDate>
      <link>https://ruby-china.org/topics/2997</link>
      <guid>https://ruby-china.org/topics/2997</guid>
    </item>
    <item>
      <title>关于 rails 中的异步任务</title>
      <description>&lt;p&gt;rails3 中执行异步任务，一般都选用 Resque 和 Delayed_job.这两个 gem 也确实很强大。
但是他们都需要在终端上执行一些命令来启动任务才行，而不能在程序中自动启动。
这样就会有一个问题，在一些 PAAS 平台上，比如 hrekou,cloudfoundry.org 上，是没有方式在终端上执行命令的，请问这个情况下，有什么好的 gem 做异步的任务吗？  &lt;/p&gt;</description>
      <author>cdredfox</author>
      <pubDate>Mon, 30 Apr 2012 14:13:53 +0800</pubDate>
      <link>https://ruby-china.org/topics/2991</link>
      <guid>https://ruby-china.org/topics/2991</guid>
    </item>
    <item>
      <title>devise 生成的 model 是否不能手工创建？</title>
      <description>&lt;p&gt;之前碰到一个问题，一至以为是程序的写法有问题，详见：&lt;a href="http://ruby-china.org/topics/2977" rel="nofollow" target="_blank"&gt;http://ruby-china.org/topics/2977&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;后来经过几次排查，猜测可能是因为 devise 引起的，于是我新建了一个 devise 的工程，一试，果然有问题。&lt;/p&gt;

&lt;p&gt;问题主要如下：devise 生成的 model 是否不能通过手工创建呢？
我是新建的工程，没有做任何发动，只是增加了 devise 的 gem 在控制台输入如下命令：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt; &lt;span class="mf"&gt;1.9&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;p290&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;005&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&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="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="c1"&gt;#&amp;lt;User id: nil, email: "", encrypted_password: "", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: nil, updated_at: nil&amp;gt; &lt;/span&gt;
&lt;span class="mf"&gt;1.9&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;p290&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;006&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;email&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'test@test.com'&lt;/span&gt;
 &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"test@test.com"&lt;/span&gt; 
&lt;span class="mf"&gt;1.9&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;p290&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;007&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;
   &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="k"&gt;begin&lt;/span&gt; &lt;span class="n"&gt;transaction&lt;/span&gt;
  &lt;span class="no"&gt;User&lt;/span&gt; &lt;span class="no"&gt;Exists&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.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="mi"&gt;1&lt;/span&gt; &lt;span class="no"&gt;FROM&lt;/span&gt; &lt;span class="s2"&gt;"users"&lt;/span&gt; &lt;span class="no"&gt;WHERE&lt;/span&gt; &lt;span class="s2"&gt;"users"&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="s2"&gt;"email"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'test@test.com'&lt;/span&gt; &lt;span class="no"&gt;LIMIT&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
   &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="n"&gt;rollback&lt;/span&gt; &lt;span class="n"&gt;transaction&lt;/span&gt;
 &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt; 
&lt;span class="mf"&gt;1.9&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;p290&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;00&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以看到，save 的时候，提示记录已存在，但是实际上是没有任何记录的：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="mf"&gt;1.9&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;p290&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;00&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="o"&gt;&amp;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;all&lt;/span&gt;
  &lt;span class="no"&gt;User&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;0.6&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;"users"&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;"users"&lt;/span&gt; 
 &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt; 
&lt;span class="mf"&gt;1.9&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;p290&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;00&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 

&lt;/code&gt;&lt;/pre&gt;</description>
      <author>cdredfox</author>
      <pubDate>Sun, 29 Apr 2012 23:15:20 +0800</pubDate>
      <link>https://ruby-china.org/topics/2987</link>
      <guid>https://ruby-china.org/topics/2987</guid>
    </item>
    <item>
      <title>关于 activerecord 的写法,下面有错吗？</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="vi"&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;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:nick&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s1"&gt;'test'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:email&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s1"&gt;'test@test.com'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;first&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vi"&gt;@user.nil&lt;/span&gt;&lt;span class="p"&gt;?)&lt;/span&gt;
 &lt;span class="vi"&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="vi"&gt;@user.nick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'test'&lt;/span&gt;
 &lt;span class="vi"&gt;@user.email&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'test@test.com'&lt;/span&gt;
 &lt;span class="vi"&gt;@user.save&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样一执行 save 的话，就会报错，说这条记录已存在。但是我很奇怪，数据库里面确是是没有的。&lt;/p&gt;

&lt;p&gt;nick,email 是组合唯一主键  &lt;/p&gt;</description>
      <author>cdredfox</author>
      <pubDate>Sun, 29 Apr 2012 11:09:30 +0800</pubDate>
      <link>https://ruby-china.org/topics/2977</link>
      <guid>https://ruby-china.org/topics/2977</guid>
    </item>
  </channel>
</rss>
