<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>hexawing (六翼)</title>
    <link>https://ruby-china.org/hexawing</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>请教：pry-remote 这个 gem，如何让它执行到下一处断点而不退出当前环境啊……</title>
      <description>&lt;p&gt;之前用的 pry，种种原因换成了 pry-remote。但有一个问题就是：&lt;/p&gt;

&lt;p&gt;比如，我在一段代码里写了两处&lt;code&gt;binding.remote_pry&lt;/code&gt;，在第一处断点的时候，我在外部运行一个&lt;code&gt;pry-remote&lt;/code&gt;，进入到断点，我调试调试，然后&lt;code&gt;exit&lt;/code&gt;。&lt;/p&gt;

&lt;p&gt;如果是之前的 pry，它就会到下一处断点然后停住，但 remote_pry 它会“运行到下一处断点停住，并且退出当前的 pry-remote 服务”。它这一退出，我就不知道现在程序是进行到哪一步、有没有被断住了，就还得再运行一遍&lt;code&gt;pry-remote&lt;/code&gt;：如果执行起来了，说明还有断点；如果报错，说明没有断点了。很是不方便。&lt;/p&gt;

&lt;p&gt;就不知道有没有类似&lt;code&gt;continue&lt;/code&gt;的办法让它不退出服务继续执行呢？&lt;/p&gt;

&lt;p&gt;相关的文档没找到，在 pry 里敲 help 好像也没有类似的说法。&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Tue, 09 May 2017 15:24:17 +0800</pubDate>
      <link>https://ruby-china.org/topics/32959</link>
      <guid>https://ruby-china.org/topics/32959</guid>
    </item>
    <item>
      <title>请教一个用 nginx upload module 上传文件到 Rails 后，文件读取 / 改名的问题 (已解决)</title>
      <description>&lt;p&gt;之前发贴求助过上传的问题，&lt;a href="/alucardpj" class="user-mention" title="@alucardpj"&gt;&lt;i&gt;@&lt;/i&gt;alucardpj&lt;/a&gt; 大侠推荐我用 nginx 的 upload module，几经周折之后，终于可以上传了&lt;/p&gt;

&lt;p&gt;然而现在的问题是：&lt;/p&gt;

&lt;p&gt;nginx 上传的文件都是 000000001 0000000002 这样子的，无法识别。想用 ruby 读出来然后重命名，但加断点后访问文件时说我没权限。&lt;/p&gt;

&lt;p&gt;我开始以为是路径问题，于是把 nginx 配置里的&lt;code&gt;upload_store    /tmp/upload_tmp&lt;/code&gt;改成了&lt;code&gt;upload_store /home/terry/RubymineProjects/EIMV6/public/uploaded&lt;/code&gt;，但是不行；&lt;/p&gt;

&lt;p&gt;又把&lt;code&gt;upload_store_access user:rw;&lt;/code&gt;改成了&lt;code&gt;upload_store_access user:rw group:rw all:rw;&lt;/code&gt;，还是不行。&lt;/p&gt;

&lt;p&gt;我的 Rails 里用了一个 carrierwave，这个不重要吧？nginx 配置的接管文件处理的代码长这样：&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;save_uploaded_file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;z&lt;/span&gt; &lt;span class="o"&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;new&lt;/span&gt;
  &lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:pdf_file_name&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save!&lt;/span&gt;
  &lt;span class="n"&gt;byebug&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="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;byebug&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:pdf_file_path&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="o"&gt;***&lt;/span&gt; &lt;span class="no"&gt;Errno&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;EACCES&lt;/span&gt; &lt;span class="no"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;Permission&lt;/span&gt; &lt;span class="n"&gt;denied&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt; &lt;span class="n"&gt;rb_sysopen&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="sr"&gt;/home/&lt;/span&gt;&lt;span class="n"&gt;terry&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="no"&gt;RubymineProjects&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="no"&gt;EIMV6&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="kp"&gt;public&lt;/span&gt;&lt;span class="sr"&gt;/uploaded/&lt;/span&gt;&lt;span class="mo"&gt;00426&lt;/span&gt;&lt;span class="mi"&gt;81049&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;而且我试了下，直接从 irb 访问，也是报没权限：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;terry&lt;/span&gt;&lt;span class="vi"&gt;@TerryUbuntu&lt;/span&gt;&lt;span class="ss"&gt;:~&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="no"&gt;RubymineProjects&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="no"&gt;EIMV6&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;irb&lt;/span&gt;
&lt;span class="mf"&gt;2.3&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="mo"&gt;001&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;  &lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt; &lt;span class="s1"&gt;'/home/terry/RubymineProjects/EIMV6/public/uploaded/0000000001'&lt;/span&gt;
&lt;span class="no"&gt;Errno&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;EACCES&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;Permission&lt;/span&gt; &lt;span class="n"&gt;denied&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt; &lt;span class="n"&gt;rb_sysopen&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="sr"&gt;/home/&lt;/span&gt;&lt;span class="n"&gt;terry&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="no"&gt;RubymineProjects&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="no"&gt;EIMV6&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="kp"&gt;public&lt;/span&gt;&lt;span class="sr"&gt;/uploaded/&lt;/span&gt;&lt;span class="mo"&gt;0000000001&lt;/span&gt;
    &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;irb&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="ss"&gt;:in&lt;/span&gt; &lt;span class="sb"&gt;`read'
    from (irb):1
    from /home/terry/.rvm/rubies/ruby-2.3.0/bin/irb:11:in `&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="s1"&gt;'
2.3.0 :002 &amp;gt; File.stat '&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;terry&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="no"&gt;RubymineProjects&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="no"&gt;EIMV6&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="kp"&gt;public&lt;/span&gt;&lt;span class="sr"&gt;/uploaded/&lt;/span&gt;&lt;span class="mo"&gt;0000000001&lt;/span&gt;&lt;span class="s1"&gt;'
Errno::EACCES: Permission denied @ rb_file_s_stat - /home/terry/RubymineProjects/EIMV6/public/uploaded/0000000001
    from (irb):2:in `stat'&lt;/span&gt;
    &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;irb&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
    &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="sr"&gt;/home/&lt;/span&gt;&lt;span class="n"&gt;terry&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rvm&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;rubies&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ruby&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;irb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="ss"&gt;:in&lt;/span&gt; &lt;span class="sb"&gt;`&amp;lt;main&amp;gt;'
2.3.0 :003 &amp;gt; File.file? '/home/terry/RubymineProjects/EIMV6/public/uploaded/0000000001'
 =&amp;gt; false 
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;请各位不吝赐教！谢谢！&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Thu, 27 Apr 2017 19:42:32 +0800</pubDate>
      <link>https://ruby-china.org/topics/32889</link>
      <guid>https://ruby-china.org/topics/32889</guid>
    </item>
    <item>
      <title>请教，如何在一个 model 中使用其它 model 里的查询条件……</title>
      <description>&lt;p&gt;比如我在 Post 模型里写了一个叫 recent 的查询&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;recent&lt;/span&gt;
    &lt;span class="n"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'created_at &amp;gt;= ?'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;today&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&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="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;active&lt;/span&gt;
    &lt;span class="n"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'posts.created_at &amp;gt;= ?'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;today&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;joins&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:posts&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 关联假设已经写了&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个 where 和上面那段是一样的，我能“借过来”用吗？&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Wed, 05 Apr 2017 15:02:58 +0800</pubDate>
      <link>https://ruby-china.org/topics/32695</link>
      <guid>https://ruby-china.org/topics/32695</guid>
    </item>
    <item>
      <title>请教，.json 或者.xml 这样的文件，production 模式下应该如何加载？</title>
      <description>&lt;p&gt;看到&lt;a href="https://launchschool.com/blog/rails-asset-pipeline-best-practices" rel="nofollow" target="_blank" title=""&gt;一篇文章&lt;/a&gt;说&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It’s important to organize your assets in a way that is understandable to you, and facilitates the existing functionality of the asset pipeline. The first thing you should know is that all of your custom Javascript, stylesheets, and images should go in the app/assets/ directory. By default, there is a folder each for javascripts, stylesheets, and images. You can also add fonts, audios, and videos to the app/assets/ directory for those types of assets. All third-party code that you are using (e.g. jQuery, backbone.js, etc.) should be placed in the vendor/assets/ directory:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;然后查了下，只能是&lt;code&gt;fonts&lt;/code&gt;, &lt;code&gt;audios&lt;/code&gt;, &lt;code&gt;videos&lt;/code&gt;，加上原来的&lt;code&gt;images&lt;/code&gt; &lt;code&gt;javascripts&lt;/code&gt; &lt;code&gt;stylesheets&lt;/code&gt;一共六种？&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Maps asset types to public directory.&lt;/span&gt;
&lt;span class="no"&gt;ASSET_PUBLIC_DIRECTORIES&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="ss"&gt;audio:      &lt;/span&gt;&lt;span class="s1"&gt;'/audios'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="ss"&gt;font:       &lt;/span&gt;&lt;span class="s1"&gt;'/fonts'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="ss"&gt;image:      &lt;/span&gt;&lt;span class="s1"&gt;'/images'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="ss"&gt;javascript: &lt;/span&gt;&lt;span class="s1"&gt;'/javascripts'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="ss"&gt;stylesheet: &lt;/span&gt;&lt;span class="s1"&gt;'/stylesheets'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="ss"&gt;video:      &lt;/span&gt;&lt;span class="s1"&gt;'/videos'&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;那如果有别的文件类型要怎么加载到 assets 里呢？&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Sun, 19 Jun 2016 15:40:09 +0800</pubDate>
      <link>https://ruby-china.org/topics/30317</link>
      <guid>https://ruby-china.org/topics/30317</guid>
    </item>
    <item>
      <title>请教一个大文件上传速度缓慢的问题 (已解决)</title>
      <description>&lt;p&gt;问题描述是：
从局域网 A 电脑传到 B 电脑。&lt;/p&gt;

&lt;p&gt;10k 的文件，上传耗时 37 毫秒&lt;/p&gt;

&lt;p&gt;41M 的文件，上传耗时 21.8 秒&lt;/p&gt;

&lt;p&gt;175M 的文件，上传耗时……4.9 分钟………………&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;UploadedFile&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="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;create_with&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:files&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;file_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;
    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;root&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/public/files/upload/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;original_filename&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'wb+'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;uploaded_file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="ss"&gt;:description&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:fileDescription&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="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;original_filename&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="ss"&gt;:user_id&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="ss"&gt;:url&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"files/upload/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;original_filename&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="ss"&gt;:size&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;size&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="ss"&gt;:sha_code&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;Digest&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;SHA2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;hexdigest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file_data&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="ss"&gt;:mime_type&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;content_type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="ss"&gt;:thumbnail_url&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;file_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;uploaded_file&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;:file_id&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;file_id&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;看了下 log，大概这样：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Started POST "/sampling_requirement/upload_save" for 172.18.5.44 at 2016-05-22 15:33:35 +0800
Cannot render console from 172.18.5.44! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by SamplingRequirementController#upload_save as */*
  Parameters: {"fileDescription"=&amp;gt;"", "authenticity_token"=&amp;gt;"wh6n1sgPgyBhs+1HMXGlyNd809kCblTpY2hzxQ7O9VAptFFYF7LvW+N+zzGgwiaun7AUKEFobt5gw08KdsNP3A==", "files"=&amp;gt;#&amp;lt;ActionDispatch::Http::UploadedFile:0x007f96c600cf08 @tempfile=#&amp;lt;Tempfile:/tmp/RackMultipart20160522-3838-jpi4q1.pdf&amp;gt;, @original_filename="Ruby元编程中文版.pdf", @content_type="application/pdf", @headers="Content-Disposition: form-data; name=\"files\"; filename=\"Ruby\xE5\x85\x83\xE7\xBC\x96\xE7\xA8\x8B\xE4\xB8\xAD\xE6\x96\x87\xE7\x89\x88.pdf\"\r\nContent-Type: application/pdf\r\n"&amp;gt;}
  [1m[35m (25.8ms)[0m  [1m[35mBEGIN[0m
  [1m[35mSQL (29.9ms)[0m  [1m[32mINSERT INTO `uploaded_files` (`name`, `url`, `description`, `size`, `sha_code`, `mime_type`, `user_id`, `created_at`, `updated_at`) VALUES ('Ruby元编程中文版.pdf', 'files/upload/Ruby元编程中文版.pdf', '', 47186322, 'dfedd6c8b0a0fdceb9dc63d1ad26caf27b16491ecc14347cbe4d4a4cdd0f8620', 'application/pdf', 1, '2016-05-22 07:33:37', '2016-05-22 07:33:37')[0m
  [1m[35m (43.8ms)[0m  [1m[35mCOMMIT[0m
Completed 200 OK in 1853ms (Views: 0.5ms | ActiveRecord: 99.5ms)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我&lt;code&gt;logger.info&lt;/code&gt;过每一步，发现其实后面每一步时间都不超过一秒。时间方面，那 4.9 分钟里，大约有 4.8 分钟在等这条 log 出来，出来之后后面的进展就很流畅了……
求解 T_T&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Mon, 23 May 2016 09:28:49 +0800</pubDate>
      <link>https://ruby-china.org/topics/30088</link>
      <guid>https://ruby-china.org/topics/30088</guid>
    </item>
    <item>
      <title>\xEF\xBF\xBD 乱码问题求救</title>
      <description>&lt;p&gt;一个在 Windows 下生成的 txt 文件，我想在服务器端读取并解析之，服务器端自然是 Ubuntu 了，Rails=3.2.8，Ruby=1.9.3
然而&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;File&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="s2"&gt;"/home/terry/下载/客户编码.txt"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'a+'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;#&amp;lt;File:/home/terry/下载/客户编码.txt&amp;gt;&lt;/span&gt;

&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;readline&lt;/span&gt;
&lt;span class="s2"&gt;"{�ͻ�����}[�ָ���]&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;~~&lt;/span&gt;&lt;span class="se"&gt;\"\r\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;binmode&lt;/span&gt;
&lt;span class="c1"&gt;#&amp;lt;File:/home/terry/下载/客户编码.txt&amp;gt;&lt;/span&gt;

&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;readline&lt;/span&gt;
&lt;span class="s2"&gt;"// &lt;/span&gt;&lt;span class="se"&gt;\xC3\xBF\xEF\xBF\xBD\xD0\xB8\xEF\xBF\xBD\xCA\xBD&lt;/span&gt;&lt;span class="s2"&gt; :&lt;/span&gt;&lt;span class="se"&gt;\r\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查了下\xEF\xBF\xBD 就是著名的“锟斤拷”，然而网上好多都是只讲了下原理……所以我要怎么做呢 T_T&lt;/p&gt;

&lt;p&gt;补充一下，在 Windows 下打开可以看到文件第一行是：
&lt;code&gt;{客户编码}[分隔符]"~~"&lt;/code&gt;
然而在 Ubuntu 下 (几乎) 用任何软件任何编码格式都无法正确预览，所以可能不只是 Ruby 的问题……&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Thu, 14 Jan 2016 18:36:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/28733</link>
      <guid>https://ruby-china.org/topics/28733</guid>
    </item>
    <item>
      <title>求教一个 Whenever 时间条件的写法</title>
      <description>&lt;p&gt;比如我想要它每双周周五的上午 10 点执行，是不是只能写成
&lt;code&gt;every 2.weeks, :at =&amp;gt; '10:00 am' do&lt;/code&gt;
然后在周五的时候把它加入时间表？似乎有点诡异的样子……&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Fri, 23 May 2014 09:40:05 +0800</pubDate>
      <link>https://ruby-china.org/topics/19488</link>
      <guid>https://ruby-china.org/topics/19488</guid>
    </item>
    <item>
      <title>关于多态的问题</title>
      <description>&lt;p&gt;现实情况是这样的：
员工要写工作日志，但根据岗位，一部分是 sale_log，一部分是 service_log，因为数据结构等已经做成了两个表。
然后这两个表都有可能会生成报价，所以就把报价表给做成多态了。&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;Quote&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;belongs_to&lt;/span&gt; &lt;span class="ss"&gt;:quotable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:polymorphic&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;true&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="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ServiceLog&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_one&lt;/span&gt; &lt;span class="ss"&gt;:quote&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:as&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;:quotable&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="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SaleLog&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_one&lt;/span&gt; &lt;span class="ss"&gt;:quote&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:as&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;:quotable&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="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class="no"&gt;SaleLog&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;"quotes.id = 5"&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;:quote&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;size&lt;/span&gt;&lt;span class="c1"&gt;#从这个方向查询可以&lt;/span&gt;
&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;Quote&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;"sale_logs.id = 5"&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;:quotable&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;size&lt;/span&gt;&lt;span class="c1"&gt;#反过来查就不行了……&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;EagerLoadPolymorphicError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;Can&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;eagerly&lt;/span&gt; &lt;span class="nb"&gt;load&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;polymorphic&lt;/span&gt; &lt;span class="n"&gt;association&lt;/span&gt; &lt;span class="ss"&gt;:quotable&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;Quote&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;"sale_logs.id = 5"&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;:sale_log&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;size&lt;/span&gt;&lt;span class="c1"&gt;#这个必然也不行……&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;ConfigurationError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;Association&lt;/span&gt; &lt;span class="n"&gt;named&lt;/span&gt; &lt;span class="s1"&gt;'sale_log'&lt;/span&gt; &lt;span class="n"&gt;was&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;found&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;perhaps&lt;/span&gt; &lt;span class="n"&gt;you&lt;/span&gt; &lt;span class="n"&gt;misspelled&lt;/span&gt; &lt;span class="n"&gt;it?&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个要怎么写才对呢……&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Mon, 13 Jan 2014 16:54:53 +0800</pubDate>
      <link>https://ruby-china.org/topics/16765</link>
      <guid>https://ruby-china.org/topics/16765</guid>
    </item>
    <item>
      <title>Ruby 保存的 csv 文件，跟 Excel 各种不对付啊……</title>
      <description>&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;to_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{})&lt;/span&gt;
    &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;"csv"&lt;/span&gt;
    &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;"nkf"&lt;/span&gt;
    &lt;span class="n"&gt;field_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\xEF\xBB\xBF&lt;/span&gt;&lt;span class="s2"&gt;姓名"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"Name"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"Birthday"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;  &lt;span class="c1"&gt;#csv文件的头（标题）&lt;/span&gt;

    &lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;CSV&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&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;csv&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
        &lt;span class="n"&gt;csv&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;field_name&lt;/span&gt;
        &lt;span class="n"&gt;all&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each&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;person&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
            &lt;span class="n"&gt;csv&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;person&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="n"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;en_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;email&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;   &lt;span class="c1"&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="n"&gt;fh&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;File&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="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;root&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/public/abc.csv"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"wb"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;#创建一个可写文件流&lt;/span&gt;
    &lt;span class="n"&gt;fh&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;puts&lt;/span&gt; &lt;span class="no"&gt;NKF&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;nkf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"-wL"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#写入数据。这里没用原作者的“-wLuxs”，因为似乎结果不太对&lt;/span&gt;
    &lt;span class="n"&gt;fh&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;close&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;参考的这位的写法：
&lt;a href="http://jarry-li.iteye.com/blog/1870476" rel="nofollow" target="_blank"&gt;http://jarry-li.iteye.com/blog/1870476&lt;/a&gt;
存出来的 CSV 在我 Ubuntu 下的 LibreOffice Calc 打开是正常的，Windows 下用 WPS Office 打开也是正常的，但 Excel2010 2007 打开均为乱码。记事本打开再选择另存为发现编码是 UTF8，改成 ANSI 再另保存后大家打开都正常。
我也试过在文件前加上&lt;code&gt;\uFEFF&lt;/code&gt;
出处：&lt;a href="http://blog.sammylin.tw/export-to-csv-has-mojibake/" rel="nofollow" target="_blank"&gt;http://blog.sammylin.tw/export-to-csv-has-mojibake/&lt;/a&gt;
还是不行……&lt;/p&gt;

&lt;p&gt;也就是说，Excel 不识别 utf8 的文件头，那么我怎么能让 Ruby 生成出来的文件没有任何文件头（也就是 ANSI？）呢？我去掉过&lt;code&gt;\xEF\xBB\xBF&lt;/code&gt;，但似乎是 Ruby 默认的 utf8 的关系，所以不生效？&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Mon, 23 Sep 2013 09:39:26 +0800</pubDate>
      <link>https://ruby-china.org/topics/14306</link>
      <guid>https://ruby-china.org/topics/14306</guid>
    </item>
    <item>
      <title>SQL 这么写 join 感觉性能略差啊……</title>
      <description>&lt;p&gt;customer_units，客户单位
customer_unit_aliases，客户单位别称
一单位对应多别称（本来是没必要有这么个“别称”的，但实在是有的单位有好多种简称，这个就不多说了，结构没法改了）。
现在想查单位表包含 z 或者别称表包含 z 的记录，这么写感觉性能略差啊……&lt;/p&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
&lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
    &lt;span class="nv"&gt;`customer_units`&lt;/span&gt;
&lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;OUTER&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="nv"&gt;`customer_unit_aliases`&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="nv"&gt;`customer_unit_aliases`&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;`customer_unit_id`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;`customer_units`&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;`id`&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;customer_units&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;NAME&lt;/span&gt; &lt;span class="k"&gt;LIKE&lt;/span&gt; &lt;span class="s1"&gt;'%z%'&lt;/span&gt;
        &lt;span class="k"&gt;OR&lt;/span&gt; &lt;span class="n"&gt;customer_unit_aliases&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;unit_alias&lt;/span&gt; &lt;span class="k"&gt;LIKE&lt;/span&gt; &lt;span class="s1"&gt;'%z%'&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行下来居然要 3693ms。
应该用&lt;code&gt;INNER JOIN&lt;/code&gt;？&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Thu, 20 Jun 2013 16:48:41 +0800</pubDate>
      <link>https://ruby-china.org/topics/11850</link>
      <guid>https://ruby-china.org/topics/11850</guid>
    </item>
    <item>
      <title>想得到一个模型下我写过哪些 “has_many”，这个有办法吗？</title>
      <description>&lt;p&gt;如题。
更进一步，能知道每个 has_many 下我对应了哪个表吗？&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;has_many&lt;/span&gt; &lt;span class="ss"&gt;:jobs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:foreign_key&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'user_id'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:class_name&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"Task"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;比如上面这个模型，能得到这个&lt;code&gt;Task&lt;/code&gt;吗？&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Fri, 14 Jun 2013 09:27:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/11711</link>
      <guid>https://ruby-china.org/topics/11711</guid>
    </item>
    <item>
      <title>ActiveRecord 多条件查询，但指向的是同一个表的问题</title>
      <description>&lt;p&gt;大致是这样：
报价 (Quote)，有商务 (business) 负责做它，但由销售 (sale) 发给客户，所以模型如下：&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;Quote&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;belongs_to&lt;/span&gt; &lt;span class="ss"&gt;:sale&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:class_name&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="ss"&gt;:foreign_key&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'sale_user_id'&lt;/span&gt;
    &lt;span class="n"&gt;belongs_to&lt;/span&gt; &lt;span class="ss"&gt;:business&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:class_name&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="ss"&gt;:foreign_key&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'business_user_id'&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="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;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;:quotes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:foreign_key&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'sale_user_id'&lt;/span&gt;
    &lt;span class="n"&gt;has_many&lt;/span&gt; &lt;span class="ss"&gt;:deal_quotes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:class_name&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Quote'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:foreign_key&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'business_user_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="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;Quote&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;"users.id = 14"&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="s2"&gt;"sale"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;size&lt;/span&gt; &lt;span class="c1"&gt;#销售14名下的报价&lt;/span&gt;
&lt;span class="mi"&gt;94&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;Quote&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;"users.id = 11"&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="s2"&gt;"business"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;size&lt;/span&gt; &lt;span class="c1"&gt;#由商务11做的报价&lt;/span&gt;
&lt;span class="mi"&gt;105&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;现在我想把它们&lt;code&gt;AND&lt;/code&gt;起来，但就不对了啊，两个都是&lt;code&gt;users.id&lt;/code&gt;，结果就是 0……
有没有什么 alias 之类的东东来解决这个问题啊？&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Wed, 05 Jun 2013 09:17:56 +0800</pubDate>
      <link>https://ruby-china.org/topics/11498</link>
      <guid>https://ruby-china.org/topics/11498</guid>
    </item>
    <item>
      <title>怎么能不更新 created_at 这个字段？</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;#转让给……&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;trans_to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;product_array&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:product_ids&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"|"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;product_array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each&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;product&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
        &lt;span class="n"&gt;update_product&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Product&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&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="n"&gt;update_product&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;user_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:trans_to&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="n"&gt;update_product&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&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;突然发现这样一转让，product 的 created_at 字段也变了，这样会有一些问题，怎么能让它的 created_at 字段不变，只变 updated_at 呢？&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Mon, 06 May 2013 16:35:14 +0800</pubDate>
      <link>https://ruby-china.org/topics/10753</link>
      <guid>https://ruby-china.org/topics/10753</guid>
    </item>
    <item>
      <title>关于 Linux 和针式打印机的问题，估计是只能发这儿问问了……</title>
      <description>&lt;p&gt;各位有没有遇到过 Ubuntu 下针式打印机驱动不正常的现象？详细来说就是：
实际需求是套打快递单。然后我实现的方法是先用 Rails 生成一个 PDF，然后调用系统命令 lp 打印这个 PDF。打印机用的是 Epson630K。
Ubuntu12.04 里带的驱动没有对应型号的，于是只好找同系列的试。
然后导致用某些驱动的时候，打印时分页不正常（单页是正常的……）；有另外某些驱动的时候，页面内容会不正常（比如有的空白区域被拉宽了 1.5 倍左右）。换了 n 个 PPD 文件，这二者都无法得而兼。&lt;/p&gt;

&lt;p&gt;所以想问问各位有没有好的解决方法，或者有正在用的打印机型号及驱动推荐？&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Mon, 06 May 2013 12:07:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/10744</link>
      <guid>https://ruby-china.org/topics/10744</guid>
    </item>
    <item>
      <title>where 后面参数的疑惑</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;User&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;scope&lt;/span&gt; &lt;span class="ss"&gt;:at_job&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"state = ?"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"at_job"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但我用的 RubyMine 非提示我说 where 多带了一个参数。鉴于这 IDE 一贯表现良好，所以我总想，是不是我真的写的不规范？直接不写问号而把后面那个值写前面表达式里？应该没这么变态吧……&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Thu, 25 Apr 2013 09:29:12 +0800</pubDate>
      <link>https://ruby-china.org/topics/10489</link>
      <guid>https://ruby-china.org/topics/10489</guid>
    </item>
    <item>
      <title>有点变态的排序需求求助</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="sx"&gt;%w(1 2 10 3 9 25)&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"10"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"25"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"9"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="sx"&gt;%w(1 2 10 3 9 25)&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_i&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"9"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"10"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"25"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但这种怎么搞：
&lt;code&gt;%w(1 2 1-1 1-10 1-3 2-5 2-11 1-1-5)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;我能想到的是先把它转成数字，但这个转数字也不那么好转啊……
写个正则倒是可以
&lt;code&gt;1-1 =&amp;gt; 100001&lt;/code&gt;
&lt;code&gt;1-10 =&amp;gt; 100010&lt;/code&gt;
但
&lt;code&gt;1-1-5  =&amp;gt; 10000100005&lt;/code&gt;这样的正则写不来的说……&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Sat, 13 Apr 2013 09:51:03 +0800</pubDate>
      <link>https://ruby-china.org/topics/10150</link>
      <guid>https://ruby-china.org/topics/10150</guid>
    </item>
    <item>
      <title>有没有这样的语法糖？</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="sx"&gt;%W(aa bb &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"Y"&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt; abc)&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"aa"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"bb"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"abc"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="sx"&gt;%W(aa bb &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="kp"&gt;false&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"Y"&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt; abc)&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"aa"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"bb"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"Y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"abc"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但我想返回 ["aa", "bb", "abc"]（而不是像第一种那样多一个""），可以吗？&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Mon, 01 Apr 2013 13:52:22 +0800</pubDate>
      <link>https://ruby-china.org/topics/9893</link>
      <guid>https://ruby-china.org/topics/9893</guid>
    </item>
    <item>
      <title>Rails 接受的 POST 最大长度是多少啊？</title>
      <description>&lt;p&gt;想查一下 POST 带参数最大可以带多长，但都说要看服务器端的设置。所以是要看 Nginx 的设置？
另外我也不知道这个长度怎么算的，
&lt;code&gt;post?value=abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz...&lt;/code&gt;这样长度为 1024 个字符
和
post 一个大小为 1K 的文件是一样算的吗？求指点。&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Tue, 19 Mar 2013 22:22:50 +0800</pubDate>
      <link>https://ruby-china.org/topics/9577</link>
      <guid>https://ruby-china.org/topics/9577</guid>
    </item>
    <item>
      <title>请问一下，很多 model 里都有某个方法，想把它们单独拎出来 DRY 的话，一般应该放哪里呢？</title>
      <description>&lt;p&gt;helper 里吗？或者是都写到另外一个 Model 里再都引用这个模块？&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Fri, 15 Mar 2013 20:36:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/9459</link>
      <guid>https://ruby-china.org/topics/9459</guid>
    </item>
    <item>
      <title>查询的结果怎么按某种形式合并起来？</title>
      <description>&lt;p&gt;比如这样的一个表：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+----------+--------+-------------+
|   date   | event  | description |
+----------+--------+-------------+
| 2013.3.1 | event1 | aaaaaa      |
| 2013.3.1 | event2 | bbbbb       |
| 2013.3.1 | event2 | ccccc       |
| 2013.3.2 | event1 | dddd        |
| 2013.3.2 | event2 | eeeeeee     |
+----------+--------+-------------+
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我想输出成这样的结果：&lt;/p&gt;

&lt;p&gt;- 2013.3.1
        * event1
            + aaaaaa&lt;br&gt;
        * event2
            + bbbbb&lt;br&gt;
            + ccccc&lt;br&gt;
    - 2013.3.2
        * event1
            + dddd&lt;br&gt;
        * event2
            + eeeeeee&lt;/p&gt;

&lt;p&gt;不这样也行，只要能某种程度上的“合并”就行了，能实现吗？&lt;/p&gt;</description>
      <author>hexawing</author>
      <pubDate>Wed, 06 Mar 2013 14:23:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/9182</link>
      <guid>https://ruby-china.org/topics/9182</guid>
    </item>
  </channel>
</rss>
