<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>chairy11 (YBY)</title>
    <link>https://ruby-china.org/chairy11</link>
    <description>你若盛开, 清风自来.</description>
    <language>en-us</language>
    <item>
      <title>来热闹热闹下……怎么看今日刷屏热点《就算老公一毛钱股份都没拿到,在我心里,他依然是最牛逼的创业者》</title>
      <description>&lt;p&gt;是时候来活跃活跃气氛了！
今天正好不忙，紧跟热点看了几个相关帖，各个视角，挺有意思的。
大家都怎么看？  &lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;br&gt; &lt;/p&gt;
&lt;h2 id="摘要"&gt;摘要&lt;/h2&gt;&lt;h5 id="热点原文："&gt;热点原文：&lt;/h5&gt;
&lt;p&gt;L 女讲述自己丈夫 H 先生作为公司第二个员工兼联合创始人兼技术负责人，辛苦奋斗创业 7 年，去与 CEO 谈判要股权失败的故事，文章结尾为丈夫求职，说要重新开始（求职意向为技术负责人）。  &lt;/p&gt;

&lt;p&gt;&lt;br&gt; &lt;/p&gt;
&lt;h5 id="看点一：H先生是不是技术负责人。"&gt;看点一：H 先生是不是技术负责人。&lt;/h5&gt;
&lt;p&gt;该公司表示从来没有 CTO，并在 2016 年年中公开招聘 CTO，说明该先生并非 CTO。同事称他只是后端主程，公司元老。&lt;/p&gt;

&lt;p&gt;&lt;br&gt; &lt;/p&gt;
&lt;h5 id="看点二：H先生是不是联合创始人。"&gt;看点二：H 先生是不是联合创始人。&lt;/h5&gt;
&lt;p&gt;该 CEO 未承诺过。但有没有引导 H 先生自认为是，就难说。&lt;br&gt;
    「你自以为是联合创始人，其实你就是个员工，只不过资历老了点，别自作多情」。何况后面引入更多更重要更有能力的人，也未得股份。&lt;/p&gt;

&lt;p&gt;&lt;br&gt; &lt;/p&gt;
&lt;h5 id="看点三：H先生对该公司有没有贡献"&gt;看点三：H 先生对该公司有没有贡献&lt;/h5&gt;
&lt;p&gt;前同事表示，前期的确立功，但当时公司在惨淡状况下。后来使公司发迹的一款游戏中，她老公反而是拖了后腿，游戏如日中天玩家竞赛时却整天宕机。当时其它核心成员要求换人，但 CEO 念在兄弟情深，不肯换人。
    前同事表示 H 先生是做 PHP 的，但这个语言已经跟不上如今游戏的技术潮流……&lt;/p&gt;

&lt;p&gt;&amp;gt;「至于为什么最终没有获得股权，对方表示“韩冬辉能力一般，到公司发展后期已经很难再跟上公司的步伐，并且在分红之后又开始不怎么干活了。”」&lt;/p&gt;

&lt;p&gt;&lt;br&gt;     &lt;/p&gt;
&lt;h5 id="看点四：H先生有没有得到相应回报"&gt;看点四：H 先生有没有得到相应回报&lt;/h5&gt;
&lt;p&gt;H 先生毕业于黑龙江民办本科，毕业后两年加入此公司。开始时工资几 K，后来 15K，目前税后 20K+。&lt;br&gt;
    其中 2014 年公司一款游戏爆红后，当年分红税后 200W+。但前同事认为，他当时处于拖后腿情况，CEO 大锅饭式平均分配让人不满，H 先生不该得到这么多。
    而公司这几年发民也不好。
     &amp;gt; 「至于为什么最终没有获得股权，对方表示“韩冬辉能力一般，到公司发展后期已经很难再跟上公司的步伐，并且在分红之后又开始不怎么干活了。”」&lt;/p&gt;

&lt;p&gt;&lt;br&gt; &lt;/p&gt;
&lt;h5 id="看点四：H先生的老婆是不是真的活得那么惨"&gt;看点四：H 先生的老婆是不是真的活得那么惨&lt;/h5&gt;
&lt;p&gt;L 女在帖中陈述自己生活不易，艰苦奋斗。
     但她前同事爆料，L 女简历作假，日常小心思多，爱慕虚荣。念 EMBA 扬言目标是要找金龟婿，参加过移动互联网选秀（照片很胸），后网络认识她现在的老公，四个月闪婚（貌似奉子成婚），毛里求斯度蜜月，Vera Wang 婚纱，买了个奔驰，各种 LV 包包，朋友各种炫富。
     此女却在这 10W+ 的热点帖哭穷，说在北京没买房，房租要 9 千块，老家房贷也要钱，自己全职家庭主妇，老公税后 20K+ 的月薪不够钱养娃。
     原文强调分红花后只剩下 40W，却不肯承认当初分红总额是税后 200W+。  &lt;/p&gt;

&lt;p&gt;&lt;br&gt; 
&lt;br&gt; &lt;/p&gt;
&lt;h2 id="综合几个帖子，我个人感性认识："&gt;综合几个帖子，我个人感性认识：&lt;/h2&gt;
&lt;p&gt;拜金女遇上假潜力股。拜金女一心想找个未来的李彦宏。&lt;br&gt;
      L 女遇上 H 先生，H 先生自知 L 女拜金，给了 L 女潜力股错觉，亦因马上得到 200W+ 的分红的事实，及 H 先生大方为她花钱，于是干柴烈火，迅速闪婚。  &lt;/p&gt;

&lt;p&gt;事实上，H 先生在公司的发展并不如意，但怕失去 L 女的爱慕，选择了隐瞒 + 引导 L 女错觉。&lt;br&gt;
      H 先生技术基础一般，多年又没有迅速提高，技术水平跟不上发展。（也许如果是 CTO，也不需要提高技术水平，但他实质是主程，那就要写代码了。）在公司亦被其它核心人员边缘化。&lt;br&gt;
     可能 H 先生早知地位不保，碍于面子，不敢告诉老婆而已。&lt;/p&gt;

&lt;p&gt;L 女以为老公能年年分红 200W+  , 大手大脚地花掉，怎知这两年再没有如此甜头，于是想让老公要股份，老公说要不来，老婆说「我出马」！想想还是微信有力量，酝酿爆款帖一个，利用公众同情，既得到股份或补偿，也得到好的新工作。&lt;/p&gt;

&lt;p&gt;&lt;br&gt; 
注：个人凭记忆总结的摘要，可能有些偏差。  &lt;/p&gt;

&lt;p&gt;&lt;br&gt; 
&lt;br&gt; &lt;/p&gt;
&lt;h2 id="附相关帖子："&gt;附相关帖子：&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://mp.weixin.qq.com/s/C5aDa0pzoUGk6_4q-qKCaQ" rel="nofollow" target="_blank" title=""&gt;《就算老公一毛钱股份都没拿到，在我心里，他依然是最牛逼的创业者》&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://mp.weixin.qq.com/s/KFw_cEb9Wt0QVjJInKINBA?from=singlemessage&amp;amp;isappinstalled=1" rel="nofollow" target="_blank" title=""&gt;《作为除当事人外最有权力发言的人，谈谈《就算老公一毛钱股份都没拿到，在我心里，他依然是最牛逼的创业者》》&lt;/a&gt;  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.zhihu.com/question/56178614/answer/148217493" rel="nofollow" target="_blank" title=""&gt;知乎上当事人回应&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://mp.weixin.qq.com/s/es6yLwkNleHSQB7R5PF_JQ" rel="nofollow" target="_blank" title=""&gt;《知情人士爆尿：那个说自己老公一毛钱股份没拿到还觉得他最牛逼的谁 我真是大写加粗的呵呵哒了》（来自女主同事）&lt;/a&gt;  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://mp.weixin.qq.com/s/S4319GyRrLgn9InN6KUiag" rel="nofollow" target="_blank" title=""&gt;《对那个创业者的妻子提一个问题，一个建议》&lt;/a&gt;  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.zhihu.com/question/56178614/answer/148048168" rel="nofollow" target="_blank" title=""&gt;知乎中的某一个回答（来自男主同事）（此好回答已经被删了，待我找到原文记录再换链接）&lt;/a&gt;  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;[模拟 CEO 立场写的一个帖，原帖已删除，暂未找到新链接 ()  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://mp.weixin.qq.com/s/vFDSSB4lwkbWluCw57iJWQ" rel="nofollow" target="_blank" title=""&gt;《她没有成为合伙人的女人，也没有成为一个可以合伙的女人》&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>chairy11</author>
      <pubDate>Thu, 23 Feb 2017 17:41:26 +0800</pubDate>
      <link>https://ruby-china.org/topics/32369</link>
      <guid>https://ruby-china.org/topics/32369</guid>
    </item>
    <item>
      <title>Rails + Node.js + Angular.js 怎样结合？</title>
      <description>&lt;p&gt;问个蠢蠢的问题，有没有什么框架和开源项目，集合 Rails 的快，nodejs 的高并发，前端还用 angularjs 的？&lt;/p&gt;</description>
      <author>chairy11</author>
      <pubDate>Fri, 30 Sep 2016 10:25:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/31211</link>
      <guid>https://ruby-china.org/topics/31211</guid>
    </item>
    <item>
      <title>有人用 Ionic 开发 App 吗？请教 overflow-y: scroll;在手机屏幕上不生效怎么办？</title>
      <description>&lt;p&gt;有人用 ionic 开发 APP 吗？
整个界面 ionic 设置了 scroll，然后页面里面我还有一个 div，这个也想设置为可滚动的。
如图：&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/af20f80a526ce4a72e03d3d368fcacf1.png" title="" alt=""&gt;&lt;/p&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="nc"&gt;.doughnut-legend&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
                        &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                        &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                        &lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                        &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;130px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                        &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;150px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                        &lt;span class="nl"&gt;overflow-y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;scroll&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                        &lt;span class="na"&gt;-webkit-overflow-scrolling&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;touch&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;在用 chrome 调试时，是能滚动的。但我发现，mac 上，我是用三个手指滚动整个界面，用两个手指滚动这个 div，所以看起来正常。&lt;/p&gt;

&lt;p&gt;但到手机屏幕上，就是单个手指触摸滚动的，可能是两者无法区分？反正就是，手机上，该页面这个内部 div 就无法 scroll 了……&lt;/p&gt;

&lt;p&gt;大家见过这个情况么？有解么？&lt;/p&gt;</description>
      <author>chairy11</author>
      <pubDate>Fri, 25 Dec 2015 21:36:14 +0800</pubDate>
      <link>https://ruby-china.org/topics/28526</link>
      <guid>https://ruby-china.org/topics/28526</guid>
    </item>
    <item>
      <title>有没有 Ionic 2 + AngularJS2 + Rails 5 的好开源项目可以学习一下？</title>
      <description>&lt;p&gt;如题啊！好期待这样的组合，也准备用……&lt;/p&gt;</description>
      <author>chairy11</author>
      <pubDate>Mon, 30 Nov 2015 09:56:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/28238</link>
      <guid>https://ruby-china.org/topics/28238</guid>
    </item>
    <item>
      <title>[已解决]  有人用过 chart.js 展示特大数字吗？能设置 scaleGridLine 吗？</title>
      <description>&lt;h2 id="问题"&gt;问题&lt;/h2&gt;
&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/a7d65d6ea508668d37cee520d43d5aef.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;要用线图，用了 chart.js，需要背景格。
设置了&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;scaleGridLineColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#333&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="nx"&gt;scaleGridLineWidth&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="nx"&gt;scaleLineColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#333&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;发现如果数字小，就能正常显示，如第二幅图。
但如果数字太大，比如我要显示的都是上百万的资产，就没法显示正常的 grid。我想是不是因为背景格太密集了，所以表现为一整片的颜色。
（还是排查好久，才得到这个 bug 的结论：原因是数字太大）&lt;/p&gt;

&lt;p&gt;本来想试试那个：&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Boolean - If we want to override with a hard coded scale&lt;/span&gt;
 &lt;span class="nx"&gt;scaleOverride&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="c1"&gt;// ** Required if scaleOverride is true **&lt;/span&gt;
 &lt;span class="c1"&gt;// Number - The number of steps in a hard coded scale&lt;/span&gt;
 &lt;span class="nx"&gt;scaleSteps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="c1"&gt;// Number - The value jump in the hard coded scale&lt;/span&gt;
 &lt;span class="nx"&gt;scaleStepWidth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="c1"&gt;// Number - The scale starting value&lt;/span&gt;
 &lt;span class="nx"&gt;scaleStartValue&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这能把 grid 横线控制在 10 根，但 data 的数量级其实是未知的，如果设定了跨度为 1000，那可能一些大的数值就出不来，线根本没有显示在图的范围内。
而且可能计算量太大了，这样设置常常死机。&lt;/p&gt;

&lt;p&gt;那大家有看到可以设置这个 grid 的方案吗？&lt;/p&gt;

&lt;p&gt;注：想 google 都不知道怎么描述，还是求助万能的 ruby-china 啦！急啊！&lt;/p&gt;
&lt;h2 id="解决方案"&gt;解决方案&lt;/h2&gt;
&lt;p&gt;参考帖子：
&lt;a href="http://stackoverflow.com/questions/18695382/how-to-display-only-integers-in-javascript-chart-js" rel="nofollow" target="_blank" title=""&gt;How to display only integers in javascript chart.js&lt;/a&gt;
&lt;a href="http://stackoverflow.com/questions/15751571/how-to-change-the-y-axis-values-from-real-numbers-to-integer-in-chartjs" rel="nofollow" target="_blank" title=""&gt;how to change the Y-axis values from real numbers to integer in chartjs?&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;思路都是差不多的&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;max&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="c1"&gt;//heighest value of your data&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;step&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="c1"&gt;// According to your requirement&lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Chart&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nc"&gt;Bar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;plotData&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;scaleOverride&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;scaleSteps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;step&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;scaleStepWidth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ceil&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;max&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;step&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="na"&gt;scaleStartValue&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>chairy11</author>
      <pubDate>Thu, 12 Nov 2015 11:37:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/28032</link>
      <guid>https://ruby-china.org/topics/28032</guid>
    </item>
    <item>
      <title>大家觉得 AngularJS 好吗？</title>
      <description>&lt;p&gt;最近在学习 AngularJS，真是无力吐槽……
感觉 js 真的很罗索，一层一层，我尤其总是搞不懂各种 return 之后还有 return，各种名字各种长，还有层层的{});……&lt;/p&gt;

&lt;p&gt;他们说 AngularJS 只要思路理解了，其实也不难……
大概我还在看 codeschool 的水平，总觉套各种 directive 写起来还不如用普通的 html，快在哪里？controller 啊 routes 啊，各种罗索……&lt;/p&gt;</description>
      <author>chairy11</author>
      <pubDate>Fri, 09 Oct 2015 10:43:28 +0800</pubDate>
      <link>https://ruby-china.org/topics/27590</link>
      <guid>https://ruby-china.org/topics/27590</guid>
    </item>
    <item>
      <title>用 Node 4.1.1，各种问题</title>
      <description>&lt;p&gt;正准备学 ionic，然后各种问题，貌似都是因为 node 版本太新了？&lt;/p&gt;
&lt;h2 id="问题一"&gt;问题一&lt;/h2&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;Error: &lt;span class="sb"&gt;`&lt;/span&gt;libsass&lt;span class="sb"&gt;`&lt;/span&gt; bindings not found. Try reinstalling &lt;span class="sb"&gt;`&lt;/span&gt;node-sass&lt;span class="sb"&gt;`&lt;/span&gt;?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;尝试的解决方案是跟着 &lt;a href="https://github.com/sass/libsass/wiki/Building-on-Mac-OS-X" rel="nofollow" target="_blank" title=""&gt;sass 官方教程：Building on Mac OS X&lt;/a&gt;做的，但依然出现同样的错误提示。
我知道我肯定已经装了 libsass 的，但 binding 这是怎么设置？
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig 也是设置过了的。&lt;/p&gt;

&lt;p&gt;而且&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;ls &lt;/span&gt;node-sass
a_project@1.0.0 /Users/yebiying/Code/a_project
└─┬ gulp-sass@1.3.3
  └── node-sass@2.1.1 
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="问题二"&gt;问题二&lt;/h2&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;gyp ERR! stack Error: &lt;span class="sb"&gt;`&lt;/span&gt;make&lt;span class="sb"&gt;`&lt;/span&gt; failed with &lt;span class="nb"&gt;exit &lt;/span&gt;code: 2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;完整版本是&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; make: &lt;span class="k"&gt;***&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;Release/obj.target/contextify/src/contextify.o] Error 1
gyp ERR! build error 
gyp ERR! stack Error: &lt;span class="sb"&gt;`&lt;/span&gt;make&lt;span class="sb"&gt;`&lt;/span&gt; failed with &lt;span class="nb"&gt;exit &lt;/span&gt;code: 2
gyp ERR! stack     at ChildProcess.onExit &lt;span class="o"&gt;(&lt;/span&gt;/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23&lt;span class="o"&gt;)&lt;/span&gt;
gyp ERR! stack     at emitTwo &lt;span class="o"&gt;(&lt;/span&gt;events.js:87:13&lt;span class="o"&gt;)&lt;/span&gt;
gyp ERR! stack     at ChildProcess.emit &lt;span class="o"&gt;(&lt;/span&gt;events.js:172:7&lt;span class="o"&gt;)&lt;/span&gt;
gyp ERR! stack     at Process.ChildProcess._handle.onexit &lt;span class="o"&gt;(&lt;/span&gt;internal/child_process.js:200:12&lt;span class="o"&gt;)&lt;/span&gt;
gyp ERR! System Darwin 14.3.0
gyp ERR! &lt;span class="nb"&gt;command&lt;/span&gt; &lt;span class="s2"&gt;"/usr/local/bin/node"&lt;/span&gt; &lt;span class="s2"&gt;"/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js"&lt;/span&gt; &lt;span class="s2"&gt;"rebuild"&lt;/span&gt;
gyp ERR! cwd  /Users/yebiying/Code/a_project/node_modules/contextify
gyp ERR! node &lt;span class="nt"&gt;-v&lt;/span&gt; v4.1.1
gyp ERR! node-gyp &lt;span class="nt"&gt;-v&lt;/span&gt; v3.0.3
gyp ERR! not ok 
npm ERR! Darwin 14.3.0
npm ERR! argv &lt;span class="s2"&gt;"/usr/local/bin/node"&lt;/span&gt; &lt;span class="s2"&gt;"/usr/local/bin/npm"&lt;/span&gt; &lt;span class="s2"&gt;"install"&lt;/span&gt; &lt;span class="s2"&gt;"contextify"&lt;/span&gt;
npm ERR! node v4.1.1
npm ERR! npm  v2.14.4
npm ERR! code ELIFECYCLE

npm ERR! contextify@0.1.14 &lt;span class="nb"&gt;install&lt;/span&gt;: &lt;span class="sb"&gt;`&lt;/span&gt;node-gyp rebuild&lt;span class="sb"&gt;`&lt;/span&gt;
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the contextify@0.1.14 &lt;span class="nb"&gt;install &lt;/span&gt;script &lt;span class="s1"&gt;'node-gyp rebuild'&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
npm ERR! This is most likely a problem with the contextify package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner &lt;span class="nb"&gt;ls &lt;/span&gt;contextify
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/yebiying/Code/a_project/npm-debug.log

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;乱七八糟试了很多，比如什么&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo npm i -g node-inspector --unsafe-perm&lt;/code&gt;
&lt;code&gt;npm install contextify&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;但&lt;a href="https://github.com/masayuki0812/c3/issues/1392" rel="nofollow" target="_blank" title=""&gt;这个帖子&lt;/a&gt;有人说『there appears to be an issue with the subdependency contextify installing on node v4. 』好吧，看来版本太新就是坑啊！&lt;/p&gt;

&lt;p&gt;要不我还是暂时先卸载 v4.1.1，用回 v0.12.7 吧……好惨……
呜呜呜，再也不随便升级了……&lt;/p&gt;</description>
      <author>chairy11</author>
      <pubDate>Fri, 02 Oct 2015 11:33:49 +0800</pubDate>
      <link>https://ruby-china.org/topics/27539</link>
      <guid>https://ruby-china.org/topics/27539</guid>
    </item>
    <item>
      <title>诡异的 Node 版本</title>
      <description>&lt;p&gt;上个版本 node 是 v0.12.4，升个级，直接变成 v4.1.1，这跨度……&lt;/p&gt;

&lt;p&gt;查了查，node 0.12.7 之后，就直接 4.0.0……&lt;/p&gt;

&lt;p&gt;这都咋想的……&lt;/p&gt;</description>
      <author>chairy11</author>
      <pubDate>Thu, 01 Oct 2015 11:36:54 +0800</pubDate>
      <link>https://ruby-china.org/topics/27532</link>
      <guid>https://ruby-china.org/topics/27532</guid>
    </item>
    <item>
      <title>passenger 的正确启动方式？怎样才能指向 current 版本？capinstrano 自动启动的方法？</title>
      <description>&lt;p&gt;好吧，我错了……
又七折腾八折腾，把自己弄晕了……&lt;/p&gt;
&lt;h2 id="问题"&gt;问题&lt;/h2&gt;
&lt;p&gt;我用一键部署，以前，基本只需要&lt;code&gt;cap production deploy&lt;/code&gt;就万事 OK 了，也不用自己启动 passsenger 的。
但这次，总提示我：&lt;code&gt;There are no Phusion Passenger-served applications running whose paths begin with '/app/www/my_project'.&lt;/code&gt;
没法，只好手动启动 passenger 了，用了一句&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;rvmsudo&lt;/span&gt; &lt;span class="n"&gt;passenger&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="n"&gt;production&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"root"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;成功倒是成功了。可以从外网访问了。
但一旦我部署新的版本，它会仍然指向旧的版本，而不是 current&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;passenger&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt;

&lt;span class="no"&gt;Version&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;5.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;
&lt;span class="no"&gt;Date&lt;/span&gt;    &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2015&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt; &lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;35&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;03&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;0800&lt;/span&gt;
&lt;span class="no"&gt;Instance&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;H21U8gfz&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nginx&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1.8&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="no"&gt;Phusion_Passenger&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;5.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="o"&gt;-----------&lt;/span&gt; &lt;span class="no"&gt;General&lt;/span&gt; &lt;span class="n"&gt;information&lt;/span&gt; &lt;span class="o"&gt;-----------&lt;/span&gt;
&lt;span class="no"&gt;Max&lt;/span&gt; &lt;span class="n"&gt;pool&lt;/span&gt; &lt;span class="n"&gt;size&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;
&lt;span class="no"&gt;App&lt;/span&gt; &lt;span class="n"&gt;groups&lt;/span&gt;    &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="no"&gt;Processes&lt;/span&gt;     &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="no"&gt;Requests&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;top&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;level&lt;/span&gt; &lt;span class="n"&gt;queue&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="o"&gt;-----------&lt;/span&gt; &lt;span class="no"&gt;Application&lt;/span&gt; &lt;span class="n"&gt;groups&lt;/span&gt; &lt;span class="o"&gt;-----------&lt;/span&gt;
&lt;span class="sr"&gt;/app/&lt;/span&gt;&lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;my_project&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;releases&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;20150909024630&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="kp"&gt;public&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;production&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;

&lt;span class="no"&gt;App&lt;/span&gt; &lt;span class="ss"&gt;root: &lt;/span&gt;&lt;span class="sr"&gt;/app/&lt;/span&gt;&lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;my_project&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;releases&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;20150909024630&lt;/span&gt;
  &lt;span class="no"&gt;Requests&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="ss"&gt;queue: &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
  &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="no"&gt;PID&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;28542&lt;/span&gt;   &lt;span class="no"&gt;Sessions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;       &lt;span class="no"&gt;Processed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt;      &lt;span class="no"&gt;Uptime&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;
    &lt;span class="no"&gt;CPU&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;      &lt;span class="no"&gt;Memory&lt;/span&gt;  &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="no"&gt;M&lt;/span&gt;    &lt;span class="no"&gt;Last&lt;/span&gt; &lt;span class="ss"&gt;used: &lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="n"&gt;ago&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;怎样才能让 passenger 指向 current?&lt;/p&gt;

&lt;p&gt;而且我现在也知道怎么 stop，好像用&lt;code&gt;rvmsudo passenger stop&lt;/code&gt;不生效，好晕好晕……&lt;/p&gt;

&lt;p&gt;注：nginx 配置我是指向了正确位置的&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="sr"&gt;/app/&lt;/span&gt;&lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;my_project&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;current&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="kp"&gt;public&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;passenger_enabled&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;rails_env&lt;/span&gt; &lt;span class="n"&gt;production&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;hold 不住了……明明以前一键部署很顺利的，现在不知道为什么……是 cap 版本升级了？passenger 版本升级了？还是 nginx 版本升级了？多了很多新的东西？&lt;/p&gt;
&lt;h2 id="问题更新"&gt;问题更新&lt;/h2&gt;
&lt;p&gt;我尝试进 current 目录下手动启动 passenger，它还是具体当前 current 指向的具体版本，下次 current 指向的版本更新，passenger 指向的版本不更新。&lt;/p&gt;

&lt;p&gt;如果尝试在项目目录下手动启动 passenger，会显示&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="no"&gt;E&lt;/span&gt; &lt;span class="n"&gt;passenger&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt;
&lt;span class="no"&gt;Version&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;5.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;
&lt;span class="no"&gt;Date&lt;/span&gt;    &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2015&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;54&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;0800&lt;/span&gt;
&lt;span class="no"&gt;Instance&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;n0pR0FhO&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nginx&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1.8&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="no"&gt;Phusion_Passenger&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;5.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="o"&gt;-----------&lt;/span&gt; &lt;span class="no"&gt;General&lt;/span&gt; &lt;span class="n"&gt;information&lt;/span&gt; &lt;span class="o"&gt;-----------&lt;/span&gt;
&lt;span class="no"&gt;Max&lt;/span&gt; &lt;span class="n"&gt;pool&lt;/span&gt; &lt;span class="n"&gt;size&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;
&lt;span class="no"&gt;App&lt;/span&gt; &lt;span class="n"&gt;groups&lt;/span&gt;    &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="no"&gt;Processes&lt;/span&gt;     &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="no"&gt;Requests&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;top&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;level&lt;/span&gt; &lt;span class="n"&gt;queue&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="o"&gt;-----------&lt;/span&gt; &lt;span class="no"&gt;Application&lt;/span&gt; &lt;span class="n"&gt;groups&lt;/span&gt; &lt;span class="o"&gt;-----------&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;根本没有指向具体一个 app&lt;/p&gt;

&lt;p&gt;capistrano 自动启动 passenger 的机制是怎样的么？以前我都是 cap production deploy 时它自动就启动的啊，现在为什么不启动了？&lt;/p&gt;</description>
      <author>chairy11</author>
      <pubDate>Wed, 09 Sep 2015 17:51:39 +0800</pubDate>
      <link>https://ruby-china.org/topics/27256</link>
      <guid>https://ruby-china.org/topics/27256</guid>
    </item>
    <item>
      <title>真是忧伤……老以为部署不对，结果发现是运维给的公网 IP 不对……</title>
      <description>&lt;p&gt;真是忧伤……&lt;/p&gt;

&lt;p&gt;昨天一键部署，明明显示成功了，就是网页就是打不开……&lt;/p&gt;

&lt;p&gt;想着没准我七折腾八折腾，把啥给弄坏了，算了，没力气折腾……&lt;/p&gt;

&lt;p&gt;让运维给我一键恢复到净机，又重复部署一遍……
发现还是打不开……
问运维，IP 地址对吗？&lt;/p&gt;

&lt;p&gt;然后运维再问别人，原来阿里云外面还套个什么负载均衡，要用另一个对应的 IP 才能正常访问……&lt;/p&gt;

&lt;p&gt;好忧伤……真的好忧伤……
Bug 果然可以出现在四面八方……比如，IP 地址给少一个……&lt;/p&gt;</description>
      <author>chairy11</author>
      <pubDate>Tue, 08 Sep 2015 17:22:55 +0800</pubDate>
      <link>https://ruby-china.org/topics/27241</link>
      <guid>https://ruby-china.org/topics/27241</guid>
    </item>
    <item>
      <title>[已解决] 没法启动 Passenger? 找不到 Gem? </title>
      <description>&lt;h2 id="问题"&gt;问题&lt;/h2&gt;
&lt;p&gt;用 capistrano 一键部署。
我明明是已经装了 passenger 了的。&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt; &lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;ps&lt;/span&gt; &lt;span class="n"&gt;aux&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;grep&lt;/span&gt; &lt;span class="n"&gt;flying&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;passenger&lt;/span&gt;
    &lt;span class="n"&gt;deploy&lt;/span&gt;   &lt;span class="mi"&gt;27378&lt;/span&gt;  &lt;span class="mf"&gt;0.0&lt;/span&gt;  &lt;span class="mf"&gt;0.0&lt;/span&gt;  &lt;span class="mi"&gt;13416&lt;/span&gt;   &lt;span class="mi"&gt;936&lt;/span&gt; &lt;span class="n"&gt;pts&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;    &lt;span class="no"&gt;S&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;   &lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;11&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;00&lt;/span&gt; &lt;span class="n"&gt;grep&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;flying&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;passenger&lt;/span&gt;

&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;which&lt;/span&gt; &lt;span class="n"&gt;passenger&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;
   &lt;span class="sr"&gt;/home/&lt;/span&gt;&lt;span class="n"&gt;deploy&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;gems&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.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&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;passenger&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;

&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="sr"&gt;/home/&lt;/span&gt;&lt;span class="n"&gt;deploy&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;gems&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.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gems&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;ls&lt;/span&gt;
&lt;span class="n"&gt;bundle&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;  &lt;span class="n"&gt;bundler&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.10&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;  &lt;span class="n"&gt;passenger&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;5.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;  &lt;span class="n"&gt;rack&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.6&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;4&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="n"&gt;cap&lt;/span&gt; &lt;span class="n"&gt;aborted!&lt;/span&gt;
  &lt;span class="no"&gt;SSHKit&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Runner&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;ExecuteError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;Exception&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;executing&lt;/span&gt; &lt;span class="n"&gt;as&lt;/span&gt; &lt;span class="n"&gt;deploy&lt;/span&gt;&lt;span class="vi"&gt;@xxx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;xxx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;xxx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;xxx&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;passenger&lt;/span&gt; &lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="ss"&gt;status: &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
  &lt;span class="n"&gt;passenger&lt;/span&gt; &lt;span class="ss"&gt;stdout: &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;Could&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;find&lt;/span&gt; &lt;span class="s1"&gt;'passenger'&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;among&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="n"&gt;gem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Gem&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;LoadError&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="no"&gt;Checked&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="s1"&gt;'GEM_PATH=/home/deploy/.rvm/gems/ruby-2.2.3:/home/deploy/.rvm/gems/ruby-2.2.3@global'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="n"&gt;execute&lt;/span&gt; &lt;span class="sb"&gt;`gem env`&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;more&lt;/span&gt; &lt;span class="n"&gt;information&lt;/span&gt;

  &lt;span class="n"&gt;passenger&lt;/span&gt; &lt;span class="ss"&gt;stderr: &lt;/span&gt;&lt;span class="no"&gt;Nothing&lt;/span&gt; &lt;span class="n"&gt;written&lt;/span&gt;

  &lt;span class="no"&gt;Tasks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;TOP&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;passenger&lt;/span&gt;&lt;span class="ss"&gt;:restart&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;See&lt;/span&gt; &lt;span class="n"&gt;full&lt;/span&gt; &lt;span class="n"&gt;trace&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="n"&gt;running&lt;/span&gt; &lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;trace&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="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;passenger&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;  &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="n"&gt;production&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;无效。&lt;/p&gt;

&lt;p&gt;以前出现过其它原因无法启动 passenger 中断情况，我根据教程&lt;a href="http://blog.manzhikov.com/new-passenger-restart-in-5-version" rel="nofollow" target="_blank" title=""&gt;passenger-config restart-app with capistrano&lt;/a&gt;，处理过&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# 本机代码修改&lt;/span&gt;
 &lt;span class="c1"&gt;# deploy.rb&lt;/span&gt;
 &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:rvm_map_bins&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:rvm_map_bins&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[]).&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'rvmsudo'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
 &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:passenger_restart_command&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'rvmsudo passenger-config restart-app'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但这次不是同样的问题。&lt;/p&gt;

&lt;p&gt;不太明白。难道是我 passenger 安装的位置不对吗？&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="n"&gt;search&lt;/span&gt; &lt;span class="n"&gt;passenger&lt;/span&gt;

&lt;span class="o"&gt;***&lt;/span&gt; &lt;span class="no"&gt;REMOTE&lt;/span&gt; &lt;span class="no"&gt;GEMS&lt;/span&gt; &lt;span class="o"&gt;***&lt;/span&gt;

&lt;span class="n"&gt;balepc&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;zombie_passenger_killer&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.2&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="n"&gt;blazing&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;passenger&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.2&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="n"&gt;cap_passenger_ping&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.9&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="n"&gt;capistrano&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;passenger&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.1&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="n"&gt;capistrano&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;passenger5&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;nginx&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.0&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="n"&gt;check_passenger&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;cijoe_passenger&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;colouringcode&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;passenger&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;genki&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;passenger&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;restart&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;guard&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;passenger&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.6&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="n"&gt;karsthammer&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;passenger&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;2.2&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="n"&gt;passenger&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;5.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;passenger&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;jmazzi&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;2.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;passenger&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;oob&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;gc&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.0&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="n"&gt;passenger&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rails&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;passenger&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;recipes&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;passenger_debugger&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;passenger_dudemeister&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;3.0&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="n"&gt;passenger_dyno&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;passenger_mon&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.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="n"&gt;passenger_monit&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.1&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="n"&gt;passenger_reaper&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;passenger_status&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;peppyheppy&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;cpanel&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;passenger&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;3.1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;railsware&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;passenger&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;3.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;2.1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;redinger&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;passenger_debugger&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.1&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="n"&gt;rockdog&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;passenger&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.0&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="n"&gt;ruby&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;debug&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;passenger&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.2&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="n"&gt;yspassenger&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;3.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;zombie_passenger_killer&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.4&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;/code&gt;&lt;/pre&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt;
&lt;span class="no"&gt;RubyGems&lt;/span&gt; &lt;span class="no"&gt;Environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="no"&gt;RUBYGEMS&lt;/span&gt; &lt;span class="no"&gt;VERSION&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;2.4&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="no"&gt;RUBY&lt;/span&gt; &lt;span class="no"&gt;VERSION&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;2.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2015&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;08&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt; &lt;span class="n"&gt;patchlevel&lt;/span&gt; &lt;span class="mi"&gt;173&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;x86_64&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;linux&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="no"&gt;INSTALLATION&lt;/span&gt; &lt;span class="no"&gt;DIRECTORY&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sr"&gt;/home/&lt;/span&gt;&lt;span class="n"&gt;deploy&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;gems&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.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="no"&gt;RUBY&lt;/span&gt; &lt;span class="no"&gt;EXECUTABLE&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sr"&gt;/home/&lt;/span&gt;&lt;span class="n"&gt;deploy&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.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&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;ruby&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="no"&gt;EXECUTABLE&lt;/span&gt; &lt;span class="no"&gt;DIRECTORY&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sr"&gt;/home/&lt;/span&gt;&lt;span class="n"&gt;deploy&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;gems&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.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&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="no"&gt;SPEC&lt;/span&gt; &lt;span class="no"&gt;CACHE&lt;/span&gt; &lt;span class="no"&gt;DIRECTORY&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sr"&gt;/home/&lt;/span&gt;&lt;span class="n"&gt;deploy&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;gem&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;specs&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="no"&gt;SYSTEM&lt;/span&gt; &lt;span class="no"&gt;CONFIGURATION&lt;/span&gt; &lt;span class="no"&gt;DIRECTORY&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sr"&gt;/home/&lt;/span&gt;&lt;span class="n"&gt;deploy&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.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="no"&gt;RUBYGEMS&lt;/span&gt; &lt;span class="no"&gt;PLATFORMS&lt;/span&gt;&lt;span class="p"&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;x86_64&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;linux&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="no"&gt;GEM&lt;/span&gt; &lt;span class="no"&gt;PATHS&lt;/span&gt;&lt;span class="p"&gt;:&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;deploy&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;gems&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.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&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;deploy&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;gems&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.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="vi"&gt;@global&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="no"&gt;GEM&lt;/span&gt; &lt;span class="no"&gt;CONFIGURATION&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
     &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="ss"&gt;:update_sources&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="o"&gt;-&lt;/span&gt; &lt;span class="ss"&gt;:verbose&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="o"&gt;-&lt;/span&gt; &lt;span class="ss"&gt;:backtrace&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;
     &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="ss"&gt;:bulk_threshold&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;
     &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="ss"&gt;:sources&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"https://ruby.taobao.org"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="no"&gt;REMOTE&lt;/span&gt; &lt;span class="no"&gt;SOURCES&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
     &lt;span class="o"&gt;-&lt;/span&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="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;taobao&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="no"&gt;SHELL&lt;/span&gt; &lt;span class="no"&gt;PATH&lt;/span&gt;&lt;span class="p"&gt;:&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;deploy&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;gems&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.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&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="sr"&gt;/home/&lt;/span&gt;&lt;span class="n"&gt;deploy&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;gems&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.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="vi"&gt;@global&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="sr"&gt;/home/&lt;/span&gt;&lt;span class="n"&gt;deploy&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.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&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="sr"&gt;/usr/&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sbin&lt;/span&gt;
     &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="sr"&gt;/usr/&lt;/span&gt;&lt;span class="n"&gt;local&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="sr"&gt;/usr/s&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;
     &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="sr"&gt;/usr/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;
     &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="sr"&gt;/sbin
     - /&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;
     &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="sr"&gt;/usr/&lt;/span&gt;&lt;span class="n"&gt;games&lt;/span&gt;
     &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="sr"&gt;/usr/&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;games&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;deploy&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;bin&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;deploy&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;bin&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;能找到的吧？&lt;/p&gt;
&lt;h2 id="解决方案"&gt;解决方案&lt;/h2&gt;
&lt;p&gt;感觉有点&lt;code&gt;出了问题靠猜&lt;/code&gt;，最终起作用的可能有两个因素，又或是殊途同归。
一是按@  huacnlee 说的把 passenger 加进 gemfile，但一开始没起作用，我就又进服务器项目地址&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt; &lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;passenger&lt;/span&gt;

&lt;span class="n"&gt;passenger&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;  &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="n"&gt;production&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这时候再 cap production deploy，又提示我有两个 passenger 实例正在运行，只好又&lt;code&gt;passenger stop&lt;/code&gt;掉一个。&lt;/p&gt;

&lt;p&gt;已经用 cap 部署过很多很多项目了，这次问题出得很莫名其妙，难道因为我以前都是在项目目录内 gem install passenger，而这次可能直接在其它目录里？
解决得也有点莫名其妙……&lt;/p&gt;

&lt;p&gt;P.S.
因为是节前部署的，后来就忘了。
我想问题很可能出在之前，我忘了进项目目录去&lt;code&gt;gem install passenger&lt;/code&gt;，而是在根目录下安装了。所以 gem 的位置就不对了……
恩，这大概就是基础不扎实的表现……没有意识到在不同路径下装 gem 可能带来不同的结果……&lt;/p&gt;</description>
      <author>chairy11</author>
      <pubDate>Mon, 07 Sep 2015 11:33:16 +0800</pubDate>
      <link>https://ruby-china.org/topics/27220</link>
      <guid>https://ruby-china.org/topics/27220</guid>
    </item>
    <item>
      <title>[已解决]   怎么生成 UUID？用 Gem？用 Rails 自带的？用 Ruby 自带的？</title>
      <description>&lt;h2 id="问题"&gt;问题&lt;/h2&gt;
&lt;p&gt;想在普通 id 之外，再加一个 uuid 的字段。
刚 google 了一下，好像有三种方法，&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;用 gem:&lt;a href="https://github.com/sporkmonger/uuidtools" rel="nofollow" target="_blank" title=""&gt;uuidtools&lt;/a&gt;或 &lt;a href="https://github.com/assaf/uuid" rel="nofollow" target="_blank" title=""&gt;uuid&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Ruby&lt;a href="http://ruby-doc.org/stdlib-1.9.3/libdoc/securerandom/rdoc/SecureRandom.html#method-c-uuid" rel="nofollow" target="_blank" title=""&gt;原生的方法&lt;/a&gt;，有&lt;a href="http://stackoverflow.com/questions/1117584/generating-guids-in-ruby" rel="nofollow" target="_blank" title=""&gt;帖子&lt;/a&gt;说这样写
&lt;code&gt;ruby
require 'securerandom'
SecureRandom.uuid
&lt;/code&gt;
或者再检测一下是否重复，&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="vi"&gt;@seller.user_info_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;loop&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;SecureRandom&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;urlsafe_base64&lt;/span&gt;
    &lt;span class="k"&gt;break&lt;/span&gt; &lt;span class="n"&gt;token&lt;/span&gt; &lt;span class="k"&gt;unless&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;exists?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;user_info_token: &lt;/span&gt;&lt;span class="n"&gt;token&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="vi"&gt;@seller.user_info_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;SecureRandom&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;uuid&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;3.Rails 自带，&lt;a href="http://api.rubyonrails.org/classes/Digest/UUID.html" rel="nofollow" target="_blank" title=""&gt;API 文档&lt;/a&gt;，有 uuid_from_hash, uuid_v3, uuid_v4, uuid_v5。
   网上关于 RAILS 自带的教程，说的都是用 postgres, 而且好像都是用 uuid 做主键，但我用 mysql 了，还是用普通 id 做主键，也一样？&lt;/p&gt;

&lt;p&gt;恩，还没明白我这种场景应该是用什么样的方案？
你们都怎么做的？&lt;/p&gt;
&lt;h2 id="解决方案"&gt;解决方案&lt;/h2&gt;
&lt;p&gt;还是选择了用 gem:&lt;a href="https://github.com/sporkmonger/uuidtools" rel="nofollow" target="_blank" title=""&gt;uuidtools&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;具体实现，在 model 里&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="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;some_other_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;UUIDTools&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;UUID&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;timestamp_create&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;to_s&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;谢谢各位：）&lt;/p&gt;</description>
      <author>chairy11</author>
      <pubDate>Wed, 26 Aug 2015 08:17:17 +0800</pubDate>
      <link>https://ruby-china.org/topics/27082</link>
      <guid>https://ruby-china.org/topics/27082</guid>
    </item>
    <item>
      <title>差点被骗，原来邮箱密码暴露……细思恐极…… 对方还在不断登录我邮箱修改我亚马逊密码……还锲而不舍地给我打电话！</title>
      <description>&lt;h2 id="经过"&gt;经过&lt;/h2&gt;
&lt;p&gt;前天在亚马逊上购物。
昨天下午一个浙江宁波的手机（151 5838 5738）来电，对方先问你是 XXX，在亚马逊上购买在了 XXX 吗？我说是。
他说其中 XXX 没货了，已经把订单冻结了，需要你在网上操作才能退款，你现在在电脑旁边吗……说要指引我操作……
我说我在外面，我回去上网看看。
没想到对方态度非常强硬，毫不客气地说"那你几点能上网"。
我说我不知道，反正我回去会看的。
他又再逼紧"那是几点"……
我说我并不信任你……
他就挂了……&lt;/p&gt;

&lt;p&gt;疑点很多：1. 私人手机号；2. 我买的是亚马逊官方产品，不是第三方的，不可能有类似操作；3. 对方没有客服人员应有的客气态度；4.非要指引我操作，还要求实时！&lt;/p&gt;

&lt;p&gt;因为去年曾经在买机票后差点被骗的经历，已经对这种强烈要求指引我操作的行为产生防御心理。
（当时收到貌似官方的短信说我航班被取消，要求教我怎样从 ATM 操作退款）&lt;/p&gt;

&lt;p&gt;晚上上亚马逊，发现常用密码无法登录，只好点击「忘记密码」。
登录邮箱，发现在我之前，已经有人用「忘记密码」来重设了我的亚马逊密码！
细思恐极！
原来是我邮箱密码被破解了！&lt;/p&gt;

&lt;p&gt;可能后果：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;用这个邮箱注册的所有应用，它都能修改登录密码。（所幸，这个 163 邮箱，是我最早注册的，不常用，但我也不记得有哪些账号是这个邮箱注册过的）&lt;/li&gt;
&lt;li&gt;如果他修改了邮箱密码，我甚至连邮箱都无法登录。（所幸，竟然要什么安全码才能修改，我自己都不记得，所以目前在申诉，准备修改邮箱密码）&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;这个信息时代，对信息安全问题真是非常担忧……
因为我来去就只有一两个密码……一破全破……&lt;/p&gt;

&lt;p&gt;话说大厂密保工作貌似不错，还能查到最近登录十个 IP 记录，&lt;/p&gt;

&lt;p&gt;安徽省（36.33.31.&lt;em&gt;）用户中心    2015-08-13 10:22:10（23 小时前）
安徽省（36.33.31.&lt;/em&gt;）163 邮箱   2015-08-13 10:22:10（23 小时前）
安徽省（36.33.25.&lt;em&gt;）用户中心    2015-08-13 07:24:46（1 天前）
安徽省（36.33.25.&lt;/em&gt;）163 邮箱   2015-08-13 07:24:28（1 天前）&lt;/p&gt;

&lt;p&gt;而且它昨晚其实已经提示我说高危，要求密保升级……&lt;/p&gt;

&lt;p&gt;新浪更是把我之前一个写了十年的博客直接给没了……因为我没绑定邮箱……不知道怎么某天就登录不上了……申诉好几次人家都判决失败……直接没法操作了……哭……&lt;/p&gt;
&lt;h2 id="更新"&gt;更新&lt;/h2&gt;
&lt;p&gt;想修改密码，163 说要安全码，我压根不记得，按提示申诉……
结果，等我折腾完，发现里面又有亚马逊密码被修改邮件……
IP 依然是那个安徽的……能怎么办？报警么？&lt;/p&gt;

&lt;p&gt;估计他还在上我账户，好在我好像没开设什么一键购物，直接把信用卡关联上去……
还得检查一下邮箱上是否有很多重要备份个人信息资料……&lt;/p&gt;

&lt;p&gt;安徽省（36.33.25.&lt;em&gt;）用户中心    2015-08-14 13:31:03（1 小时前）
安徽省（36.33.25.&lt;/em&gt;）163 邮箱   2015-08-14 13:31:03（1 小时前）
安徽省（58.242.214.&lt;em&gt;）用户中心    2015-08-14 12:26:07（2 小时前）
安徽省（58.242.214.&lt;/em&gt;）163 邮箱   2015-08-14 12:25:54（2 小时前）
安徽省（58.242.214.&lt;em&gt;）用户中心    2015-08-14 12:24:15（2 小时前）
安徽省（58.242.214.&lt;/em&gt;）163 邮箱   2015-08-14 12:24:11（2 小时前）
安徽省（58.242.214.&lt;em&gt;）用户中心    2015-08-14 12:23:36（2 小时前）
安徽省（58.242.214.&lt;/em&gt;）163 邮箱   2015-08-14 12:23:36（2 小时前）&lt;/p&gt;
&lt;h2 id="再更新"&gt;再更新&lt;/h2&gt;
&lt;p&gt;刚才又接到个来自深圳私人手机的电话，又说"您昨天是不是在我们亚马逊这边下了一个订单"
我气得，说"你有完没完！我要报警！"挂了电话！
人家竟然又接着再打过来，我说"亚马逊会找你这样普通话都不标准的人当客服吗！！！"
人家竟然还很坚持"我就跟你核实一下订单信息可以吗！"
我说"我不信！我要报警！"又挂了！&lt;/p&gt;

&lt;p&gt;TMD，邮箱里有亚马逊确认订单的邮件，他连我家地址都知道！好可怕好可怕！
可这种事能报警吗？？？&lt;/p&gt;
&lt;h2 id="总结"&gt;总结&lt;/h2&gt;
&lt;p&gt;原来邮箱密码才是所有密码中最重要的……&lt;/p&gt;</description>
      <author>chairy11</author>
      <pubDate>Fri, 14 Aug 2015 10:43:27 +0800</pubDate>
      <link>https://ruby-china.org/topics/26924</link>
      <guid>https://ruby-china.org/topics/26924</guid>
    </item>
    <item>
      <title>[已解决]  微信自定义菜单，用沙盒测试显示没问题，自己 post 就回复"errcode"=&gt;40016, "errmsg"=&gt;"invalid button size"</title>
      <description>&lt;h2 id="问题"&gt;问题&lt;/h2&gt;
&lt;p&gt;微信自定义菜单，如果我在自己的控制台执行，结果会是&lt;code&gt;{"errcode"=&amp;gt;40016, "errmsg"=&amp;gt;"invalid button size"}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;根据&lt;a href="http://mp.weixin.qq.com/wiki/17/fa4e1434e57290788bde25603fa2fcbd.html" rel="nofollow" target="_blank" title=""&gt;全局返回码说明&lt;/a&gt;解释：40016  不合法的按钮个数&lt;/p&gt;

&lt;p&gt;但在&lt;a href="https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t=index&amp;amp;type=%E8%87%AA%E5%AE%9A%E4%B9%89%E8%8F%9C%E5%8D%95&amp;amp;form=%E8%87%AA%E5%AE%9A%E4%B9%89%E8%8F%9C%E5%8D%95%E5%88%9B%E5%BB%BA%E6%8E%A5%E5%8F%A3%20/menu/create" rel="nofollow" target="_blank" title=""&gt;官方提供的沙盒测试&lt;/a&gt;中是显示成功的
&lt;img src="https://l.ruby-china.com/photo/2015/62bcf001d629439f26742aeff22e79ec.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;真的很奇怪，这是什么情况？
我找到之前的一个帖子&lt;a href="https://ruby-china.org/topics/15126" title=""&gt;《微信自定义菜单的 post》&lt;/a&gt;，说是中文问题。
但我尝试：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;在&lt;code&gt;config/application.rb&lt;/code&gt;里加了&lt;code&gt;config.encoding = "utf-8"&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;把 json 数据包所有中文都改为英文了，&lt;/li&gt;
&lt;li&gt;又在代码里加上&lt;code&gt;data = menu.to_json.gsub!(/\\u([0-9a-z]{4})/) { |s| [$1.to_i(16)].pack("U") }&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;加上了 content_type &lt;code&gt;RestClient.post url, params: data, content_type: "application/json"&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;结果还是出现同样的错误提示。&lt;/p&gt;

&lt;p&gt;后来我把按钮数减少到两三个很多，也还是出错。&lt;/p&gt;

&lt;p&gt;莫名其妙呀……
哪位大牛有办法呀？&lt;/p&gt;
&lt;h2 id="解决方案"&gt;解决方案&lt;/h2&gt;
&lt;p&gt;是我之前用 RestClient 没写对，多写了个 params: data&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;RestClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&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;params: &lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;content_type: &lt;/span&gt;&lt;span class="s2"&gt;"application/json"&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="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;RestClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:content_type&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;:json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;好吧，我果然很二……
请忽略我……&lt;/p&gt;</description>
      <author>chairy11</author>
      <pubDate>Thu, 25 Jun 2015 17:07:30 +0800</pubDate>
      <link>https://ruby-china.org/topics/26181</link>
      <guid>https://ruby-china.org/topics/26181</guid>
    </item>
    <item>
      <title>谁来个微信开发学习资源大全？</title>
      <description>&lt;p&gt;最近要学习微信开发。大家都看到什么资源？有什么想分享的经验，遇到过什么坑？
麻烦推荐一下相关的实战开源项目啊，或是自己写的博文啊，或是看到别人写的博文啊，gem 啊，学习视频啊，之类的……&lt;/p&gt;

&lt;p&gt;目前我看到的：&lt;/p&gt;
&lt;h2 id="课程"&gt;课程&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.jikexueyuan.com/course/483.html" rel="nofollow" target="_blank" title=""&gt;极客学院：微信内网页开发工具包 (微信 JS-SDK)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.jikexueyuan.com/course/35.html" rel="nofollow" target="_blank" title=""&gt;极客学院：Android 项目开发实战 - 微信 SDK 的集成与使用实战开发&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="帖子"&gt;帖子&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ruby-china.org/topics/25410" title=""&gt;《微信开放平台 Omniauth 探索》&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ruby-china.org/topics/23822" title=""&gt;《微信开发简介》&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://chaoskeh.com/blog/create-weixin-api-by-rails.html" rel="nofollow" target="_blank" title=""&gt; 《用 Rails 搭建微信公众平台 API》&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="开源项目或是gem"&gt;开源项目或是 gem&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="/skinnyworm" class="user-mention" title="@skinnyworm"&gt;&lt;i&gt;@&lt;/i&gt;skinnyworm&lt;/a&gt;   的 &lt;a href="https://github.com/skinnyworm/wechat-rails" rel="nofollow" target="_blank" title=""&gt;wechat-rails: 在 Rails 环境中集成微信公众平台提供的所有服务&lt;/a&gt;(对应帖子&lt;a href="https://ruby-china.org/topics/18337" title=""&gt;《wechat-rails 微信 DSL for ruby》&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;a href="/skinnyworm" class="user-mention" title="@skinnyworm"&gt;&lt;i&gt;@&lt;/i&gt;skinnyworm&lt;/a&gt;   的 &lt;a href="https://github.com/skinnyworm/omniauth-wechat-oauth2" rel="nofollow" target="_blank" title=""&gt;omniauth-wechat-oauth2: Wechat OAuth2 Strategy for OmniAuth 1.0.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="/ruby_sky" class="user-mention" title="@ruby_sky"&gt;&lt;i&gt;@&lt;/i&gt;ruby_sky&lt;/a&gt;        的  &lt;a href="https://github.com/lanrion/weixin_authorize/" rel="nofollow" target="_blank" title=""&gt; 微信 Ruby 高级 API weixin_authorize&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="/ruby_sky" class="user-mention" title="@ruby_sky"&gt;&lt;i&gt;@&lt;/i&gt;ruby_sky&lt;/a&gt;        的  &lt;a href="https://github.com/lanrion/weixin_rails_middleware" rel="nofollow" target="_blank" title=""&gt;微信集成 ruby weixin_rails_middleware for integration weixin&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="/ruby_sky" class="user-mention" title="@ruby_sky"&gt;&lt;i&gt;@&lt;/i&gt;ruby_sky&lt;/a&gt;        的  &lt;a href="https://github.com/lanrion/qy_wechat_api" rel="nofollow" target="_blank" title=""&gt;企业微信高级 API Ruby 版本&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="/ruby_sky" class="user-mention" title="@ruby_sky"&gt;&lt;i&gt;@&lt;/i&gt;ruby_sky&lt;/a&gt;        的  &lt;a href="https://github.com/lanrion/qy_wechat" rel="nofollow" target="_blank" title=""&gt;企业微信 Ruby on Rails 版本&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>chairy11</author>
      <pubDate>Thu, 18 Jun 2015 15:54:14 +0800</pubDate>
      <link>https://ruby-china.org/topics/26091</link>
      <guid>https://ruby-china.org/topics/26091</guid>
    </item>
    <item>
      <title>有没有关于 faraday 的好教程？(要不看不懂就改用 rest-client？)</title>
      <description>&lt;p&gt;我要通过 API 调用第三方供应商提供的数据，应该是要用 faraday 吧？
我同事手写的，但我看好像写得代码有点多，就想用 faraday 这个 gem。
但我对 http 原理其实不是很了解……（当然也看过这个&lt;a href="http://happypeter.github.io/tealeaf-http/" rel="nofollow" target="_blank" title=""&gt;《HTTP 下午茶》&lt;/a&gt;这种入门级的）&lt;/p&gt;

&lt;p&gt;然后我看到 faraday 现在的教程：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/lostisland/faraday" rel="nofollow" target="_blank" title=""&gt;官方 gem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.intridea.com/blog/2012/3/12/faraday-one-http-client-to-rule-them-all" rel="nofollow" target="_blank" title=""&gt;Faraday: One HTTP Client to Rule Them All&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mislav.uniqpath.com/2011/07/faraday-advanced-http/" rel="nofollow" target="_blank" title=""&gt;Faraday: advanced HTTP requests made easy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://quake.iteye.com/blog/1610238" rel="nofollow" target="_blank" title=""&gt;60 行代码实现分享到微博，QQ 空间，豆瓣 - 介绍好用的 Faraday&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;还是有点糊里糊涂耶……
有没有更全面更显浅一点的推荐啊？&lt;/p&gt;

&lt;p&gt;或者大家看到哪个开源项目有用到，我看看人家写的代码啊……
现在只看到一个&lt;a href="https://github.com/diaspora/diaspora" rel="nofollow" target="_blank" title=""&gt;diaspora&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;补充：
经 4 楼&lt;a href="/fresh_fish" class="user-mention" title="@fresh_fish"&gt;&lt;i&gt;@&lt;/i&gt;fresh_fish&lt;/a&gt; 推荐，发现&lt;a href="https://github.com/rest-client/rest-client" rel="nofollow" target="_blank" title=""&gt;rest-client&lt;/a&gt;，看起来是易懂一点，而且&lt;a href="https://www.ruby-toolbox.com/categories/http_clients" rel="nofollow" target="_blank" title=""&gt;ruby-toolbox 排名更高&lt;/a&gt;要不我换这个？
还有童鞋推荐&lt;a href="https://github.com/jnunemaker/httparty" rel="nofollow" target="_blank" title=""&gt;httparty&lt;/a&gt;&lt;/p&gt;</description>
      <author>chairy11</author>
      <pubDate>Wed, 17 Jun 2015 10:18:48 +0800</pubDate>
      <link>https://ruby-china.org/topics/26060</link>
      <guid>https://ruby-china.org/topics/26060</guid>
    </item>
    <item>
      <title>怎样与别人的前端代码合并？</title>
      <description>&lt;h2 id="问题"&gt;问题&lt;/h2&gt;
&lt;p&gt;是这样的，我写了其它所有前端页面，用了 scss 和 coffeescript。
然后一位同事写了首页，没什么数据，目前是静态页面。与我其它页面也没有共享框架，我就在 controller 中用了&lt;code&gt;render layout: false&lt;/code&gt;。
我自己用了 bootstrap 框架。她的没有，但用了些其它插件，而且 css 代码中也有一些会覆盖我的设置。
目前为了省事，我就直接把这个 html 复制到过来，然后把她的 css,js，images 全部放到 public 文件夹里。
效果是正常显示。但总觉得这种方法不太合适。
你们平时都是怎么处理的？&lt;/p&gt;

&lt;p&gt;因为我之前都习惯自己前端后端代码都一个人写，都用的 bootstrap，然后用 scss 覆盖达到个性化。加入别人的代码，没有经验，感觉怪怪的……&lt;/p&gt;</description>
      <author>chairy11</author>
      <pubDate>Sun, 07 Jun 2015 00:03:18 +0800</pubDate>
      <link>https://ruby-china.org/topics/25913</link>
      <guid>https://ruby-china.org/topics/25913</guid>
    </item>
    <item>
      <title>[已解决] 同时使用 tab 和 lazy_high_chart，怎么使图表宽度为 100%？</title>
      <description>&lt;h2 id="问题："&gt;问题：&lt;/h2&gt;
&lt;p&gt;使用 lazy_high_chart 画图，同时把图表放在 bootstrap 的 nav-tab 下面。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;情况一：打开页面是默认 active 的那个 tab-content，显示的 chart 是正常 100% 宽度。
&lt;img src="https://l.ruby-china.com/photo/2015/e996c9d54b2d9f63ab0c1dc6a7e987b0.png" title="" alt=""&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;情况二：点击 tab，切换到相应的 tab-content，因为之前这个区域是 display:none 的，所以它得不到正常宽度，所以会显示默认宽度 600px。但我需要它显示的是 100% 宽度。
&lt;img src="https://l.ruby-china.com/photo/2015/46413be087ee6985c5ed641904060f1e.png" title="" alt=""&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;怎样才能以最简洁的方式让它显示 100% 宽度呢？&lt;/p&gt;

&lt;p&gt;注：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;尝试一：
修改 css 为
&lt;code&gt;scss
svg rect{
  width: 100%;
}
&lt;/code&gt;
无效。
它自动生成的 html 为
&lt;code&gt;erb
&amp;lt;rect x="0" y="0" width="600" height="400" strokeWidth="0" fill="#FFFFFF" class=" highcharts-background"&amp;gt;&amp;lt;/rect&amp;gt;
&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;其它：正在研究这个&lt;a href="http://jsfiddle.net/gh/get/jquery/1.9.1/highslide-software/highcharts.com/tree/master/samples/highcharts/members/chart-setsize-button/" rel="nofollow" target="_blank" title=""&gt;官方例子&lt;/a&gt;
和&lt;a href="http://jsfiddle.net/davide_vallicella/LuxFd/2/" rel="nofollow" target="_blank" title=""&gt;另一个例子&lt;/a&gt;：我觉得它能解决这个问题，但好像代码太复杂了……我用不着这么多……&lt;/p&gt;
&lt;h2 id="解决方案"&gt;解决方案&lt;/h2&gt;
&lt;p&gt;回帖有几个解决方案，但我自己还没有用对。
目前比较简洁的是一个 css hack 方法&lt;/p&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="nc"&gt;.tab-content&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;.tab-pane&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;overflow-y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;hidden&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nc"&gt;.active&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&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;</description>
      <author>chairy11</author>
      <pubDate>Tue, 02 Jun 2015 17:11:47 +0800</pubDate>
      <link>https://ruby-china.org/topics/25852</link>
      <guid>https://ruby-china.org/topics/25852</guid>
    </item>
    <item>
      <title>[已解决] Carrierwave 如何配置合理的上传文件名？+ 怎样在上传之前直接显示预览图片？</title>
      <description>&lt;h2 id="问题一："&gt;问题一：&lt;/h2&gt;
&lt;p&gt;看到李华顺的&lt;a href="http://huacnlee.com/blog/carrierwave-upload-store-file-name-config/" rel="nofollow" target="_blank" title=""&gt;《Carrierwave 如何配置合理的上传文件名》&lt;/a&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="nf"&gt;filename&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;original_filename&lt;/span&gt;
    &lt;span class="c1"&gt;# current_path 是 Carrierwave 上传过程临时创建的一个文件，有时间标记&lt;/span&gt;
    &lt;span class="c1"&gt;# 例如: /Users/jason/work/ruby-china/public/uploads/tmp/20131105-1057-46664-5614/_____2013-11-05___10.37.50.png&lt;/span&gt;
    &lt;span class="vi"&gt;@name&lt;/span&gt; &lt;span class="o"&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;MD5&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;current_path&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="vi"&gt;@name&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="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extension&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;但看日期是 2011 年写的，而且 ruby-china 好像同时使用了两种。&lt;/p&gt;

&lt;p&gt;在《photo_uploader.rb》是：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;filename&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;present?&lt;/span&gt;
      &lt;span class="c1"&gt;# current_path 是 Carrierwave 上传过程临时创建的一个文件，有时间标记，所以它将是唯一的&lt;/span&gt;
      &lt;span class="c1"&gt;# 此方法只使用 Ruby China 这类图片上传的场景&lt;/span&gt;
      &lt;span class="vi"&gt;@name&lt;/span&gt; &lt;span class="o"&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;MD5&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;current_path&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;Time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;year&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="vi"&gt;@name&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="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extension&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;downcase&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;在《avatar_uploader.rb》是：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;filename&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;present?&lt;/span&gt;
      &lt;span class="s2"&gt;"avatar/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.jpg"&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;注，在《base_uploader.rb》里设置了前半部分&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;store_dir&lt;/span&gt;
    &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;class&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;underscore&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;这两种使用场景怎么区分？怎么写比较好？&lt;/p&gt;

&lt;p&gt;我以前是这样写的&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;store_dir&lt;/span&gt;
  &lt;span class="s2"&gt;"uploads/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;class&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;underscore&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="n"&gt;mounted_as&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="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;id&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;没有直接设置 filename，结果是生成的文件名是&lt;code&gt;uploads/project/avatar/1/1-__________________.jpg&lt;/code&gt;，好像所有中文都变成下划线，好怪……&lt;/p&gt;

&lt;p&gt;大家都怎么弄的？&lt;/p&gt;
&lt;h2 id="问题二："&gt;问题二：&lt;/h2&gt;
&lt;p&gt;我 logo 字段本身就在 something model 里，在新建 something 时就上传图片，那就统一在保存时保存数据，不用 ajax 上传（而在富文本编辑器 simditor 中我是用 ajax 上传的）。
我想在上传之前就显示预览图片，怎么弄？
正在研究这个帖子&lt;a href="http://stackoverflow.com/questions/4459379/preview-an-image-before-it-is-uploaded" rel="nofollow" target="_blank" title=""&gt;《Preview an image before it is uploaded》&lt;/a&gt;
目前我表单的结构是&lt;/p&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt; &lt;span class="cp"&gt;&amp;lt;%=&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;input&lt;/span&gt; &lt;span class="ss"&gt;:logo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;as: :file&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;label&lt;/span&gt;&lt;span class="ss"&gt;:"LOGO"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="ss"&gt;hint: &lt;/span&gt;&lt;span class="s2"&gt;"支持JPG、GIF、PNG格式图片，不超过5M"&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;image_tag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vi"&gt;@something.logo_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="ss"&gt;:'img-responsive'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vi"&gt;@something.logo&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;&amp;lt;%=&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;hidden_field&lt;/span&gt; &lt;span class="ss"&gt;:logo_cache&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;额，忽然想到，看 simditor 的源码会不会就有这个功能的实现？
另外看到一个&lt;a href="http://jasny.github.io/bootstrap/javascript/#fileinput" rel="nofollow" target="_blank" title=""&gt;Jasny Bootstrap&lt;/a&gt;实现的上传按钮就很好，样式也不错，而且上传后有删除按钮，也有预览……咋抄下呢？&lt;/p&gt;
&lt;h2 id="问题一解决方案："&gt;问题一解决方案：&lt;/h2&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Override the directory where uploaded files will be stored.&lt;/span&gt;
  &lt;span class="c1"&gt;# This is a sensible default for uploaders that are meant to be mounted:&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;store_dir&lt;/span&gt;
    &lt;span class="s2"&gt;"uploads/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;class&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;underscore&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="n"&gt;mounted_as&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="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;id&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="c1"&gt;# Override the filename of the uploaded files:&lt;/span&gt;
  &lt;span class="c1"&gt;# 参考李华顺的帖子(http://huacnlee.com/blog/carrierwave-upload-store-file-name-config/)&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;filename&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;original_filename&lt;/span&gt;
      &lt;span class="vi"&gt;@name&lt;/span&gt; &lt;span class="o"&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;MD5&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;current_path&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="vi"&gt;@name&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="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extension&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;/p&gt;
&lt;h2 id="问题二解决方案"&gt;问题二解决方案&lt;/h2&gt;
&lt;p&gt;抄的&lt;a href="http://jasny.github.io/bootstrap/javascript/#fileinput" rel="nofollow" target="_blank" title=""&gt;Jasny Bootstrap&lt;/a&gt;的 js 和 css 代码，
&lt;a href="https://github.com/jasny/bootstrap/blob/master/js/fileinput.js" rel="nofollow" target="_blank" title=""&gt;fileinput.js&lt;/a&gt;和&lt;a href="https://github.com/jasny/bootstrap/blob/master/scss/_fileinput.scss" rel="nofollow" target="_blank" title=""&gt;_fileinput.scss&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;再改改样式，再配合 simple_form&lt;/p&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"btn btn-default btn-file"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
           &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"fileinput-new"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;选择图片&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
           &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"fileinput-exists"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;更换图片&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
            &lt;span class="cp"&gt;&amp;lt;%=&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;input_field&lt;/span&gt; &lt;span class="ss"&gt;:logo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;as: :file&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;label&lt;/span&gt;&lt;span class="ss"&gt;:false&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"close fileinput-exists"&lt;/span&gt; &lt;span class="na"&gt;data-dismiss=&lt;/span&gt;&lt;span class="s"&gt;"fileinput"&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"float: none"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&lt;span class="ni"&gt;&amp;amp;times;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"help-block"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;支持JPG、GIF、PNG格式图片，不超过5M&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"fileinput-preview thumbnail"&lt;/span&gt; &lt;span class="na"&gt;data-trigger=&lt;/span&gt;&lt;span class="s"&gt;"fileinput"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"img-responsive"&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"/images/default-placeholder.jpg"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Default placeholder"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="其它遗留问题"&gt;其它遗留问题&lt;/h2&gt;
&lt;p&gt;李华顺说「uploads 这个应该是 Nginx 上面配置的」，我一直是自己在项目文件中设置 shared/public/uploaders 文件夹的，这个等有时间再深入研究下……&lt;/p&gt;</description>
      <author>chairy11</author>
      <pubDate>Tue, 12 May 2015 17:49:24 +0800</pubDate>
      <link>https://ruby-china.org/topics/25542</link>
      <guid>https://ruby-china.org/topics/25542</guid>
    </item>
    <item>
      <title>bootstrap-datepicker-rails，有没有办法让年显示在月前面？</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/ef5976cf2905e6e064d53c8f7dec8403.png" title="" alt=""&gt;
如图，现在是显示「五月 2015」，这好怪哦！
有没有办法显示为「2015 年 5 月」？额，一是顺序是先「年」后「月」，二是「五月」改成「5 月」。&lt;/p&gt;

&lt;p&gt;注：我用的是 Gem - &lt;a href="https://github.com/Nerian/bootstrap-datepicker-rails" rel="nofollow" target="_blank" title=""&gt;bootstrap-datepicker-rails&lt;/a&gt;
       如果它把「月」和「年」分为两个 span，我会用 css, float:right；弄它，但人家偏偏是&lt;code&gt;&amp;lt;th colspan="5" class="datepicker-switch"&amp;gt;五月 2015&amp;lt;/th&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;注：我明明已经在 zh-CN.yml 中把月份改为数字了的&lt;/p&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;abbr_month_names&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;1月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;2月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;3月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;4月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;5月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;6月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;7月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;8月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;9月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;10月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;11月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;12月&lt;/span&gt;
&lt;span class="na"&gt;month_names&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;1月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;2月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;3月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;4月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;5月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;6月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;7月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;8月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;9月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;10月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;11月&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;12月&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>chairy11</author>
      <pubDate>Tue, 12 May 2015 13:22:50 +0800</pubDate>
      <link>https://ruby-china.org/topics/25536</link>
      <guid>https://ruby-china.org/topics/25536</guid>
    </item>
  </channel>
</rss>
