<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>linjunzhugg (林俊柱)</title>
    <link>https://ruby-china.org/linjunzhugg</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>请教 newrelic 的定价策略</title>
      <description>&lt;p&gt;看了 newrelic 的定价策略，有点疑惑&lt;/p&gt;

&lt;p&gt;两种计费方式：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cloud-based: Ideal when running dynamic computing environments in the cloud.&lt;/li&gt;
&lt;li&gt;Self-hosted: Best when running static environments consisting of hosts managed in your own data center.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Cloud-based 需要购买 compute unit&lt;/p&gt;

&lt;p&gt;Self-hosted 需要选择主机数 host&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Compute Unit: (# of CPU Cores + GB of RAM) x HOURS USED. (increments of 500)&lt;/li&gt;
&lt;li&gt;Host: A physical machine, virtual machine, or cloud instance that runs your applications.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;疑问：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Self-hosted 是自己购买云服务器，自己搭建 newrelic 的意思么？所选择的 Host，则是自己使用的应用服务器主机数？&lt;/li&gt;
&lt;li&gt;Compute Unit，若自己有两台服务器，均为 双核 4G，那么实际上每个月花费的是： （6+6）*750 么？&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>linjunzhugg</author>
      <pubDate>Mon, 16 Dec 2019 18:09:26 +0800</pubDate>
      <link>https://ruby-china.org/topics/39341</link>
      <guid>https://ruby-china.org/topics/39341</guid>
    </item>
    <item>
      <title>ActiveRecord 在 DB 服务中止重启后，无法自动重连</title>
      <description>&lt;p&gt;纯 Ruby 项目，用了 ActiveRecord-4.2 来管理数据库，数据库为  PG。&lt;/p&gt;

&lt;p&gt;该项目会启动成为一个常驻进程，运行过程中，发现 PG 数据库一旦中止，重启后，ActiveRecord 不会自动去重连数据库，因而一直报无法连接的错误，不知道有没人 遇到过？搜索了好一阵子还是没搜到解决方案。&lt;/p&gt;</description>
      <author>linjunzhugg</author>
      <pubDate>Thu, 15 Nov 2018 17:02:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/37769</link>
      <guid>https://ruby-china.org/topics/37769</guid>
    </item>
    <item>
      <title>麻烦管理员删除该贴，谢谢。</title>
      <description>&lt;p&gt;麻烦管理员删除该贴，谢谢。&lt;/p&gt;</description>
      <author>linjunzhugg</author>
      <pubDate>Fri, 29 Jul 2016 17:48:24 +0800</pubDate>
      <link>https://ruby-china.org/topics/30671</link>
      <guid>https://ruby-china.org/topics/30671</guid>
    </item>
    <item>
      <title>「讨论」API 返回的 JSON 中，该如何处理 nil 的字段</title>
      <description>&lt;p&gt;如下 API 返回的 JSON 数据&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="s2"&gt;"version_code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;123&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s2"&gt;"phone"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;none&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;phone&lt;/code&gt;字段为 nil，使用&lt;code&gt;jbuilder&lt;/code&gt;构造数据时，返回便是&lt;code&gt;none&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;客户端没有进行处理的情况下，这个&lt;code&gt;none&lt;/code&gt;有可能会造成客户端的异常。
就算客户端会进行处理，但如果返回的&lt;code&gt;json&lt;/code&gt;中有十个字段，有好多个都有可能为&lt;code&gt;none&lt;/code&gt;怎么办？客户端难道要一项项进行校验？&lt;/p&gt;

&lt;p&gt;有人说了，那你就永远让他不要为 nil 呀，设为默认值为空字符串或 0，但这样有时候并不符合业务的需求，比如&lt;code&gt;phone&lt;/code&gt;会有格式的校验，如果让他成为空字符串，肯定是验证不通过。&lt;/p&gt;

&lt;p&gt;各位你们是如何看待的？&lt;/p&gt;</description>
      <author>linjunzhugg</author>
      <pubDate>Tue, 29 Sep 2015 15:49:50 +0800</pubDate>
      <link>https://ruby-china.org/topics/27520</link>
      <guid>https://ruby-china.org/topics/27520</guid>
    </item>
    <item>
      <title>类变量以及类实例变量会被 GC 么？</title>
      <description>&lt;p&gt;&lt;code&gt;ruby2.2&lt;/code&gt;&lt;/p&gt;

&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;RedisCli&lt;/span&gt;

  &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="nb"&gt;self&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;setup&lt;/span&gt;
      &lt;span class="vi"&gt;@redis&lt;/span&gt; &lt;span class="o"&gt;||=&lt;/span&gt; &lt;span class="no"&gt;Redis&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&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;method_missing&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;meth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;blk&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="vi"&gt;@redis.send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;meth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;blk&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;span class="k"&gt;end&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里的 &lt;a href="/redis" class="user-mention" title="@redis"&gt;&lt;i&gt;@&lt;/i&gt;redis&lt;/a&gt; 为类实例变量，按道理应该不会被 GC 才对，但我发现一段时间过后 &lt;a href="/redis" class="user-mention" title="@redis"&gt;&lt;i&gt;@&lt;/i&gt;redis&lt;/a&gt; 就变成&lt;code&gt;未定义&lt;/code&gt;了，所以很疑惑。&lt;/p&gt;</description>
      <author>linjunzhugg</author>
      <pubDate>Thu, 28 May 2015 15:03:27 +0800</pubDate>
      <link>https://ruby-china.org/topics/25789</link>
      <guid>https://ruby-china.org/topics/25789</guid>
    </item>
    <item>
      <title>Rails 4.2 开发环境下一旦修改 scss 内容，刷新到显示页面需要两秒？</title>
      <description>&lt;p&gt;Rails4.2 开发环境
Mac OSX 10.9&lt;/p&gt;

&lt;p&gt;一旦修改 scss 内容，刷新到显示页面需要两秒？&lt;/p&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.home&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;项目是新建的，就只有这么一个 &lt;code&gt;homes.scss&lt;/code&gt; 有内容，一旦修改，刷新到完整显示页面需要两秒以上？&lt;/p&gt;

&lt;p&gt;已经关闭&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;assets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;digest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中用到的 gem 有：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'sass-rails'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'~&amp;gt; 5.0'&lt;/span&gt;
&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;"compass-rails"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;github: &lt;/span&gt;&lt;span class="s2"&gt;"Compass/compass-rails"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;branch: &lt;/span&gt;&lt;span class="s2"&gt;"master"&lt;/span&gt;
&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'nprogress-rails'&lt;/span&gt;
&lt;span class="c1"&gt;# Use jquery as the JavaScript library&lt;/span&gt;
&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'jquery-rails'&lt;/span&gt;
&lt;span class="c1"&gt;# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks&lt;/span&gt;
&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'turbolinks'&lt;/span&gt;
&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'jquery-turbolinks'&lt;/span&gt;
&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'bootstrap-sass'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'~&amp;gt; 3.3.4'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;之后发现，当去掉&lt;code&gt;bootstrap&lt;/code&gt;时便飞速了.....&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="vi"&gt;@import&lt;/span&gt; &lt;span class="s2"&gt;"bootstrap-sprockets"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="vi"&gt;@import&lt;/span&gt; &lt;span class="s2"&gt;"bootstrap"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者将&lt;code&gt;application.scss&lt;/code&gt;修改为&lt;code&gt;application.css&lt;/code&gt;，不过这相当于没用到&lt;code&gt;bootstrap&lt;/code&gt;了&lt;/p&gt;

&lt;p&gt;有什么方法避免？&lt;/p&gt;</description>
      <author>linjunzhugg</author>
      <pubDate>Thu, 30 Apr 2015 12:00:41 +0800</pubDate>
      <link>https://ruby-china.org/topics/25382</link>
      <guid>https://ruby-china.org/topics/25382</guid>
    </item>
    <item>
      <title>关于 Bundler 的问题</title>
      <description>&lt;p&gt;本机使用环境：RVM
服务器使用环境：RVM&lt;/p&gt;

&lt;p&gt;一直以来都很疑惑：&lt;/p&gt;

&lt;p&gt;在本机上， &lt;code&gt;vendor/bundle&lt;/code&gt; 是没这个目录的。&lt;/p&gt;

&lt;p&gt;而用&lt;code&gt;mina&lt;/code&gt; 部署应用过后，&lt;code&gt;vendor/bundle&lt;/code&gt; 则有这个目录，里面是各个 Gem 的执行脚本。&lt;/p&gt;

&lt;p&gt;为什么呢？&lt;/p&gt;

&lt;p&gt;还有，比如项目里加了 &lt;code&gt;sidekiq&lt;/code&gt; 这个 GEM。&lt;/p&gt;

&lt;p&gt;那我在项目目录里执行 &lt;code&gt;bundle exec sidekiq&lt;/code&gt; 这个命令，系统是去哪里寻找这个目录的呢？&lt;/p&gt;</description>
      <author>linjunzhugg</author>
      <pubDate>Mon, 09 Feb 2015 15:08:05 +0800</pubDate>
      <link>https://ruby-china.org/topics/24181</link>
      <guid>https://ruby-china.org/topics/24181</guid>
    </item>
    <item>
      <title>to_param 功能如何更好的支持中文？</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;Topic&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;to_param&lt;/span&gt;
    &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nb"&gt;name&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="nf"&gt;parameterize&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;此时如果该 topic 名字是&lt;code&gt;i am iron man&lt;/code&gt;
那么路由便是： &lt;code&gt;/id-i-am-iron-man&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;但如果 topic 名字是中文的话： &lt;code&gt;我是钢铁侠&lt;/code&gt;
那么路由会是： &lt;code&gt;/id&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;那么如何更好的呈现「中文 url」呢？&lt;/p&gt;</description>
      <author>linjunzhugg</author>
      <pubDate>Wed, 21 Jan 2015 12:15:00 +0800</pubDate>
      <link>https://ruby-china.org/topics/23856</link>
      <guid>https://ruby-china.org/topics/23856</guid>
    </item>
    <item>
      <title>做 API 时，应不应该把 id 暴露给客户端使用？</title>
      <description>&lt;p&gt;如 teacher 表：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;属性有&lt;/span&gt;&lt;span class="err"&gt;：&lt;/span&gt;  &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;phone&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;此时有个 APP，可以增删查改 teacher。&lt;/p&gt;

&lt;p&gt;那此时该不该暴露出 id 给客户端，从而客户端可以利用该 id 发送请求删除该 teacher？&lt;/p&gt;

&lt;p&gt;还是说生成一个 &lt;code&gt;uuid&lt;/code&gt; , 利用 &lt;code&gt;uuid&lt;/code&gt; 来进行通讯呢？&lt;/p&gt;

&lt;p&gt;大伙都有什么想法呢&lt;/p&gt;</description>
      <author>linjunzhugg</author>
      <pubDate>Mon, 12 Jan 2015 11:22:17 +0800</pubDate>
      <link>https://ruby-china.org/topics/23678</link>
      <guid>https://ruby-china.org/topics/23678</guid>
    </item>
    <item>
      <title>如何备份 rvm 中的 gems ?</title>
      <description>&lt;p&gt;由于要重装机子，于是把  rvm 中的 gems 给备份了一下。&lt;/p&gt;

&lt;p&gt;路径： &lt;code&gt;~/.rvm/gems/ruby-2.0.0-p598@rails4/gems&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;结果把这个 copy 到新系统上，发觉打 &lt;code&gt;gem list&lt;/code&gt; 根本就没有列出我所 copy 的 gems。我汗。&lt;/p&gt;

&lt;p&gt;搜索了下，有人说是要复制 &lt;code&gt;~/.rvm/gems/ruby-2.0.0-p598@rails4/cache&lt;/code&gt; 这个文件夹&lt;/p&gt;

&lt;p&gt;如果是，为什么？那 gems 这个文件夹存在的意义？&lt;/p&gt;</description>
      <author>linjunzhugg</author>
      <pubDate>Thu, 08 Jan 2015 17:45:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/23617</link>
      <guid>https://ruby-china.org/topics/23617</guid>
    </item>
    <item>
      <title>使用 Mina 部署时的错误 (SOS！！)</title>
      <description>&lt;p&gt;用 mina 部署单台服务器没问题。&lt;/p&gt;

&lt;p&gt;但最近做分布式，因此需要跑一下 mina deploy 同时部署几台服务器，找了下没有相关的资料，求各位指点指点&lt;/p&gt;

&lt;p&gt;首先感谢各位的耐心解答，不过搞了许多时间，表示疑惑越来越大。其中，&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:domains&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sx"&gt;%w[192.168.0.12 192.168.0.13]&lt;/span&gt;

&lt;span class="n"&gt;domains&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;domain&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
      &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="s2"&gt;"begin to deploy server &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;domain&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
      &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:domain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;domain&lt;/span&gt;
      &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:deploy&lt;/span&gt;
      &lt;span class="n"&gt;run!&lt;/span&gt;
      &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="s2"&gt;"finish to deploy server &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;domain&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;  
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这种情况会造成：第一次循环正常，第二次循环 deploy 了两次&lt;/p&gt;

&lt;p&gt;提示信息：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;begin&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;deploy&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.12&lt;/span&gt;

   &lt;span class="n"&gt;deploying&lt;/span&gt;&lt;span class="o"&gt;.....&lt;/span&gt;

&lt;span class="n"&gt;finish&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;deploy&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.12&lt;/span&gt;

&lt;span class="k"&gt;begin&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;deploy&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.13&lt;/span&gt;

   &lt;span class="n"&gt;deploying&lt;/span&gt;&lt;span class="o"&gt;.....&lt;/span&gt;

&lt;span class="n"&gt;finish&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;deploy&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.13&lt;/span&gt;

   &lt;span class="n"&gt;deploying&lt;/span&gt;&lt;span class="o"&gt;......&lt;/span&gt;  &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.13&lt;/span&gt; &lt;span class="p"&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="nb"&gt;p&lt;/span&gt; &lt;span class="s2"&gt;"begin to deploy server '192.168.0.12'"&lt;/span&gt;
 &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:domain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'192.168.0.12'&lt;/span&gt;
 &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:deploy&lt;/span&gt;       &lt;span class="c1"&gt;#   =》 第一次 queue&lt;/span&gt;
 &lt;span class="n"&gt;run!&lt;/span&gt;      &lt;span class="c1"&gt;# 此时commands == [ 'invoke :deploy']   ( 当然这里应该是具体的命令，我笼统点写 )&lt;/span&gt;
 &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="s2"&gt;"finish to deploy server 192.168.0.12"&lt;/span&gt;  

 &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="s2"&gt;"begin to deploy server 192.168.0.13"&lt;/span&gt;
 &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:domain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.13&lt;/span&gt;
 &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:deploy&lt;/span&gt;   &lt;span class="c1"&gt;#  =&amp;gt; 第二次 queue&lt;/span&gt;
 &lt;span class="n"&gt;run!&lt;/span&gt;     &lt;span class="c1"&gt;# 此时commands == [ 'invoke :deploy',  'invoke :deploy']  &lt;/span&gt;
 &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="s2"&gt;"finish to deploy server 192.168.0.13"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;所以第二次循环时，才会执行两次的 invoke: deploy。但是我直接输出 commands，发觉第二段确实是只有 一个 [' invoke :deploy'] 而已！并且 invoke 的 task，默认是只会被引用一次。 ###那为何这里重复运行了两次呢？&lt;/p&gt;

&lt;p&gt;网上的解决方案是：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;isolate&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;domains&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;domain&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
        &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="s2"&gt;"begin to deploy server &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;domain&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
        &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:domain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;domain&lt;/span&gt;
        &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:deploy&lt;/span&gt;
        &lt;span class="n"&gt;run!&lt;/span&gt;
        &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="s2"&gt;"finish to deploy server &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;domain&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;  
    &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样就正常了，而 &lt;code&gt;isolate&lt;/code&gt; 的意思是：
&lt;code&gt;Starts a new block where new commands are collected.&lt;/code&gt;
开辟一个新的 block 来新建集合 commands。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;example&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;queue&lt;/span&gt; &lt;span class="s2"&gt;"sudo restart"&lt;/span&gt;
&lt;span class="n"&gt;queue&lt;/span&gt; &lt;span class="s2"&gt;"true"&lt;/span&gt;
&lt;span class="n"&gt;commands&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;should&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'sudo restart'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'true'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;isolate&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;queue&lt;/span&gt; &lt;span class="s2"&gt;"reload"&lt;/span&gt;
  &lt;span class="n"&gt;commands&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;should&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'reload'&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;commands&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;should&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'sudo restart'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'true'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;###但是这样子做，循环后的所有代码不都是在同一个 block 下么？( 怎么还会起做作用？？）为何不是这么做？&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;domains&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;domain&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="n"&gt;isolate&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="s2"&gt;"begin to deploy server &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;domain&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
        &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:domain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;domain&lt;/span&gt;
        &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:deploy&lt;/span&gt;
        &lt;span class="n"&gt;run!&lt;/span&gt;
        &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="s2"&gt;"finish to deploy server &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;domain&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;  
    &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;不过这样子做的话，第一次正常，第二次没有执行 invoke :deploy。&lt;/p&gt;
&lt;h2 id="更新"&gt;更新&lt;/h2&gt;
&lt;p&gt;做了很多次试验，发现最终总是会多部署最后一个 server。看来这是跟&lt;code&gt;invoke :deploy&lt;/code&gt;这个特殊 task 有关了。&lt;/p&gt;</description>
      <author>linjunzhugg</author>
      <pubDate>Sun, 23 Nov 2014 11:29:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/22818</link>
      <guid>https://ruby-china.org/topics/22818</guid>
    </item>
    <item>
      <title>右上角「搜索」功能异常</title>
      <description>&lt;p&gt;环境：Mac OS X 10.10&lt;/p&gt;

&lt;p&gt;浏览器：Chrome&lt;/p&gt;

&lt;p&gt;使用搜索时，自动跳往 Google 搜索，正常。&lt;/p&gt;

&lt;p&gt;当我使用：safari 的时候。&lt;/p&gt;

&lt;p&gt;会跳往链接&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="ss"&gt;:/&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="n"&gt;china&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;org&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;search?q&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;错误信息处理&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后 404&lt;/p&gt;</description>
      <author>linjunzhugg</author>
      <pubDate>Tue, 28 Oct 2014 20:50:59 +0800</pubDate>
      <link>https://ruby-china.org/topics/22320</link>
      <guid>https://ruby-china.org/topics/22320</guid>
    </item>
    <item>
      <title>对 Rails 中「缓存失效」的一点疑惑</title>
      <description>&lt;p&gt;我们知道，现在要让缓存自动过期，主要是根据资源的「cache_key」&lt;/p&gt;

&lt;p&gt;一般的请求如下：&lt;/p&gt;

&lt;p&gt;&lt;code&gt;浏览器请求 =&amp;gt; 服务器渲染页面时拿着cache_key =&amp;gt; 进缓存区查找 =&amp;gt; 命中返回&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;那么，服务器是在什么时候知道资源更新了呢？&lt;/p&gt;

&lt;p&gt;我有以下三种想法：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;资源更新 =&amp;gt; 自动通知到缓存区，使资源的缓存失效&lt;/li&gt;
&lt;li&gt;资源更新 =&amp;gt; 自动通知到页面的 cache 块，修改其 cache_key ( 计算 cache_key 时自动查询资源出来），这样拿着新的 cache_key 进缓存区查找时自然就找不到资源了。&lt;/li&gt;
&lt;li&gt;服务器拿着 cache_key 进缓存块查找 =&amp;gt; 命中资源 =&amp;gt; 查询资源是否有更新过 =&amp;gt; 再决定是否重新查找 or 直接返回&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;不知道哪种对？还是都错呢？&lt;/p&gt;</description>
      <author>linjunzhugg</author>
      <pubDate>Sat, 04 Oct 2014 13:33:03 +0800</pubDate>
      <link>https://ruby-china.org/topics/21843</link>
      <guid>https://ruby-china.org/topics/21843</guid>
    </item>
    <item>
      <title>Carrierwave 上传的文件名之白名单正则表达式的疑惑</title>
      <description>&lt;p&gt;在官网中有这么一段话：&lt;/p&gt;

&lt;p&gt;CarrierWave 对上传文件名默认只提供英文字母，阿拉伯数字以及“-+_." 作为白名单字符。如果要自定义，可以重写 sanitize_regexp，该函数的正则会匹配所有即将要过滤的字符&lt;/p&gt;

&lt;p&gt;于是提供了以下这个正则：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;CarrierWave&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;SanitizedFile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sanitize_regexp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/[^[:word:]\.\-\+]/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是我对 &lt;code&gt;^[:word:]&lt;/code&gt; 这个正则很疑惑，无法理解。&lt;/p&gt;

&lt;p&gt;在 (&lt;a href="http://www.rubular.com/" rel="nofollow" target="_blank"&gt;http://www.rubular.com/&lt;/a&gt;) 这个网站实验了下，发觉可以匹配到 单引号 和 空格 以及其他字符。&lt;/p&gt;

&lt;p&gt;请问下这个正则应该如何理解？&lt;/p&gt;</description>
      <author>linjunzhugg</author>
      <pubDate>Fri, 12 Sep 2014 23:54:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/21512</link>
      <guid>https://ruby-china.org/topics/21512</guid>
    </item>
    <item>
      <title>kaminari 的分页参数问题</title>
      <description>&lt;p&gt;现在在做一个资讯模块。&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;URL为：  /articles
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;资讯有不同的标签，如：iphone, android&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;URL为:  /articles?tag=iphone
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;那么此时我用 kaminari 来做分页&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%= paginate @articles %&amp;gt;
```

```
此时的URL会是：  /articles?page=1
```

那么在标签下就做不了分页，如： /articles?tag=iphone&amp;amp;page=1

请问要如何解决这种情况呢？搜索了下好像大家都没这种疑问。

有想过通过 /article_tag  路由来查找标签下的文章，但这样会在 article_tags_controller 中有重复的查询代码。

help





#### 问题解决

## 情况说明
首先要自我反思下，问题描述得不清楚。我的分页是这么写的：

```ruby
 &amp;lt;%= link_to_previous_page @presenter.articles, '上一页',
        class: 'previous-page' %&amp;gt;
```

这种情况是不会自动附带上 URL 上的参数的，并且也不能自定义 view ，因为这货最终生成的就只是一个 &amp;lt;a&amp;gt; 链接

而平常我们使用的分页是这么些的：
```ruby
&amp;lt;%= paginate @users %&amp;gt;
```

这种情况呢，就会自动附带上 URL 上的参数，并且能够自定义 view。

（这就是为什么 Rei 在回答我的时候说他会自动附带上参数的原因，原谅我没有把问题表述清楚 :cry:  ( 丫根本就是表述错误啊！  (╯‵□′)╯︵┻━┻ )）

## 解决方法

在链接中加入 params 参数
```ruby
 &amp;lt;%= link_to_previous_page @presenter.articles, '上一页',
        class: 'previous-page', params: { channel: params[:channel } %&amp;gt;
```
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>linjunzhugg</author>
      <pubDate>Fri, 29 Aug 2014 11:44:16 +0800</pubDate>
      <link>https://ruby-china.org/topics/21282</link>
      <guid>https://ruby-china.org/topics/21282</guid>
    </item>
    <item>
      <title>关于 Turbolinks 的后退失效问题。</title>
      <description>&lt;p&gt;如题。&lt;/p&gt;

&lt;p&gt;环境：ruby2.0 + rails4.1&lt;/p&gt;

&lt;p&gt;描述：已经在线上 production 环境，单击浏览器（chrome) 后退，整个页面不会刷新，内容没变化。&lt;/p&gt;

&lt;p&gt;求 help&lt;/p&gt;</description>
      <author>linjunzhugg</author>
      <pubDate>Tue, 26 Aug 2014 11:08:24 +0800</pubDate>
      <link>https://ruby-china.org/topics/21220</link>
      <guid>https://ruby-china.org/topics/21220</guid>
    </item>
    <item>
      <title>关于 Rails 中「scope」和「where」的两个疑问</title>
      <description>&lt;p&gt;环境：Rails4.0 + Ruby2.0&lt;/p&gt;

&lt;p&gt;##问题 1：
有这么一段代码&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;Article&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;:recent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;find_by&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="ss"&gt;name: &lt;/span&gt;&lt;span class="s1"&gt;'rails'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="no"&gt;Article&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;recent&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当数据库中存在 name: 'rails' 的记录时，一切正常。
但是当数据中不存在 name: 'rails' 的记录时，返回了 all 数据。&lt;/p&gt;

&lt;p&gt;请问是什么原因？&lt;/p&gt;

&lt;p&gt;##问题 2：&lt;/p&gt;

&lt;p&gt;在 model 里，有个类型为「boolean」的属性。执行语句：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Article.where( home: true )    =&amp;gt;  返回正常返回 home 为 true 的记录)

SQL语句为：  select xxx from xxx where 'article.home' = 'f'

Article.where( home: false)     =&amp;gt; 返回不正常（数据库是有 home 为 false 的记录的）但是返回为空。

SQL语句为：  select xxx from xxx where 'article.home' = 't'

Article.where( home: 'false') =&amp;gt; 返回正常。
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;请问为什么第二步会返回不正常？明明数据库是有 home 为 false 的记录的，却返回为空&lt;/li&gt;
&lt;li&gt;为什么 sql 语句的查询方式有点奇怪，不是应该为  where 'article.home' = true 么？&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>linjunzhugg</author>
      <pubDate>Sun, 17 Aug 2014 22:27:52 +0800</pubDate>
      <link>https://ruby-china.org/topics/21072</link>
      <guid>https://ruby-china.org/topics/21072</guid>
    </item>
  </channel>
</rss>
