<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>cysh (Cysh)</title>
    <link>https://ruby-china.org/cysh</link>
    <description>小白</description>
    <language>en-us</language>
    <item>
      <title>uniqueness validation not work 现在能解决了吗？</title>
      <description>&lt;p&gt;&lt;img title=":joy:" alt="😂" src="https://twemoji.ruby-china.com/2/svg/1f602.svg" class="twemoji"&gt; &lt;/p&gt;</description>
      <author>cysh</author>
      <pubDate>Tue, 20 Apr 2021 12:01:33 +0800</pubDate>
      <link>https://ruby-china.org/topics/41169</link>
      <guid>https://ruby-china.org/topics/41169</guid>
    </item>
    <item>
      <title>请教有哪些 Rubyist 比较容易点满的技能树</title>
      <description>&lt;p&gt;emmmm...其实是最近想换工作但是遇到了各种各样求职难的问题，同时认识到自己的各种局限性。&lt;/p&gt;

&lt;p&gt;虽然有在业余学习一些其他语种，但用于求职 Ruby 以外的岗位感觉还是差很多。&lt;/p&gt;

&lt;p&gt;所以这里想请教各位大佬有哪些 Rubyist 比较容易学习吸收的知识点……最好是有利于 &lt;strong&gt;求职&lt;/strong&gt; 、快速扩充自己之类的，能附上学习书籍就更好啦～万分感激&lt;/p&gt;</description>
      <author>cysh</author>
      <pubDate>Tue, 19 May 2020 18:07:00 +0800</pubDate>
      <link>https://ruby-china.org/topics/39885</link>
      <guid>https://ruby-china.org/topics/39885</guid>
    </item>
    <item>
      <title>请问这个阅读进度条是怎么实现的？</title>
      <description>&lt;p&gt;感觉很 cool…
&lt;a href="https://infinum.co/the-capsized-eight/progress-bar-in-rails" rel="nofollow" target="_blank"&gt;https://infinum.co/the-capsized-eight/progress-bar-in-rails&lt;/a&gt;&lt;/p&gt;</description>
      <author>cysh</author>
      <pubDate>Thu, 21 Sep 2017 17:54:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/34216</link>
      <guid>https://ruby-china.org/topics/34216</guid>
    </item>
    <item>
      <title>Virtualbox 挂载虚拟机失败</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;vagrant&lt;/span&gt; &lt;span class="n"&gt;up&lt;/span&gt;
&lt;span class="no"&gt;Bringing&lt;/span&gt; &lt;span class="n"&gt;machine&lt;/span&gt; &lt;span class="s1"&gt;'default'&lt;/span&gt; &lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="s1"&gt;'virtualbox'&lt;/span&gt; &lt;span class="n"&gt;provider&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="o"&gt;==&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;default: &lt;/span&gt;&lt;span class="no"&gt;Importing&lt;/span&gt; &lt;span class="n"&gt;base&lt;/span&gt; &lt;span class="n"&gt;box&lt;/span&gt; &lt;span class="s1"&gt;'ubuntu/trusty64'&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="no"&gt;There&lt;/span&gt; &lt;span class="n"&gt;was&lt;/span&gt; &lt;span class="n"&gt;an&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;executing&lt;/span&gt; &lt;span class="sb"&gt;`VBoxManage`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="no"&gt;CLI&lt;/span&gt; &lt;span class="n"&gt;used&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="no"&gt;Vagrant&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;controlling&lt;/span&gt; &lt;span class="no"&gt;VirtualBox&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="no"&gt;The&lt;/span&gt; &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;stderr&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;shown&lt;/span&gt; &lt;span class="n"&gt;below&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;

&lt;span class="no"&gt;Command&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"import"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"/Users/wwtd/.vagrant.d/boxes/ubuntu-VAGRANTSLASH-trusty64/20160620.0.0/virtualbox/box.ovf"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"--vsys"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"--vmname"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"ubuntu-cloudimg-trusty-vagrant-amd64_1466693095933_37701"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"--vsys"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"--unit"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"--disk"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"/var/root/VirtualBox VMs/ubuntu-cloudimg-trusty-vagrant-amd64_1466693095933_37701/box-disk1.vmdk"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="no"&gt;Stderr&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="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;%...&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="o"&gt;%...&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;%...&lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="o"&gt;%...&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%...&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="o"&gt;%...&lt;/span&gt;&lt;span class="mi"&gt;70&lt;/span&gt;&lt;span class="o"&gt;%...&lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="o"&gt;%...&lt;/span&gt;&lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="o"&gt;%...&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;
&lt;span class="no"&gt;Interpreting&lt;/span&gt; &lt;span class="sr"&gt;/Users/&lt;/span&gt;&lt;span class="n"&gt;wwtd&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;vagrant&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;d&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;boxes&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ubuntu&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="no"&gt;VAGRANTSLASH&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;trusty64&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;20160620.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;virtualbox&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;box&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ovf&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="no"&gt;OK&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%...&lt;/span&gt;
&lt;span class="no"&gt;Progress&lt;/span&gt; &lt;span class="ss"&gt;state: &lt;/span&gt;&lt;span class="no"&gt;VBOX_E_FILE_ERROR&lt;/span&gt;
&lt;span class="no"&gt;VBoxManage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="ss"&gt;error: &lt;/span&gt;&lt;span class="no"&gt;Appliance&lt;/span&gt; &lt;span class="n"&gt;import&lt;/span&gt; &lt;span class="n"&gt;failed&lt;/span&gt;
&lt;span class="no"&gt;VBoxManage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="ss"&gt;error: &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;create&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;imported&lt;/span&gt; &lt;span class="n"&gt;medium&lt;/span&gt; &lt;span class="s1"&gt;'/var/root/VirtualBox VMs/ubuntu-cloudimg-trusty-vagrant-amd64_1466693095933_37701/box-disk1.vmdk'&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;span class="no"&gt;VBoxManage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="ss"&gt;error: &lt;/span&gt;&lt;span class="no"&gt;VMDK&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;Compressed&lt;/span&gt; &lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;corrupted&lt;/span&gt; &lt;span class="s1"&gt;'/Users/wwtd/.vagrant.d/boxes/ubuntu-VAGRANTSLASH-trusty64/20160620.0.0/virtualbox/box-disk1.vmdk'&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;VERR_ZIP_CORRUPTED&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="no"&gt;VBoxManage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="ss"&gt;error: &lt;/span&gt;&lt;span class="no"&gt;Details&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt; &lt;span class="no"&gt;VBOX_E_FILE_ERROR&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0x80bb0004&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;component&lt;/span&gt; &lt;span class="no"&gt;ApplianceWrap&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;interface&lt;/span&gt; &lt;span class="no"&gt;IAppliance&lt;/span&gt;
&lt;span class="no"&gt;VBoxManage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="ss"&gt;error: &lt;/span&gt;&lt;span class="no"&gt;Context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"RTEXITCODE handleImportAppliance(HandlerArg*)"&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="mi"&gt;877&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="no"&gt;VBoxManageAppliance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cpp&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;google 有人说可能说空间不足，或者权限问题，可改了权限也没能解决问题，各位有碰到过这种问题吗&lt;/p&gt;</description>
      <author>cysh</author>
      <pubDate>Thu, 23 Jun 2016 22:49:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/30354</link>
      <guid>https://ruby-china.org/topics/30354</guid>
    </item>
    <item>
      <title>有没有比较传奇的女程序员？</title>
      <description>&lt;p&gt;传奇的定义各自理解吧…
觉得有意思的来说说吧 
&lt;img title=":smile:" alt="😄" src="https://twemoji.ruby-china.com/2/svg/1f604.svg" class="twemoji"&gt; &lt;/p&gt;
&lt;h3 id="传送门"&gt;传送门&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.php-oa.com/2009/11/11/perl-audrey-tang.html" rel="nofollow" target="_blank" title=""&gt;Perl 界大牛唐凤传说 &lt;/a&gt;
&lt;a href="http://jingxuan.guokr.com/pick/18251/?from=timeline&amp;amp;isappinstalled=1" rel="nofollow" target="_blank" title=""&gt;她一边看孩子，一边写程序，一边把阿波罗送上月球…… &lt;/a&gt;&lt;/p&gt;</description>
      <author>cysh</author>
      <pubDate>Thu, 26 May 2016 20:27:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/30135</link>
      <guid>https://ruby-china.org/topics/30135</guid>
    </item>
    <item>
      <title>如何在父类里调用子类实例方法？</title>
      <description>&lt;p&gt;= =！这句话还是放在前面好了…
Spree 里的 Promotion Rule 就是这样的设计，实在没看懂为什么抛出一个 Exception 就能呼叫子类方法了？到底是怎么做到的呢…？&lt;/p&gt;

&lt;hr&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Parent&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;method&lt;/span&gt;
    &lt;span class="c1"&gt;# do something&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Sub&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;Parent&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;method&lt;/span&gt;
    &lt;span class="c1"&gt;# do something&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;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Parent&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;method&lt;/span&gt;
    &lt;span class="no"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;const_get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Sub'&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;new&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;method&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;在这里又生成一个子类的实例，这里已经简化很多了，如果在 model 里实现的话，就还得去做一次查询，很麻烦，请问有没有办法在父类实例方法里呼叫子类的实现？（已知子类名，子类实例，但希望创建父类实例就能呼叫子类实现……&lt;/p&gt;

&lt;p&gt;谢谢关注~望解答&lt;/p&gt;</description>
      <author>cysh</author>
      <pubDate>Sat, 30 Apr 2016 14:43:33 +0800</pubDate>
      <link>https://ruby-china.org/topics/29889</link>
      <guid>https://ruby-china.org/topics/29889</guid>
    </item>
    <item>
      <title>分享 RSpec 入门指南</title>
      <description>&lt;blockquote&gt;
&lt;p&gt;RSpec 是一个非常棒的工具。它在 BDD 流程的开发中被用来写高可读性的测试，引导并验证你开发的应用程序。&lt;/p&gt;

&lt;p&gt;网上有很多资源告诉你 RSpec 能“做什么”，但却很少有人讨论如何用它编写出高质量的测试用例。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Better Specs 通过收集其他开发者经年累月积攒的绝大部分“最佳实践”&lt;/strong&gt;来尝试着来填补这之间的鸿沟。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://betterspecs.org" rel="nofollow" target="_blank" title=""&gt;Better Specs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;最近在写测试发现这个网站，觉得很实用，翻译的也很棒，在站里搜了一圈好像没人分享过，果断分享一下&lt;/p&gt;</description>
      <author>cysh</author>
      <pubDate>Fri, 15 Apr 2016 18:50:46 +0800</pubDate>
      <link>https://ruby-china.org/topics/29732</link>
      <guid>https://ruby-china.org/topics/29732</guid>
    </item>
    <item>
      <title>Sequel 在做纯 API 项目时是不是比 ActiveRecord 更有优势？</title>
      <description>&lt;p&gt;&lt;del&gt;纯 API 的项目 Sequel 有什么比较明显的优势吗？&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;修改了一下标题（原标题：ORM 选择 Sequel 还是 ActiveRecord？）&lt;/p&gt;</description>
      <author>cysh</author>
      <pubDate>Mon, 11 Apr 2016 11:36:54 +0800</pubDate>
      <link>https://ruby-china.org/topics/29658</link>
      <guid>https://ruby-china.org/topics/29658</guid>
    </item>
    <item>
      <title>mina + rbenv 部署问题</title>
      <description>&lt;p&gt;好像是 Ruby 环境出了点问题，mina deploy 到 bundle 的时候，会报错，提示安装 rake 10.4.2
服务器上默认 ruby version 是 2.1.3，gem list 中 rake version 默认是 10.4.2
项目下添加了.ruby-version
为什么会有环境问题…？到底是哪里出了问题…求指点迷津……&lt;/p&gt;

&lt;p&gt;贴一下 config/deploy.rb&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mina/bundler'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mina/rails'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mina/git'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mina/rbenv'&lt;/span&gt;  &lt;span class="c1"&gt;# for rbenv support. (http://rbenv.org)&lt;/span&gt;

&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:domain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'my_ip'&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:deploy_to&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'/home/user/apps/project'&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:repository&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'git@my_git_address.git'&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:branch&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'dev'&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:rbenv_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'/home/user/.rbenv'&lt;/span&gt;

&lt;span class="c1"&gt;# For system-wide RVM install.&lt;/span&gt;
&lt;span class="c1"&gt;#   set :rvm_path, '/usr/local/rvm/bin/rvm'&lt;/span&gt;

&lt;span class="c1"&gt;# Manually create these paths in shared/ (eg: shared/config/database.yml) in your server.&lt;/span&gt;
&lt;span class="c1"&gt;# They will be linked in the 'deploy:link_shared_paths' step.&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:shared_paths&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'config/settings.yml'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# Optional settings:&lt;/span&gt;
   &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'deploy_user'&lt;/span&gt;    &lt;span class="c1"&gt;# Username in the server to SSH to.&lt;/span&gt;
   &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:port&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'22'&lt;/span&gt;     &lt;span class="c1"&gt;# SSH port number.&lt;/span&gt;

&lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="ss"&gt;:environment&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;queue&lt;/span&gt; &lt;span class="sx"&gt;%{export RBENV_ROOT=&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;rbenv_path&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;}&lt;/span&gt;
  &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'rbenv:load'&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="ss"&gt;:setup&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;:environment&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;queue!&lt;/span&gt; &lt;span class="sx"&gt;%[mkdir -p "&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;deploy_to&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;shared_path&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;/log"]&lt;/span&gt;
  &lt;span class="n"&gt;queue!&lt;/span&gt; &lt;span class="sx"&gt;%[chmod g+rx,u+rwx "&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;deploy_to&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;shared_path&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;/log"]&lt;/span&gt;

  &lt;span class="n"&gt;queue!&lt;/span&gt; &lt;span class="sx"&gt;%[mkdir -p "&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;deploy_to&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;shared_path&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;/config"]&lt;/span&gt;
  &lt;span class="n"&gt;queue!&lt;/span&gt; &lt;span class="sx"&gt;%[chmod g+rx,u+rwx "&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;deploy_to&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;shared_path&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;/config"]&lt;/span&gt;

  &lt;span class="n"&gt;queue!&lt;/span&gt; &lt;span class="sx"&gt;%[touch "&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;deploy_to&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;shared_path&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;/config/settings.yml"]&lt;/span&gt;
  &lt;span class="n"&gt;queue&lt;/span&gt;  &lt;span class="sx"&gt;%[echo "-----&amp;gt; Be sure to edit '&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;deploy_to&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;shared_path&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;/config/settings.yml'."]&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;desc&lt;/span&gt; &lt;span class="s2"&gt;"Deploys the current version to the server."&lt;/span&gt;
&lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="ss"&gt;:deploy&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;:environment&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="ss"&gt;:before_hook&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="c1"&gt;# Put things to run locally before ssh&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="n"&gt;deploy&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'git:clone'&lt;/span&gt;
    &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'deploy:link_shared_paths'&lt;/span&gt;
    &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'bundle:install'&lt;/span&gt;
    &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'rails:db_migrate'&lt;/span&gt;
    &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'rails:assets_precompile'&lt;/span&gt;
    &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'deploy:cleanup'&lt;/span&gt;

    &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="ss"&gt;:launch&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="n"&gt;queue&lt;/span&gt; &lt;span class="s2"&gt;"touch tmp/restart.txt"&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我错了。。该问题是 gem 源花式抽风造成的，最后的解决办法是淘宝源和 rubygems 来回切换了十多回总算把 bundle 跑完了…但还是很疑惑 mina deploy 过程为什么要重新 install list 中已经存在的 gem。。目前 mina 还在抽风中，各种不明 failed…唉，结贴&lt;/p&gt;</description>
      <author>cysh</author>
      <pubDate>Mon, 18 May 2015 16:20:14 +0800</pubDate>
      <link>https://ruby-china.org/topics/25624</link>
      <guid>https://ruby-china.org/topics/25624</guid>
    </item>
  </channel>
</rss>
