<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>robot_zhang (黑暗人魔)</title>
    <link>https://ruby-china.org/robot_zhang</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>网站被恶意访问的解决方案？</title>
      <description>&lt;p&gt;有很多的 IP 访问我网站的注册页，明显是恶意访问，但是没达到 DDOS 攻击的级别，有什么办法可以防止这些恶意访问？IP table 一个一个加不大现实&lt;/p&gt;</description>
      <author>robot_zhang</author>
      <pubDate>Mon, 22 Feb 2016 12:29:59 +0800</pubDate>
      <link>https://ruby-china.org/topics/29047</link>
      <guid>https://ruby-china.org/topics/29047</guid>
    </item>
    <item>
      <title>Errno::EMFILE (Too many open files) 错误的问题</title>
      <description>&lt;p&gt;服务器最近总是会不定时出现这个错误：
&lt;code&gt;Errno::EMFILE (Too many open files @ rb_sysopen -&lt;/code&gt;
初步感觉是不是 linux 的最大文件数的问题，通过 &lt;code&gt;ulimit -n&lt;/code&gt; 显示 &lt;code&gt;65535&lt;/code&gt; 没有问题。
服务器用的是 PUMA 大家有遇到过这种问题吗？提供点排查调试的思考，目前陷于无头绪中。&lt;/p&gt;</description>
      <author>robot_zhang</author>
      <pubDate>Thu, 03 Sep 2015 18:25:49 +0800</pubDate>
      <link>https://ruby-china.org/topics/27183</link>
      <guid>https://ruby-china.org/topics/27183</guid>
    </item>
    <item>
      <title>Circular dependency 的问题</title>
      <description>&lt;p&gt;大家有遇到过循环依赖的问题吗？&lt;/p&gt;

&lt;p&gt;启动服务器之后（webrick 能顺利启动）后端会出现一行 warning&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="ss"&gt;warning: &lt;/span&gt;&lt;span class="n"&gt;toplevel&lt;/span&gt; &lt;span class="n"&gt;constant&lt;/span&gt; &lt;span class="no"&gt;Account&lt;/span&gt; &lt;span class="n"&gt;referenced&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="no"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Account&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;和 RuntimeError&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;RuntimeError&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Circular&lt;/span&gt; &lt;span class="n"&gt;dependency&lt;/span&gt; &lt;span class="n"&gt;detected&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;autoloading&lt;/span&gt; &lt;span class="n"&gt;constant&lt;/span&gt; &lt;span class="no"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Account&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;CustomersHelper&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;分析下来 rails load  &lt;code&gt;Shop::Account::CustomersHelper&lt;/code&gt; 的时候会去加载 &lt;code&gt;Shop::Account&lt;/code&gt; 而 &lt;code&gt;Shop::Account&lt;/code&gt; 中又重新加载了 &lt;code&gt;CustomersHelper&lt;/code&gt; 导致的，但是我没有找到异常的代码，所以现在没有找到头绪，我想问大家如何能够看到 rails 的 class &amp;amp; module 的加载顺序和记录以便找到最终问题出现在那个地方？&lt;/p&gt;</description>
      <author>robot_zhang</author>
      <pubDate>Mon, 17 Aug 2015 14:30:37 +0800</pubDate>
      <link>https://ruby-china.org/topics/26956</link>
      <guid>https://ruby-china.org/topics/26956</guid>
    </item>
    <item>
      <title>sidekiq 发邮件的诡异问题</title>
      <description>&lt;p&gt;配置好 sidekiq 之后发送邮件一直提示错误：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Net&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;SMTPSyntaxError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;501&lt;/span&gt; &lt;span class="n"&gt;mail&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="n"&gt;must&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;same&lt;/span&gt; &lt;span class="n"&gt;as&lt;/span&gt; &lt;span class="n"&gt;authorization&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;按字面意思，邮件的 from 地址和 smtp 的 user name 不一致导致的，但是显然，配置中是一致的。在 rails c 中测试 deliver 邮件又能够准确发送。大家有遇到过这种问题吗？&lt;/p&gt;

&lt;p&gt;UPDATE:&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;我更换了发信 smtp 账号之后用 sidekiq 可以顺利发送出去了，不过非常奇怪的是：
2个 smtp 都是腾讯的企业邮箱账号，当然也排除了密码输入的的错误，然而有一个账号能发，另一个总是出现 501 的问题。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ps. mailgun 目前的服务基本不能用，不是 550 就是进垃圾箱&lt;/p&gt;</description>
      <author>robot_zhang</author>
      <pubDate>Wed, 10 Dec 2014 20:51:38 +0800</pubDate>
      <link>https://ruby-china.org/topics/23129</link>
      <guid>https://ruby-china.org/topics/23129</guid>
    </item>
    <item>
      <title>product ? product.title : "-" 能不能更简洁</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;product&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;product&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;title&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"-"&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="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;product&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt;  &lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;title&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当然是不行的因为 string 没有 title 方法。
最后要么沿用第一种写法，要么在 helper 中定义一个 function，然后调用&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;product_title&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;product_title&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>robot_zhang</author>
      <pubDate>Tue, 14 Oct 2014 00:10:36 +0800</pubDate>
      <link>https://ruby-china.org/topics/22020</link>
      <guid>https://ruby-china.org/topics/22020</guid>
    </item>
    <item>
      <title>rails 删除 model 文件及其相关的文件</title>
      <description>&lt;p&gt;如题，有的时候会觉得某个 model 不需要了，想要删除掉，但是相关的文件需要一个目录一个目录找文件去删除，有没有快捷的办法？类似还有 controller 也是一致的。&lt;/p&gt;</description>
      <author>robot_zhang</author>
      <pubDate>Mon, 22 Jul 2013 18:26:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/12681</link>
      <guid>https://ruby-china.org/topics/12681</guid>
    </item>
    <item>
      <title>一个重构代码的问题</title>
      <description>&lt;p&gt;例如现有的代码如下：&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;Product&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;attr_accessible&lt;/span&gt; &lt;span class="ss"&gt;:name&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后在很多的 views 中都使用了 product.name，某个时间，要对 name 进行统一的格式化，方案如下：
1.在 Product 中做一个额外的方法
2.在 helper 中做一个额外的方法
等等，但是 views 中的改动量都是巨大，非常别扭，有没有办法直接 hack Product 的 name 方法？&lt;/p&gt;</description>
      <author>robot_zhang</author>
      <pubDate>Fri, 17 May 2013 11:30:25 +0800</pubDate>
      <link>https://ruby-china.org/topics/11056</link>
      <guid>https://ruby-china.org/topics/11056</guid>
    </item>
  </channel>
</rss>
