<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>googya (leslie)</title>
    <link>https://ruby-china.org/googya</link>
    <description>不自重者取辱， 不自长者取祸</description>
    <language>en-us</language>
    <item>
      <title>推荐本地查看 gem 源代码的插件 gemsrc</title>
      <description>&lt;p&gt;&lt;a href="https://github.com/amatsuda/gem-src" rel="nofollow" target="_blank" title=""&gt;gemsrc&lt;/a&gt;  是个插件，作者对其描述为“Gem.post_install { &lt;code&gt;git clone gem_source src&lt;/code&gt; } ”，顾名思义，当 install 了一个 gem 之后，会将其源代码 clone 到指定地方，方便以后查阅、研究。做如下配置即可：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/amatsuda/gem-src.git ~/.rbenv/plugins/gem-src
&lt;span class="nb"&gt;mkdir&lt;/span&gt; ~/src
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"gemsrc_clone_root: ~/src"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.gemrc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;该 gem 可以单独使用，作者推荐的做法是，它作为 rbenv 的一个 plugin 更好 (如果你用 rbenv 管理 ruby 版本的话)。&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/amatsuda/gem-src.git ~/.rbenv/plugins/gem-src
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以上只是使用 git clone 源代码，如果有名字相同的，就不会 clone 代码，所以作者又推荐与另外一个代码管理工具 &lt;a href="https://github.com/motemen/ghq" rel="nofollow" target="_blank" title=""&gt;ghq&lt;/a&gt; 配合使用：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;GEMSRC_USE_GHQ&lt;/code&gt; environment variable&lt;/li&gt;
&lt;li&gt; add &lt;code&gt;gemsrc_use_ghq&lt;/code&gt; configuration in your .gemrc&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ghq 在 OSX 上有两种安装方式：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;brew install ghq&lt;/li&gt;
&lt;li&gt;go get github.com/motemen/ghq&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ghq，配合 (peco)[&lt;a href="https://github.com/peco/peco" rel="nofollow" target="_blank"&gt;https://github.com/peco/peco&lt;/a&gt;] 效果又更好，能够互动搜索，我在 profile 文件中设置了&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;ghqlist&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'cd $(ghq list -p | peco)'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这么做了之后，能直接跳到代码库，很是方便。&lt;/p&gt;

&lt;p&gt;用 gemsrc 对于 rubyist 来说，至少有两个好处：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;能知道使用了那些 gem&lt;/li&gt;
&lt;li&gt;方便查看 gem 的源代码&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>googya</author>
      <pubDate>Sat, 18 Mar 2017 19:36:52 +0800</pubDate>
      <link>https://ruby-china.org/topics/32574</link>
      <guid>https://ruby-china.org/topics/32574</guid>
    </item>
    <item>
      <title>大家对于通过多数据库来隔离数据的做法怎么看？</title>
      <description>&lt;p&gt;现在有个需求，一个项目上会有多个不同的 project，需要对每个 project 的数据进行隔离。我现在想通过每个 project 都有一个独立的数据库的方式来达到这个效果，有这样实践过，或者有其他方法的同学，说说呗&lt;/p&gt;

&lt;p&gt;我在 github 上找到 &lt;a href="https://github.com/influitive/apartment" rel="nofollow" target="_blank"&gt;https://github.com/influitive/apartment&lt;/a&gt;，它结合 PostgreSQL 可以达到分库的目的&lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Tue, 27 Jan 2015 15:41:46 +0800</pubDate>
      <link>https://ruby-china.org/topics/23967</link>
      <guid>https://ruby-china.org/topics/23967</guid>
    </item>
    <item>
      <title>Ruby 2.2 中 ObjectSpace.allocation_sourcefile ObjectSpace.allocation_sourceline 方法都木有了？</title>
      <description>&lt;p&gt;Ruby 2.2 中 ObjectSpace.allocation_sourcefile ObjectSpace.allocation_sourceline 方法都木有了？
咋回事？&lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Sat, 24 Jan 2015 11:52:05 +0800</pubDate>
      <link>https://ruby-china.org/topics/23919</link>
      <guid>https://ruby-china.org/topics/23919</guid>
    </item>
    <item>
      <title>PostgreSQL9.4: 不再为选择关系型还是非关系型数据库而苦恼</title>
      <description>&lt;p&gt;9.4 发布了，其中提到：&lt;/p&gt;

&lt;p&gt;With the new JSONB data type for PostgreSQL, users no longer have to choose between relational and non-relational data stores: they can have both at the same time. JSONB supports fast lookups and simple expression search queries using Generalized Inverted Indexes (GIN). Multiple new support functions enable users to extract and manipulate JSON data, with a performance which matches or surpasses the most popular document databases. With JSONB, table data can be easily integrated with document data for a fully integrated database environment.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.postgresql.org/about/news/1557/" rel="nofollow" target="_blank"&gt;http://www.postgresql.org/about/news/1557/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;这看起来挺不错的，实践起来真的好么？ &lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Fri, 19 Dec 2014 06:49:10 +0800</pubDate>
      <link>https://ruby-china.org/topics/23276</link>
      <guid>https://ruby-china.org/topics/23276</guid>
    </item>
    <item>
      <title>NSA 招聘 Ruby 程序员？</title>
      <description>&lt;p&gt;&lt;a href="http://www.nsa.gov/public_info/media_center/careers/video/TheProgrammer/index.html" rel="nofollow" target="_blank"&gt;http://www.nsa.gov/public_info/media_center/careers/video/TheProgrammer/index.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;貌似视频中出现的是 c-like 语言啊&lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Wed, 18 Dec 2013 22:12:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/16297</link>
      <guid>https://ruby-china.org/topics/16297</guid>
    </item>
    <item>
      <title>rails 中 _url _path 方法是什么怎么生成的？</title>
      <description>&lt;p&gt;之前看到有人提过相应的源代码在哪里，不过我现在忘记了，刚好在看 DTrace 有关的资料，Ruby 2.0.0 也提供了 Provider，于是我想试试通过查方法调用的过程，能不能发现点线索（有不正确的地方，希望大家指出来）。&lt;/p&gt;

&lt;p&gt;首先是准备 dtrace 脚本，如下：&lt;/p&gt;
&lt;pre class="highlight d"&gt;&lt;code&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="p"&gt;!/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sbin&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dtrace&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Zs&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="k"&gt;pragma&lt;/span&gt; &lt;span class="n"&gt;D&lt;/span&gt; &lt;span class="n"&gt;option&lt;/span&gt; &lt;span class="n"&gt;quiet&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="k"&gt;pragma&lt;/span&gt; &lt;span class="n"&gt;D&lt;/span&gt; &lt;span class="n"&gt;option&lt;/span&gt; &lt;span class="n"&gt;switchrate&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;

&lt;span class="n"&gt;self&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;depth&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;


&lt;span class="n"&gt;ruby&lt;/span&gt;&lt;span class="p"&gt;*:::&lt;/span&gt;&lt;span class="n"&gt;method&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt;
&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;pid&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;copyinstr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;arg1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
   &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"%*s-&amp;gt; %s in %s  @ %d \n"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;depth&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;span class="s"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="n"&gt;copyinstr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;arg2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;arg3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
   &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;depth&lt;/span&gt;&lt;span class="p"&gt;++;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;ruby&lt;/span&gt;&lt;span class="p"&gt;*:::&lt;/span&gt;&lt;span class="n"&gt;method&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;
&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;pid&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;copyinstr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;arg1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
   &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;depth&lt;/span&gt; &lt;span class="p"&gt;-=&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;depth&lt;/span&gt; &lt;span class="p"&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="mi"&gt;1&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;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"%*s&amp;lt;- %s  @ %s \n"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;depth&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;span class="s"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="n"&gt;copyinstr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;arg2&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;
&lt;p&gt;有关 ruby 的  Provider，可以参见 &lt;a href="https://bugs.ruby-lang.org/projects/ruby/wiki/DTraceProbes" rel="nofollow" target="_blank" title=""&gt; DTraceProbes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;然后运行脚本：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chmod&lt;/span&gt; +x ruby_call_flow.d
&lt;span class="nb"&gt;sudo&lt;/span&gt; ./ruby_call_flow.d  &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; d_result.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;接着开一个 rails 项目的控制台，执行如下语句：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rails c 
&lt;/code&gt;&lt;/pre&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;user_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'aaa'&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 plaintext"&gt;&lt;code&gt;-&amp;gt; user_path in /Users/leslie/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-3.2.15/lib/action_dispatch/routing/route_set.rb  @ 215 
  -&amp;gt; hash_for_user_path in /Users/leslie/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-3.2.15/lib/action_dispatch/routing/route_set.rb  @ 180 
  &amp;lt;- hash_for_user_path  @ /Users/leslie/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-3.2.15/lib/action_dispatch/routing/route_set.rb 
  -&amp;gt; url_for in /Users/leslie/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-3.2.15/lib/action_dispatch/routing/url_for.rb  @ 143 
    -&amp;gt; _routes in /Users/leslie/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-3.2.15/lib/action_dispatch/routing/url_for.rb  @ 148 
    &amp;lt;- _routes  @ /Users/leslie/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-3.2.15/lib/action_dispatch/routing/url_for.rb 
    -&amp;gt; url_options in /Users/leslie/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-3.2.15/lib/action_dispatch/testing/integration.rb  @ 189 
    &amp;lt;- url_options  @ /Users/leslie/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-3.2.15/lib/action_dispatch/testing/integration.rb 
    -&amp;gt; url_for in /Users/leslie/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-3.2.15/lib/action_dispatch/routing/route_set.rb  @ 579 
                                  -&amp;gt; escape_path in /Users/leslie/.rvm/gems/ruby-2.0.0-p247/gems/journey-1.0.4/lib/journey/router/utils.rb  @ 44 
                                  &amp;lt;- escape_path  @ /Users/leslie/.rvm/gems/ruby-2.0.0-p247/gems/journey-1.0.4/lib/journey/router/utils.rb 
      -&amp;gt; url_for in /Users/leslie/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-3.2.15/lib/action_dispatch/http/url.rb  @ 23 
      &amp;lt;- url_for  @ /Users/leslie/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-3.2.15/lib/action_dispatch/http/url.rb 
    &amp;lt;- url_for  @ /Users/leslie/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-3.2.15/lib/action_dispatch/routing/route_set.rb 
  &amp;lt;- url_for  @ /Users/leslie/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-3.2.15/lib/action_dispatch/routing/url_for.rb 
&amp;lt;- user_path  @ /Users/leslie/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-3.2.15/lib/action_dispatch/routing/route_set.rb 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出格式有点乱，看图： &lt;img src="//l.ruby-china.com/photo/2013/6f81779bb8cf955451791cc75a474366.png" title="" alt=""&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;define_url_helper&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;route&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;kind&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;selector&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;url_helper_name&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;kind&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;hash_access_method&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;hash_access_name&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;kind&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;binding&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;pry&lt;/span&gt;
            &lt;span class="vi"&gt;@module.module_eval&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;-&lt;/span&gt;&lt;span class="no"&gt;END_EVAL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kp"&gt;__FILE__&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kp"&gt;__LINE__&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="sh"&gt;
              remove_possible_method :&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;selector&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;
              def &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;selector&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;(*args)
                url_for(&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;hash_access_method&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;(*args))
              end
&lt;/span&gt;&lt;span class="no"&gt;            END_EVAL&lt;/span&gt;
            &lt;span class="n"&gt;helpers&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;selector&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;p&gt;大家一般遇到常用的方法，而且想找到对应的源码的时候，都是怎么做的？&lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Tue, 19 Nov 2013 21:27:28 +0800</pubDate>
      <link>https://ruby-china.org/topics/15660</link>
      <guid>https://ruby-china.org/topics/15660</guid>
    </item>
    <item>
      <title>@avdi 说， Ruby 社区越来越趋于保守了</title>
      <description>&lt;p&gt;The Ruby ecosystem is beginning to transition to the conservative stage, as all human systems do. This is neither good nor bad.&lt;/p&gt;

&lt;p&gt;联想到之前发生的一些与 Goers 的论战，感觉，这不是国内个别的现象，国外也是如此。。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/avdi/status/390169955154419712" rel="nofollow" target="_blank" title=""&gt;原推&lt;/a&gt;&lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Wed, 16 Oct 2013 09:44:28 +0800</pubDate>
      <link>https://ruby-china.org/topics/14782</link>
      <guid>https://ruby-china.org/topics/14782</guid>
    </item>
    <item>
      <title>有人用过 MS SQL 的 ReportingServices 么？</title>
      <description>&lt;p&gt;最近有项目需要用  MSSQL 的 ReportingServices，使用 C# 能很容易访问其提供的 web services 功能，但是用 Ruby 的话，非常费劲（但是现在的环境是 Ruby 的，只能用它了）。&lt;/p&gt;

&lt;p&gt;费劲的地方在于，为了得到一个报表，需要访问三次，前两次为了第三次准备必要的访问数据（诸如 session 之类的东西）和参数。&lt;/p&gt;

&lt;p&gt;哪位同学有这方面的经验的，来说说呗！&lt;/p&gt;

&lt;p&gt;ps:  web services 访问用的是 Savon &lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Sat, 01 Jun 2013 17:43:37 +0800</pubDate>
      <link>https://ruby-china.org/topics/11405</link>
      <guid>https://ruby-china.org/topics/11405</guid>
    </item>
    <item>
      <title>有 mongodb 的投票相关的 gem 推荐么？</title>
      <description>&lt;p&gt;基于 ActiveRecord 的投票 gem 还是很多的，有些也非常知名，比如 activerecord-reputation-system，但是与 mongodb 相关的不是很多，且很多貌似没有再维护。大家常用的是哪些呢？&lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Wed, 12 Dec 2012 22:49:47 +0800</pubDate>
      <link>https://ruby-china.org/topics/7507</link>
      <guid>https://ruby-china.org/topics/7507</guid>
    </item>
    <item>
      <title>pry 中字符过长折回的问题</title>
      <description>&lt;p&gt;在 pry 中，如果输入过长，后二行的输出会覆盖到前一行，如下图所示&lt;/p&gt;

&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/4c1bba28bb579b81f8b454b01a706105.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;如果解决呢，是 readline 的问题么？&lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Fri, 30 Nov 2012 12:48:08 +0800</pubDate>
      <link>https://ruby-china.org/topics/7218</link>
      <guid>https://ruby-china.org/topics/7218</guid>
    </item>
    <item>
      <title>有遇到 Expected x.rb to define X (LoadError)  这样问题的么？</title>
      <description>&lt;p&gt;在 models 目录下，我新建了一个 目录 x，在其下 有一个 模型文件  x.rb&lt;/p&gt;

&lt;p&gt;├── models
│&amp;nbsp;&amp;nbsp; ├── y.rb
│&amp;nbsp;&amp;nbsp; ├── x
│&amp;nbsp;&amp;nbsp; │&amp;nbsp;&amp;nbsp; └── x.rb&lt;/p&gt;

&lt;p&gt;在 contollers 中，也有一个与 x 同名的 namespace，&lt;/p&gt;

&lt;p&gt;├── controllers
│&amp;nbsp;&amp;nbsp; ├──x
│&amp;nbsp;&amp;nbsp; │&amp;nbsp;&amp;nbsp; ├── x_controller.rb&lt;/p&gt;

&lt;p&gt;在 controller 中引用  x 模型的时候，出现 
Expected .../app/models/x/x.rb to define x::X&lt;/p&gt;

&lt;p&gt;如果 controller 不放在命名空间中就不会有这样的问题。这应该是加载路径没有对应上所致，大家有遇到这样的情况么，如何处理的呢？ &lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Sun, 11 Nov 2012 16:04:51 +0800</pubDate>
      <link>https://ruby-china.org/topics/6679</link>
      <guid>https://ruby-china.org/topics/6679</guid>
    </item>
    <item>
      <title>今年的 Ruby 大会还能正常进行么？</title>
      <description>&lt;p&gt;不是是连 Ruby 都不让用了吧？&lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Sun, 16 Sep 2012 21:08:40 +0800</pubDate>
      <link>https://ruby-china.org/topics/5571</link>
      <guid>https://ruby-china.org/topics/5571</guid>
    </item>
    <item>
      <title>textmate 的 File Browser 失去作用了</title>
      <description>&lt;p&gt;今天手贱，在打开了 File Browser 的窗口的情况下，把 tm 工作区的左边框拼命的往左边移动，直到最左边（最终效果是，使得 File Browser 隐藏起来了，而实际上菜单中显示，它是打开的）。然后，再也不能把边框往右边拖了，File Browser 被永远的隐藏起来了。。&lt;/p&gt;

&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/7d1c906235121ff701245cdf391db7e1.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Sat, 01 Sep 2012 17:28:39 +0800</pubDate>
      <link>https://ruby-china.org/topics/5303</link>
      <guid>https://ruby-china.org/topics/5303</guid>
    </item>
    <item>
      <title>同学们是如何处理异常的</title>
      <description>&lt;p&gt;异常处理有什么约定么？比如，什么时候该抛出去，异常的捕获呢，什么时候该捕获，应该捕获什么样的异常？&lt;/p&gt;

&lt;p&gt;java 中似乎要求得比较严格，使用有些方法的时候，强制要求捕获或者抛出相应异常。rails 中貌似要求不是那么严格。&lt;/p&gt;

&lt;p&gt;另外，ruby 中，要写出比较有自信的代码（我现在的认识是，代码中没有很多的 case when，if else 的判断），我想同样需要有些约定要遵守，大家在实践中如何做的？  &lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Tue, 10 Jul 2012 15:03:35 +0800</pubDate>
      <link>https://ruby-china.org/topics/4229</link>
      <guid>https://ruby-china.org/topics/4229</guid>
    </item>
    <item>
      <title>mac 中 vi 退出后的界面显示问题</title>
      <description>&lt;p&gt;在 mac 上，自 vi 退出后的界面是这样的
&lt;img src="//l.ruby-china.com/photo/37c1ccda7603617549d702e35038057e.png" title="" alt="mac"&gt;&lt;/p&gt;

&lt;p&gt;而在 ubuntu 等下面，退出来后，就是这样的&lt;/p&gt;

&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/4b9801166f9eb29d04ee13fa275ec2de.png" title="" alt="ubuntu"&gt;&lt;/p&gt;

&lt;p&gt;个人比较喜欢 ubuntu 上退出的方式。
我想 mac 上应该也有设置，不过一时还未找到。请知道的告知一下。&lt;/p&gt;

&lt;p&gt;同时，mac 上的终端上的警告声音也是挺烦人的，求关闭的方法（除静音之外的）  &lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Wed, 27 Jun 2012 14:40:22 +0800</pubDate>
      <link>https://ruby-china.org/topics/4013</link>
      <guid>https://ruby-china.org/topics/4013</guid>
    </item>
    <item>
      <title>如何处理 Rails 3.0 之前的 plugin？</title>
      <description>&lt;p&gt;目前有项目是 3.0 之前的，且在 vendor/plugins 下面有些 plugin（老式风格的），现升级到了 3.2，rails 提示说不在支持老式 plugin，需将其变成 gem，或者移入 lib 下面。&lt;/p&gt;

&lt;p&gt;根据实际情况，没有必要做成 gem 包，所以我想将它放在 lib 下面，同时做了如下的设置，&lt;/p&gt;

&lt;p&gt;1、在 config/initializers/下面写了初始化的文件，将之前的 plugin 加载。同时尝试了
2、在 application 的 config.autoload_paths 设置了自动加载项，在控制台中可以看到已自动加载，但是识别不了相应模块。&lt;/p&gt;

&lt;p&gt;做过类似活的同学能否说下经验？  &lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Tue, 19 Jun 2012 10:02:39 +0800</pubDate>
      <link>https://ruby-china.org/topics/3881</link>
      <guid>https://ruby-china.org/topics/3881</guid>
    </item>
    <item>
      <title>Delegate To or From?</title>
      <description>&lt;p&gt;delegate 是 Rails 扩展的一个方法，位于 Module  类，官方代码说其具有如下功效： &lt;/p&gt;
&lt;h2 id="Provides a delegate class method to easily expose contained objects' public methods"&gt;Provides a delegate class method to easily expose contained objects' public methods&lt;/h2&gt;
&lt;p&gt;# as your own。
详见：&lt;a href="https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/module/delegation.rb" rel="nofollow" target="_blank"&gt;https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/module/delegation.rb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;我有点不明白，为什么要使用 to，而不是其他。比如，如下代码：&lt;/p&gt;

&lt;p&gt;class Foo &amp;lt; ActiveRecord::Base
        belongs_to :greeter
        delegate :hello, :to =&amp;gt; :greeter
     end&lt;/p&gt;

&lt;p&gt;delegate :hello, :to =&amp;gt; :greeter 使 Foo 的实例具备 hello 方法。delegate 不是指派的意思么？指派 hello 方法到 greeter?  有不曾纠结于此的同学么？劳烦开导一下！   &lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Sat, 19 May 2012 22:27:05 +0800</pubDate>
      <link>https://ruby-china.org/topics/3381</link>
      <guid>https://ruby-china.org/topics/3381</guid>
    </item>
    <item>
      <title>在数据库查询之后能否往记录里添加其他属性？</title>
      <description>&lt;p&gt;遇到一个问题，看大家是否有好的建议！
问题如下
查询完记录之后，需要向记录中添加另外的一个属性，但是这个属性不需要作为字段存在的（虚拟属性这个技巧不适用于本问题，因为我需要将数据传给另外的地方）。&lt;/p&gt;

&lt;p&gt;我暂时用的一个比较矬的方法是
ActiveModel::Serializers::JSON 下面的 user.as_json(:methods =&amp;gt; :permalink) &lt;/p&gt;

&lt;p&gt;可以在查询完毕之后，添加方法，得到属性。
大家有更好（更简单、常用）的方法么？  &lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Sat, 31 Mar 2012 15:30:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/2301</link>
      <guid>https://ruby-china.org/topics/2301</guid>
    </item>
    <item>
      <title>比较一下 ruby-taiwan 与 ruby－china 的技术讨论氛围</title>
      <description>&lt;p&gt;我同时注册了如 ruby-china 和 ruby-taiwan 的帐户，所以对两个社区都大致有些了解（不全面），感觉二者虽然在社区的结构等方面比较相似，当然了，ruby-taiwan 是 clone 了 ruby-china 项目，然后做了些定制而成的，是血脉相连的，但是在对于技术相关的探讨方面氛围很不一样。&lt;/p&gt;

&lt;p&gt;在 ruby-taiwan 社区中，会员会讨论一些比较具体的问题，比如类似 params["id"] instead of params[:id]  等这样非常具体，但是很常见，对于开发实质性帮助的话题。当然也会有一些其他话题的讨论，但主要集中在具体技术上。我总体的感觉是，台湾社区非常的务实，注重实现和细节。我个人比较喜欢这样的氛围。&lt;/p&gt;

&lt;p&gt;反观 ruby-china 社区，感觉大伙对于工具什么，比如“emacs 和 vim 哪个更好啊”的话题更加热衷一些，而对于技术的实现细节等讨论关注的要少一些。我遇到了哪些问题，怎么样解决的，解决中遇到哪些问题，要注意什么等都貌似提及得很少，讨论得比较少。&lt;/p&gt;

&lt;p&gt;由于我对两个社区的了解有限，所以不能全面的比较，只是说说我的感受。两个都是新社区，都处在成长期，会形成不同的风格和氛围，如果能取长补短，这样对于社区的发展无疑是很有帮助的。我想，大家都希望我们 ruby-china 社区会成长的更好一些吧  &lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Wed, 07 Mar 2012 22:49:55 +0800</pubDate>
      <link>https://ruby-china.org/topics/1684</link>
      <guid>https://ruby-china.org/topics/1684</guid>
    </item>
    <item>
      <title> 查询数据库时，有什么办法避免使用 union 么？</title>
      <description>&lt;p&gt;假如表之间关系比较复杂，涉及到的表相对多，用 union 的话，会使得关系梳理比较清楚一些。但，性能比较低，更重要的是，还须使用 find_by_sql 这样的操作。问大家有什么好的建议么？&lt;/p&gt;

&lt;p&gt;1、如果不使用 union，那使用什么方式比较好？
      我能想到的做法是，分多次查询，然后组合结果。这样会增加查询的次数。。。不理  想。&lt;/p&gt;

&lt;p&gt;2、如果非用不可，那除了 find_by_sql 之外，有否其他方法？&lt;/p&gt;</description>
      <author>googya</author>
      <pubDate>Thu, 01 Mar 2012 15:41:26 +0800</pubDate>
      <link>https://ruby-china.org/topics/1531</link>
      <guid>https://ruby-china.org/topics/1531</guid>
    </item>
  </channel>
</rss>
