<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>moioo (voken)</title>
    <link>https://ruby-china.org/moioo</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>黄历眼中的情人节</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/cacf9594b46b71b8e33cbb745aafddd1.jpg" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>moioo</author>
      <pubDate>Sat, 14 Feb 2015 11:03:11 +0800</pubDate>
      <link>https://ruby-china.org/topics/24259</link>
      <guid>https://ruby-china.org/topics/24259</guid>
    </item>
    <item>
      <title>请问各位这段时间 Googlebot 能正确访问你们的网站吗？</title>
      <description>&lt;p&gt;这几天总是收到&lt;/p&gt;

&lt;p&gt;在过去 24 小时内，Googlebot 在尝试访问您的 robots.txt 时遇到了 21 个错误。为确保不会抓取该文件中列出的任何网页，我们推迟了抓取操作。您网站的 robots.txt 总体错误率为 100.0%&lt;/p&gt;

&lt;p&gt;主机用的是阿里云。dns 之前用的 dnspod 服务，现在改用阿里云智能 DNS 还是一样，不知大家没有同样的问题。&lt;/p&gt;</description>
      <author>moioo</author>
      <pubDate>Sat, 05 Jul 2014 21:07:56 +0800</pubDate>
      <link>https://ruby-china.org/topics/20335</link>
      <guid>https://ruby-china.org/topics/20335</guid>
    </item>
    <item>
      <title>面向对象编程</title>
      <description>&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/2014/f7c03823759fc4ec0db73d33bf98a3d1.jpg" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>moioo</author>
      <pubDate>Thu, 22 May 2014 15:33:32 +0800</pubDate>
      <link>https://ruby-china.org/topics/19470</link>
      <guid>https://ruby-china.org/topics/19470</guid>
    </item>
    <item>
      <title>capybara fill_in 在 Firefox 29.1 的问题</title>
      <description>&lt;p&gt;今天升级 firefox
写代码再 rspec 结果测试不通过
找了很久原因，发现是升级 firefox 造成的
升级 firefox 到 29.1 后，fill_in 对不对正常填充，其它类型正常。
降级 28.0 后能正常。
又试了 chrome 发现存在同样的问题。
有那位小伙伴也遇到同样的问题？&lt;/p&gt;</description>
      <author>moioo</author>
      <pubDate>Sat, 10 May 2014 19:56:35 +0800</pubDate>
      <link>https://ruby-china.org/topics/19154</link>
      <guid>https://ruby-china.org/topics/19154</guid>
    </item>
    <item>
      <title>Selenium 测试问题</title>
      <description>&lt;p&gt;rspec 功能测试下定单成功后进入打印页，现无法获取打印窗口并取消这个窗口
&lt;img src="//l.ruby-china.com/photo/2014/671e7badbc428a2e3284fa9ccc5a075d.png" title="" alt=""&gt;
我只知道确认对话框取消&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;alert&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;browser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;switch_to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;alert&lt;/span&gt;
&lt;span class="n"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cancel&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个打印窗口 google 一下，没找到方法&lt;/p&gt;</description>
      <author>moioo</author>
      <pubDate>Fri, 09 May 2014 14:54:00 +0800</pubDate>
      <link>https://ruby-china.org/topics/19128</link>
      <guid>https://ruby-china.org/topics/19128</guid>
    </item>
    <item>
      <title>[已解决] 升级到 rails4.1 的困惑 同样的代码 4.1 执行两次</title>
      <description>&lt;p&gt;rails4.1 发布了，手痒升到 4.1 再 rspec 报错，折腾 1 个多小时没找到原因
student.rb&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;before_create&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;rno&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;generate_rno&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;pinyin_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Pinyin&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;t&lt;/span&gt;&lt;span class="p"&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;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:splitter&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&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;before_update&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;pinyin_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Pinyin&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;t&lt;/span&gt;&lt;span class="p"&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;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:splitter&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&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;name_changed?&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;rails 4.0.4&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Loading&lt;/span&gt; &lt;span class="n"&gt;development&lt;/span&gt; &lt;span class="n"&gt;environment&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Rails&lt;/span&gt; &lt;span class="mf"&gt;4.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&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="n"&gt;pry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;student&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;first&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;smart_customer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;students&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="ss"&gt;:name&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'xxx'&lt;/span&gt;&lt;span class="p"&gt;)&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.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="sb"&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="sb"&gt;`users`&lt;/span&gt; &lt;span class="no"&gt;ORDER&lt;/span&gt; &lt;span class="no"&gt;BY&lt;/span&gt; &lt;span class="sb"&gt;`users`&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="sb"&gt;` ASC LIMIT 1
  SmartCustomer Load (0.5ms)  SELECT `&lt;/span&gt;&lt;span class="n"&gt;smart_customers&lt;/span&gt;&lt;span class="sb"&gt;`.* FROM `&lt;/span&gt;&lt;span class="n"&gt;smart_customers&lt;/span&gt;&lt;span class="sb"&gt;` WHERE `&lt;/span&gt;&lt;span class="n"&gt;smart_customers&lt;/span&gt;&lt;span class="sb"&gt;`.`&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="sb"&gt;` = 1 LIMIT 1
=&amp;gt; #&amp;lt;Student id: nil, smart_customer_id: 1, name: "xxx", gender: true, birthday: nil, card_id: nil, f_telephone: nil, m_telephone: nil, public_school: nil, public_class: nil, address: nil, summary: nil, user_name: nil, password: nil, telephone: nil, identity_card: nil, status: nil, point: 0, money: #&amp;lt;BigDecimal:7fc6f71e0760,'0.0',9(18)&amp;gt;, operator_id: nil, created_at: nil, updated_at: nil, stage: nil, in_year: nil, school_id: nil, rno: nil, pinyin_name: nil&amp;gt;
[2] pry(main)&amp;gt; student.save
   (0.2ms)  BEGIN
  SmartCustomer Load (0.5ms)  SELECT `&lt;/span&gt;&lt;span class="n"&gt;smart_customers&lt;/span&gt;&lt;span class="sb"&gt;`.* FROM `&lt;/span&gt;&lt;span class="n"&gt;smart_customers&lt;/span&gt;&lt;span class="sb"&gt;` WHERE `&lt;/span&gt;&lt;span class="n"&gt;smart_customers&lt;/span&gt;&lt;span class="sb"&gt;`.`&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="sb"&gt;` = 1 LIMIT 1
  SQL (0.5ms)  UPDATE `&lt;/span&gt;&lt;span class="n"&gt;smart_customers&lt;/span&gt;&lt;span class="sb"&gt;` SET `&lt;/span&gt;&lt;span class="n"&gt;rno&lt;/span&gt;&lt;span class="sb"&gt;` = 7414, `&lt;/span&gt;&lt;span class="n"&gt;updated_at&lt;/span&gt;&lt;span class="sb"&gt;` = '2014-05-06 14:45:26' WHERE `&lt;/span&gt;&lt;span class="n"&gt;smart_customers&lt;/span&gt;&lt;span class="sb"&gt;`.`&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="sb"&gt;` = 1
  SQL (0.5ms)  INSERT INTO `&lt;/span&gt;&lt;span class="n"&gt;students&lt;/span&gt;&lt;span class="sb"&gt;` (`&lt;/span&gt;&lt;span class="n"&gt;created_at&lt;/span&gt;&lt;span class="sb"&gt;`, `&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="sb"&gt;`, `&lt;/span&gt;&lt;span class="n"&gt;pinyin_name&lt;/span&gt;&lt;span class="sb"&gt;`, `&lt;/span&gt;&lt;span class="n"&gt;rno&lt;/span&gt;&lt;span class="sb"&gt;`, `&lt;/span&gt;&lt;span class="n"&gt;smart_customer_id&lt;/span&gt;&lt;span class="sb"&gt;`, `&lt;/span&gt;&lt;span class="n"&gt;updated_at&lt;/span&gt;&lt;span class="sb"&gt;`) VALUES ('2014-05-06 14:45:26', 'xxx', 'xxx', '1-140007413', 1, '2014-05-06 14:45:26')
   (0.6ms)  COMMIT
Cache delete: Student/8440
Dalli::Server#connect localhost:11211
Cache delete: SmartCustomer/1
=&amp;gt; true
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以上在 4.0.4 执行正常无报错
rails 4.1&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Loading&lt;/span&gt; &lt;span class="n"&gt;development&lt;/span&gt; &lt;span class="n"&gt;environment&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Rails&lt;/span&gt; &lt;span class="mf"&gt;4.1&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="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="n"&gt;pry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;student&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;first&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;smart_customer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;students&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="ss"&gt;:name&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'xxx'&lt;/span&gt;&lt;span class="p"&gt;)&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.4&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="sb"&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="sb"&gt;`users`&lt;/span&gt;   &lt;span class="no"&gt;ORDER&lt;/span&gt; &lt;span class="no"&gt;BY&lt;/span&gt; &lt;span class="sb"&gt;`users`&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="sb"&gt;` ASC LIMIT 1
  SmartCustomer Load (0.4ms)  SELECT  `&lt;/span&gt;&lt;span class="n"&gt;smart_customers&lt;/span&gt;&lt;span class="sb"&gt;`.* FROM `&lt;/span&gt;&lt;span class="n"&gt;smart_customers&lt;/span&gt;&lt;span class="sb"&gt;`  WHERE `&lt;/span&gt;&lt;span class="n"&gt;smart_customers&lt;/span&gt;&lt;span class="sb"&gt;`.`&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="sb"&gt;` = 1 LIMIT 1
=&amp;gt; #&amp;lt;Student id: nil, smart_customer_id: 1, name: "xxx", gender: true, birthday: nil, card_id: nil, f_telephone: nil, m_telephone: nil, public_school: nil, public_class: nil, address: nil, summary: nil, user_name: nil, password: nil, telephone: nil, identity_card: nil, status: nil, point: 0, money: #&amp;lt;BigDecimal:7ffdb6253558,'0.0',9(18)&amp;gt;, operator_id: nil, created_at: nil, updated_at: nil, stage: nil, in_year: nil, school_id: nil, rno: nil, pinyin_name: nil&amp;gt;
[2] pry(main)&amp;gt; student.save
   (0.2ms)  BEGIN
  SQL (0.6ms)  UPDATE `&lt;/span&gt;&lt;span class="n"&gt;smart_customers&lt;/span&gt;&lt;span class="sb"&gt;` SET `&lt;/span&gt;&lt;span class="n"&gt;rno&lt;/span&gt;&lt;span class="sb"&gt;` = 7415, `&lt;/span&gt;&lt;span class="n"&gt;updated_at&lt;/span&gt;&lt;span class="sb"&gt;` = '2014-05-06 14:46:22' WHERE `&lt;/span&gt;&lt;span class="n"&gt;smart_customers&lt;/span&gt;&lt;span class="sb"&gt;`.`&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="sb"&gt;` = 1
  SQL (0.5ms)  UPDATE `&lt;/span&gt;&lt;span class="n"&gt;smart_customers&lt;/span&gt;&lt;span class="sb"&gt;` SET `&lt;/span&gt;&lt;span class="n"&gt;rno&lt;/span&gt;&lt;span class="sb"&gt;` = 7416, `&lt;/span&gt;&lt;span class="n"&gt;updated_at&lt;/span&gt;&lt;span class="sb"&gt;` = '2014-05-06 14:46:22' WHERE `&lt;/span&gt;&lt;span class="n"&gt;smart_customers&lt;/span&gt;&lt;span class="sb"&gt;`.`&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="sb"&gt;` = 1
  SQL (0.6ms)  INSERT INTO `&lt;/span&gt;&lt;span class="n"&gt;students&lt;/span&gt;&lt;span class="sb"&gt;` (`&lt;/span&gt;&lt;span class="n"&gt;created_at&lt;/span&gt;&lt;span class="sb"&gt;`, `&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="sb"&gt;`, `&lt;/span&gt;&lt;span class="n"&gt;pinyin_name&lt;/span&gt;&lt;span class="sb"&gt;`, `&lt;/span&gt;&lt;span class="n"&gt;rno&lt;/span&gt;&lt;span class="sb"&gt;`, `&lt;/span&gt;&lt;span class="n"&gt;smart_customer_id&lt;/span&gt;&lt;span class="sb"&gt;`, `&lt;/span&gt;&lt;span class="n"&gt;updated_at&lt;/span&gt;&lt;span class="sb"&gt;`) VALUES ('2014-05-06 14:46:22', 'xxx', 'xxx', '1-140007415', 1, '2014-05-06 14:46:22')
  SQL (0.7ms)  INSERT INTO `&lt;/span&gt;&lt;span class="n"&gt;students&lt;/span&gt;&lt;span class="sb"&gt;` (`&lt;/span&gt;&lt;span class="n"&gt;rno&lt;/span&gt;&lt;span class="sb"&gt;`) VALUES ('1-140007414')
Mysql2::Error: Field 'name' doesn't have a default value: INSERT INTO `&lt;/span&gt;&lt;span class="n"&gt;students&lt;/span&gt;&lt;span class="sb"&gt;` (`&lt;/span&gt;&lt;span class="n"&gt;rno&lt;/span&gt;&lt;span class="sb"&gt;`) VALUES ('1-140007414')
   (3.0ms)  ROLLBACK
ActiveRecord::StatementInvalid: Mysql2::Error: Field 'name' doesn't have a default value: INSERT INTO `&lt;/span&gt;&lt;span class="n"&gt;students&lt;/span&gt;&lt;span class="sb"&gt;` (`&lt;/span&gt;&lt;span class="n"&gt;rno&lt;/span&gt;&lt;span class="sb"&gt;`) VALUES ('1-140007414')
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在 4.1 却执行报错，看了一下执行 sql 发现都执行了两次非常困惑&lt;/p&gt;</description>
      <author>moioo</author>
      <pubDate>Tue, 06 May 2014 14:55:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/19050</link>
      <guid>https://ruby-china.org/topics/19050</guid>
    </item>
  </channel>
</rss>
