<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>scuwolf (liran)</title>
    <link>https://ruby-china.org/scuwolf</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>弱弱问个问题: 如果将一个字符串作为变量?</title>
      <description>&lt;p&gt;如何通过&lt;code&gt;a_val&lt;/code&gt;这个变量的值 ("aaa") 来定义一个 &lt;code&gt;aaa&lt;/code&gt;的变量，我知道 eval 可以做到，但是 eval 定义的只是 eval 内部可以访问的局部变量。还有其他的方法可以定义一个 eval 外部可以访问的局部变量么？&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1.9.3-p547 :010 &amp;gt; a_var='aaa'
 =&amp;gt; "aaa" 
1.9.3-p547 :011 &amp;gt; eval "#{a_var}='bbb'; aaa"
 =&amp;gt; "bbb" 
1.9.3-p547 :012 &amp;gt; aaa
NameError: undefined local variable or method `aaa' for main:Object
    from (irb):12
    from /home/coremail/.rvm/rubies/ruby-1.9.3-p547/bin/irb:12:in `&amp;lt;main&amp;gt;'
1.9.3-p547 :013 &amp;gt; 
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>scuwolf</author>
      <pubDate>Thu, 24 Dec 2015 00:08:37 +0800</pubDate>
      <link>https://ruby-china.org/topics/28506</link>
      <guid>https://ruby-china.org/topics/28506</guid>
    </item>
    <item>
      <title>求思路</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Post&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;
  &lt;span class="n"&gt;belongs_to&lt;/span&gt; &lt;span class="ss"&gt;:user&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;User&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;
        &lt;span class="n"&gt;has_many&lt;/span&gt; &lt;span class="ss"&gt;:posts&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;user_id user_name
1           hanmeimei
2           lilei&lt;/p&gt;

&lt;p&gt;post_id user_id post_key post_value
1           1         key1         value1
2           1         key2         value2&lt;/p&gt;

&lt;p&gt;我想请求 /user/1/posts 返回一个 json 如下&lt;/p&gt;

&lt;p&gt;{
  key1: value1,
  key2: value2
}&lt;/p&gt;

&lt;p&gt;很小白的问题，但是想了很久也不知道怎么解决，求指导思路&lt;/p&gt;</description>
      <author>scuwolf</author>
      <pubDate>Fri, 12 Sep 2014 22:44:51 +0800</pubDate>
      <link>https://ruby-china.org/topics/21510</link>
      <guid>https://ruby-china.org/topics/21510</guid>
    </item>
    <item>
      <title>do ... end 和 {} 不是通用的么？</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Hash&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;to_method&lt;/span&gt;
    &lt;span class="nb"&gt;hash&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;self&lt;/span&gt;
    &lt;span class="no"&gt;Module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each_pair&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
        &lt;span class="n"&gt;define_method&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_sym&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
          &lt;span class="n"&gt;v&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;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;Test&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extend&lt;/span&gt; &lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_method&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Test&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:fun1&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'var1'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fun1&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;Hash&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;to_method&lt;/span&gt;
    &lt;span class="nb"&gt;hash&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;self&lt;/span&gt;
    &lt;span class="no"&gt;Module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each_pair&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
        &lt;span class="n"&gt;define_method&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_sym&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;v&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;# 就见过这里的do end, 改成了 {}&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;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Test&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extend&lt;/span&gt; &lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_method&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Test&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:fun1&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'var1'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fun1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;报错&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;define_hash_method.v2.rb:6:in `define_method': tried to create Proc object without a block (ArgumentError)
        from define_hash_method.v2.rb:6:in `block (2 levels) in to_method'
        from define_hash_method.v2.rb:5:in `each_pair'
        from define_hash_method.v2.rb:5:in `block in to_method'
        from define_hash_method.v2.rb:4:in `initialize'
        from define_hash_method.v2.rb:4:in `new'
        from define_hash_method.v2.rb:4:in `to_method'
        from define_hash_method.v2.rb:14:in `initialize'
        from define_hash_method.v2.rb:18:in `new'
        from define_hash_method.v2.rb:18:in `&amp;lt;main&amp;gt;'
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>scuwolf</author>
      <pubDate>Fri, 29 Aug 2014 15:43:06 +0800</pubDate>
      <link>https://ruby-china.org/topics/21287</link>
      <guid>https://ruby-china.org/topics/21287</guid>
    </item>
    <item>
      <title>好弱，今天才知道 Shift + K 可以直接打开 ri 文档</title>
      <description>&lt;p&gt;在一个方法上随便点了下 shift + k, 居然开了方法文档&lt;/p&gt;

&lt;p&gt;话说这个功能是那个插件提供的啊&lt;/p&gt;</description>
      <author>scuwolf</author>
      <pubDate>Wed, 27 Aug 2014 01:35:26 +0800</pubDate>
      <link>https://ruby-china.org/topics/21240</link>
      <guid>https://ruby-china.org/topics/21240</guid>
    </item>
    <item>
      <title>Rails 项目使用什么 CI 服务器的比较多</title>
      <description>&lt;p&gt;自建的 gitlab 服务，用户使用的 openid 认证，用 gitlab-ci 的时候 openid 用户认证无法通过，只能使用 gitlab 自建的那些帐号，这个无法接受。&lt;/p&gt;

&lt;p&gt;所以想问问还有其他什么 ci 软件能和 gitlab 比较好的结合的&lt;/p&gt;</description>
      <author>scuwolf</author>
      <pubDate>Sat, 15 Mar 2014 21:36:12 +0800</pubDate>
      <link>https://ruby-china.org/topics/17909</link>
      <guid>https://ruby-china.org/topics/17909</guid>
    </item>
    <item>
      <title>求一个正则表达式的解析</title>
      <description>&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1.9.3p385 :001 &amp;gt; 1999995.99.to_s.reverse.scan(/(?:\d*\.)?\d{1,3}-?/).join(',').reverse
 =&amp;gt; "1,999,995.99"
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里/(?:\d*.)?\d{1,3}-?/这个正则表达式，能否给分解下，尤其是 ?\d{1,3}-? 这个用法，以前没见过&lt;/p&gt;</description>
      <author>scuwolf</author>
      <pubDate>Thu, 02 Jan 2014 17:53:09 +0800</pubDate>
      <link>https://ruby-china.org/topics/16579</link>
      <guid>https://ruby-china.org/topics/16579</guid>
    </item>
    <item>
      <title>有没有开源的 rails 应用可以做一个简单的展示系统的</title>
      <description>&lt;p&gt;家里人开了个厂子，想做一个网站，主要几个需求是：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;展示产品&lt;/li&gt;
&lt;li&gt;在线留言&lt;/li&gt;
&lt;li&gt;在线 qq 交流&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;然后有类似淘宝首页那些图片一张张翻动的效果&lt;/p&gt;

&lt;p&gt;有没有这种开源的 rails 应用的？&lt;/p&gt;</description>
      <author>scuwolf</author>
      <pubDate>Sun, 29 Dec 2013 20:20:41 +0800</pubDate>
      <link>https://ruby-china.org/topics/16494</link>
      <guid>https://ruby-china.org/topics/16494</guid>
    </item>
    <item>
      <title>有没有使用 gitlab+ 自建 openid 认证的经验</title>
      <description>&lt;p&gt;最近公司上了 gitlab, 使用公司自建的 openid 认证也可以正常登录，建立 repo&lt;/p&gt;

&lt;p&gt;但是在使用 git clone https://.../.git时, 无法通过认证，提示：&lt;/p&gt;

&lt;p&gt;"fatal: Authentication failed"&lt;/p&gt;

&lt;p&gt;其中使用 openid 认证参考的这篇文章：&lt;a href="http://eric.van-der-vlist.com/blog/2013/11/23/how-to-customize-gitlab-to-support-openid-authentication/" rel="nofollow" target="_blank"&gt;http://eric.van-der-vlist.com/blog/2013/11/23/how-to-customize-gitlab-to-support-openid-authentication/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="/Saito" class="user-mention" title="@Saito"&gt;&lt;i&gt;@&lt;/i&gt;Saito&lt;/a&gt; 同学有遇到过这种问题否&lt;/p&gt;

&lt;p&gt;== UPDATE&lt;/p&gt;

&lt;p&gt;谢谢 1 楼同学的回复，不过忘说了&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;除了 openid 认证之外，ldap 也有在用，而通过 ldap 登录的用户就可以正常的使用 git clone https://...&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;不论 ldap 用户还是 openid 用户，ssh 协议都是没问题的&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>scuwolf</author>
      <pubDate>Fri, 29 Nov 2013 13:41:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/15883</link>
      <guid>https://ruby-china.org/topics/15883</guid>
    </item>
    <item>
      <title>有没有介绍 gitlab 各个组件都是啥功能的文章</title>
      <description>&lt;p&gt;按照 gitlab 官方文档已经正常跑起来了&lt;/p&gt;

&lt;p&gt;但是想弄清楚其中各个组件的作用，gitlab-shell redis sidekiq mysql 这些分别是做什么的？有没有类似的文章&lt;/p&gt;</description>
      <author>scuwolf</author>
      <pubDate>Mon, 04 Nov 2013 13:37:59 +0800</pubDate>
      <link>https://ruby-china.org/topics/15283</link>
      <guid>https://ruby-china.org/topics/15283</guid>
    </item>
    <item>
      <title>10w 级别的项目代码应该怎么看</title>
      <description>&lt;p&gt;用 puppet 比较多，准备看看 puppet 的代码，深入的研究下&lt;/p&gt;

&lt;p&gt;统计了下代码行数，结果吓尿了，10w 级别的...&lt;/p&gt;

&lt;p&gt;&lt;a href="/debian" class="user-mention" title="@debian"&gt;&lt;i&gt;@&lt;/i&gt;debian&lt;/a&gt;:~/var/puppet/lib/puppet$ wc -l &lt;code&gt;find . -name "*.rb"&lt;/code&gt;  | sort -n | tail -n1
 106845 总用量&lt;/p&gt;</description>
      <author>scuwolf</author>
      <pubDate>Mon, 28 Oct 2013 15:01:51 +0800</pubDate>
      <link>https://ruby-china.org/topics/15089</link>
      <guid>https://ruby-china.org/topics/15089</guid>
    </item>
    <item>
      <title>求问此处是变量还是方法调用</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Plugin&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;needs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;libraries&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;libraries&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;empty?&lt;/span&gt;
      &lt;span class="vi"&gt;@needs&lt;/span&gt; &lt;span class="o"&gt;||=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;
      &lt;span class="n"&gt;needs&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="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;libraries&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;flatten&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 这里needs是变量还是方法调用? 上下文中并没有找到有needs这个数组的初始化操作啊&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;</description>
      <author>scuwolf</author>
      <pubDate>Wed, 23 Oct 2013 16:58:13 +0800</pubDate>
      <link>https://ruby-china.org/topics/14964</link>
      <guid>https://ruby-china.org/topics/14964</guid>
    </item>
    <item>
      <title>推荐站点: http://www.sitepoint.com/ruby/</title>
      <description>&lt;p&gt;很多实用的 ruby 教程
&lt;a href="http://www.sitepoint.com/ruby/" rel="nofollow" target="_blank"&gt;http://www.sitepoint.com/ruby/&lt;/a&gt;&lt;/p&gt;</description>
      <author>scuwolf</author>
      <pubDate>Thu, 17 Oct 2013 14:23:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/14816</link>
      <guid>https://ruby-china.org/topics/14816</guid>
    </item>
    <item>
      <title>分享一段 ruby 代码，真是美如画啊</title>
      <description>&lt;p&gt;这么一段代码涉及了很多 ruby 的知识点。&lt;/p&gt;

&lt;p&gt;尤其是在 initialize 中直接接受 block 参数太漂亮了，想想如果要实现不同的排序方法，只需要将这个方法生成一个 Proc，传递给数组就可以了。&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;SortedArray&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;Array&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;sort_by&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="vi"&gt;@sort_by&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sort_by&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="no"&gt;Proc&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="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;sort!&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="vi"&gt;@sort_by&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;insert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;insert_before&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;find&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="vi"&gt;@sort_by.call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;insert_before&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;insert_before&lt;/span&gt; &lt;span class="p"&gt;:&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;v&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;insert&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;span class="n"&gt;v&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;alias&lt;/span&gt; &lt;span class="n"&gt;push&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;
  &lt;span class="k"&gt;alias&lt;/span&gt; &lt;span class="n"&gt;unshift&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;

  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"collect!"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"flatten!"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"[]="&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;each&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;method&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;class_eval&lt;/span&gt; &lt;span class="sx"&gt;%{
      def &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nb"&gt;method&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;(*args)
        super
        sort! &amp;amp;@sort_by
      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;</description>
      <author>scuwolf</author>
      <pubDate>Wed, 28 Aug 2013 10:24:04 +0800</pubDate>
      <link>https://ruby-china.org/topics/13685</link>
      <guid>https://ruby-china.org/topics/13685</guid>
    </item>
    <item>
      <title>《ruby cookbook》里面的一个例子请教</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SortedArray&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;Array&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;sort_by&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="vi"&gt;@sort_by&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sort_by&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="no"&gt;Proc&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="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;sort!&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;sort_by&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="no"&gt;SortedArray&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="mi"&gt;1&lt;/span&gt;&lt;span class="p"&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;2&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;sort! &amp;amp;sort_by&lt;/code&gt; 为什么 block 参数是&lt;code&gt;&amp;amp;sort_by&lt;/code&gt;而不是&lt;code&gt;&amp;amp;@sort_by&lt;/code&gt;呢？ 
sort_by 在这里并没有默认值啊，但是居然也可以输出正确的结果！&lt;/p&gt;</description>
      <author>scuwolf</author>
      <pubDate>Tue, 27 Aug 2013 22:40:36 +0800</pubDate>
      <link>https://ruby-china.org/topics/13679</link>
      <guid>https://ruby-china.org/topics/13679</guid>
    </item>
    <item>
      <title>谁给解析下这里 yield 的用法</title>
      <description>&lt;p&gt;谁给解析下下面代码里面两个 yield 的原理&lt;/p&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;
# home.html.erb
&lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="n"&gt;provide&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Home'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Sample App&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt; 
This is the home page for the
&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;"http://railstutorial.org/"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Ruby on Rails Tutorial&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
sample application.
&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# application_helper.rb&lt;/span&gt;

&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;ApplicationHelper&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt;  &lt;span class="nf"&gt;full_title&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;page_title&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;base_title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Ruby on Rails Tutorial Sample App"&lt;/span&gt;
    &lt;span class="n"&gt;page_title&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;empty?&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;base_title&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="n"&gt;base_title&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;page_title&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;pre class="highlight erb"&gt;&lt;code&gt;# application.html.erb     

&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;full_title&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;yield&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:title&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
  &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;stylesheet_link_tag&lt;/span&gt;    &lt;span class="s2"&gt;"application"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:media&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"all"&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;javascript_include_tag&lt;/span&gt; &lt;span class="s2"&gt;"application"&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;csrf_meta_tags&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;

&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>scuwolf</author>
      <pubDate>Fri, 02 Aug 2013 15:47:01 +0800</pubDate>
      <link>https://ruby-china.org/topics/13010</link>
      <guid>https://ruby-china.org/topics/13010</guid>
    </item>
    <item>
      <title>求问一个 vim 显示空格的问题</title>
      <description>&lt;p&gt;&lt;a href="http://railscasts-china.com/episodes/rails-with-vim" rel="nofollow" target="_blank"&gt;http://railscasts-china.com/episodes/rails-with-vim&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;这期 casts 里面，空格显示成 .. 是怎么实现的&lt;/p&gt;</description>
      <author>scuwolf</author>
      <pubDate>Fri, 02 Aug 2013 12:09:59 +0800</pubDate>
      <link>https://ruby-china.org/topics/13002</link>
      <guid>https://ruby-china.org/topics/13002</guid>
    </item>
    <item>
      <title>无法 push 到 heroku 了</title>
      <description>&lt;p&gt;****@debian:~/var/draft_work/first_rails_app$ git push heroku master -v
推送到 git@heroku.com:afternoon-springs-6261.git&lt;/p&gt;

&lt;p&gt;一直卡在这里了&lt;/p&gt;</description>
      <author>scuwolf</author>
      <pubDate>Thu, 01 Aug 2013 15:31:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/12974</link>
      <guid>https://ruby-china.org/topics/12974</guid>
    </item>
    <item>
      <title>有啥晚上和周末 Rails 兼职的机会么</title>
      <description>&lt;p&gt;现在做运维工程师的，不是真正的码农。&lt;/p&gt;

&lt;p&gt;接触 ruby 是因为用 puppet 做配置管理，之后就被它彻底的被吸引了，然后开始学习 ror html css javascript 这些前端的东西，基础都过了一遍了，发现开始写网页还是无从下手，还是要去翻书才行，手太生了。&lt;/p&gt;

&lt;p&gt;晚上和周末的时间比较空，下了几个开源的项目，没人指导的话，感觉和自己看书没啥区别。&lt;/p&gt;

&lt;p&gt;所以想找个项目跟着做做，关键是有大牛带下，最好是初创业的公司了，&lt;strong&gt;我还可以顺便帮手运维哦&lt;/strong&gt; 。&lt;/p&gt;</description>
      <author>scuwolf</author>
      <pubDate>Thu, 25 Jul 2013 23:29:18 +0800</pubDate>
      <link>https://ruby-china.org/topics/12781</link>
      <guid>https://ruby-china.org/topics/12781</guid>
    </item>
    <item>
      <title>codeschool 课程免费学习两天的邀请码</title>
      <description>&lt;p&gt;&lt;a href="http://go.codeschool.com/Rd1Cjg" rel="nofollow" target="_blank"&gt;http://go.codeschool.com/Rd1Cjg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;rails4zombie 真不错，其他的还没看。本来准备买的，结果发现可以有两天免费的学习机会。&lt;/p&gt;</description>
      <author>scuwolf</author>
      <pubDate>Thu, 11 Jul 2013 12:25:40 +0800</pubDate>
      <link>https://ruby-china.org/topics/12423</link>
      <guid>https://ruby-china.org/topics/12423</guid>
    </item>
    <item>
      <title>第三版中文还是第四版英文</title>
      <description>&lt;p&gt;感觉第三版中文翻译的还不错&lt;/p&gt;

&lt;p&gt;看英文进度有点慢，但是 rails 版本比较新&lt;/p&gt;</description>
      <author>scuwolf</author>
      <pubDate>Thu, 16 May 2013 11:52:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/11023</link>
      <guid>https://ruby-china.org/topics/11023</guid>
    </item>
  </channel>
</rss>
