<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>jasonZYJ (JasonZYJ)</title>
    <link>https://ruby-china.org/jasonZYJ</link>
    <description>RubyFan</description>
    <language>en-us</language>
    <item>
      <title>访问论坛出现 '503 Service Temporarily Unavailable'错误</title>
      <description>&lt;p&gt;最近连接公司的小米路由器无线网和家里的 TPLINK 无线网访问论坛时候都会出现如标题中的错误信息，已在 Chrome,Safari 和 Firefox 三个浏览器上试过;手机连接无线网分别从客户端和浏览器访问也是同样结果，但是用手机的 4g 网络却是可以正常访问，求赐教&lt;/p&gt;</description>
      <author>jasonZYJ</author>
      <pubDate>Mon, 06 Feb 2017 20:47:52 +0800</pubDate>
      <link>https://ruby-china.org/topics/32251</link>
      <guid>https://ruby-china.org/topics/32251</guid>
    </item>
    <item>
      <title>当数组包含重复元素的时候，Ruby array#permutation 的方法返回有重复</title>
      <description>&lt;p&gt;For example:&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&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;1&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="nf"&gt;permutation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_a&lt;/span&gt;
&lt;span class="c1"&gt;#=&amp;gt; [[1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1]] &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个结果应该是根据数组每个元素的 index 排列的结果而不是元素的值，所以会有重复，为何这么设计呢？&lt;/p&gt;</description>
      <author>jasonZYJ</author>
      <pubDate>Tue, 08 Mar 2016 18:10:17 +0800</pubDate>
      <link>https://ruby-china.org/topics/29242</link>
      <guid>https://ruby-china.org/topics/29242</guid>
    </item>
    <item>
      <title>Mac OS X 10.10 Yosemite Rails 环境 ( For the adventurous ONLY)</title>
      <description>&lt;p&gt;1.安装 Homebrew
如果中途弹出安装 XCode 命令行工具，点击 yes&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ruby &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.github.com/Homebrew/homebrew/go/install&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2.安装 Ruby
我们将用 rbenv 来安装和管理 ruby 版本，命令如下：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;rbenv ruby-build

&lt;span class="c"&gt;# 把rbenv加入到bash以便每次打开terminal会自动载入&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'if which rbenv &amp;gt; /dev/null; then eval "$(rbenv init -)"; fi'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.bash_profile
&lt;span class="nb"&gt;source&lt;/span&gt; ~/.bash_profile

&lt;span class="c"&gt;# 安装 Ruby 2.1.2 ，设置为default&lt;/span&gt;
rbenv &lt;span class="nb"&gt;install &lt;/span&gt;2.1.2
rbenv global 2.1.2

ruby &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;span class="c"&gt;# ruby 2.1.2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;3.安装 Rails&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gem &lt;span class="nb"&gt;install &lt;/span&gt;rails
&lt;span class="c"&gt;#为了用rails我们需要rbenv可以看到它&lt;/span&gt;
rbenv rehash
&lt;span class="c"&gt;#可以验证此时rails已安装&lt;/span&gt;
rails &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;span class="c"&gt;# Rails 4.1.1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;4.配置 Git&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; color.ui &lt;span class="nb"&gt;true
&lt;/span&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &lt;span class="s2"&gt;"Yours"&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email &lt;span class="s2"&gt;"your mail"&lt;/span&gt;
ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; rsa &lt;span class="nt"&gt;-C&lt;/span&gt; &lt;span class="s2"&gt;"your mail"&lt;/span&gt;
&lt;span class="c"&gt;#执行下面命令把输出手动放置到github上&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; ~/.ssh/id_rsa.pub
&lt;span class="c"&gt;#一旦放置ok,可检查是否工作&lt;/span&gt;
ssh &lt;span class="nt"&gt;-T&lt;/span&gt; git@github.com
&lt;span class="c"&gt;#如果成功你可以得到成功信息提示&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;5.安装 PostgreSQL&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;postgresql
&lt;span class="c"&gt;#成功后你可以按照以下命令运行&lt;/span&gt;
&lt;span class="c"&gt;# 登陆时候启动 postgresql:&lt;/span&gt;
&lt;span class="nb"&gt;ln&lt;/span&gt; &lt;span class="nt"&gt;-sfv&lt;/span&gt; /usr/local/opt/postgresql/&lt;span class="k"&gt;*&lt;/span&gt;plist ~/Library/LaunchAgents

&lt;span class="c"&gt;# 然后载入postgresql:&lt;/span&gt;
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
&lt;span class="c"&gt;#默认用户名是OSX用户名，没有密码&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>jasonZYJ</author>
      <pubDate>Sun, 22 Jun 2014 23:38:54 +0800</pubDate>
      <link>https://ruby-china.org/topics/20111</link>
      <guid>https://ruby-china.org/topics/20111</guid>
    </item>
    <item>
      <title>Httparty 使用小小记</title>
      <description>&lt;p&gt;1.首先当然是添加 gem，然后 bundle install;
2.在你的 class 里包括 HTTParty;
3.我所做的是需要发送 post 请求来判断 fax 的状态是否成功，sending?sent？还是 failed?,用 Nokogiri::XML 来解析得到自己想要的结点值来继续下一步逻辑;&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;PurchaseOrderFaxStatusUpdater&lt;/span&gt;
  &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;HTTParty&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_fax_status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;job_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
      &lt;span class="n"&gt;response&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&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;SERVER&lt;/span&gt; &lt;span class="no"&gt;URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:body&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;YOUR&lt;/span&gt; &lt;span class="no"&gt;BODY&lt;/span&gt; &lt;span class="no"&gt;CONTENT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:headers&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;'Content-type'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'text/xml'&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;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;is_a?&lt;/span&gt; &lt;span class="no"&gt;Net&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;HTTPOK&lt;/span&gt; &lt;span class="c1"&gt;# httparty response is NET::HTTP, response ok here then go on&lt;/span&gt;
        &lt;span class="n"&gt;xml_doc&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Nokogiri&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;XML&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;body&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;xml_doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;xpath&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"//namespace:&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="no"&gt;NODE&lt;/span&gt; &lt;span class="no"&gt;NAME&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'namespace'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;YOUR&lt;/span&gt; &lt;span class="no"&gt;NAMESPACE&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;first&lt;/span&gt;
       &lt;span class="c1"&gt;#YOUR LOGIC HERE&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>jasonZYJ</author>
      <pubDate>Thu, 10 Apr 2014 10:29:35 +0800</pubDate>
      <link>https://ruby-china.org/topics/18510</link>
      <guid>https://ruby-china.org/topics/18510</guid>
    </item>
    <item>
      <title>如何借助 fiber 调用数据库，看看在并发情况下能提高多少性能？？？</title>
      <description>&lt;p&gt;前提：借助 em-synchrony 带的 em_mysql2 测 activerecord；哪位大侠可以提供一个例子参考的，这儿的知识太够陌生啊，越详细约好，在此谢过啊，&lt;/p&gt;</description>
      <author>jasonZYJ</author>
      <pubDate>Tue, 11 Mar 2014 00:24:12 +0800</pubDate>
      <link>https://ruby-china.org/topics/17790</link>
      <guid>https://ruby-china.org/topics/17790</guid>
    </item>
    <item>
      <title>(已解决) Rails 中 CSV.parse 在开发环境工作正常，而在 production 环境下不工作</title>
      <description>&lt;p&gt;1.一段读取解析 csv 文件：代码如下&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;'csv'&lt;/span&gt;
  &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'cmess/guess_encoding'&lt;/span&gt;
  &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'iconv'&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;parse_csv&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file_name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;charset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;guess_encoding&lt;/span&gt; &lt;span class="n"&gt;file_name&lt;/span&gt;
    &lt;span class="n"&gt;csv&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;
    &lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"rb"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:external_encoding&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;charset&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:internal_encoding&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"UTF-8"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;csv&lt;/span&gt; &lt;span class="o"&gt;=&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;read&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"File read csv:&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;csv&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;csv&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="no"&gt;Iconv&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;conv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"utf-8"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;charset&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;csv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;unless&lt;/span&gt; &lt;span class="n"&gt;charset&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;"UTF-8"&lt;/span&gt;
    &lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Iconv conv csv:&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;csv&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;CSV&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;csv&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:col_sep&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;","&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"CSV parse csv:&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;rows&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2.Config/application.eb中代码如下：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expand_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'../boot'&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="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'csv'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'rails/all'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;3.Development 环境下工作 ok,log 输出正常，但是 production 环境下 log 只会输出到前两个，第三个未输出，CSV.parse 此时未工作，何解？？
经过查看 production log，报了这个错 Java::JavaLang::ArrayIndexOutOfBoundsException (-69)；然后打印出 file.open 读取的 csv 字段，发现字段是已完全读取，但是在 header 的最开始的部分却多了个问号，就像下面这个 sample_data(csv file has 7columns):
"?Purchaser,Purchaser ID,Supplier,Supplier ID,Product,Product ID,Billing Rate
Le Meridien Shimei Bay Beach Resort and Spa,5033,hainan company,12897,Lamp  T5-21W 2700K,665369,0.5";此时读出的 string 为什么会多一个问号呢？？
而且此读出的字符串 encoding 为 UTF-8，会跳过 Iconv.conv 直接到 CSV.parse，此时就会曝出 ArrayIndexOutOfBoundsException 错误，初步估计就是那个问号导致；而且本地 development 环境打印出来看不到此符号，但是 production 上 log 上就会有此问号&lt;/p&gt;

&lt;p&gt;解决：读取 csv 文件 header 第一个字段前面会加上 16 进制串：“\xEF\xBB\xBF”导致解析的错误，解决方法就是 sub 去掉这个十六进制字符串，问题解决，当然还有更好方案的童鞋欢迎指正&lt;/p&gt;</description>
      <author>jasonZYJ</author>
      <pubDate>Mon, 03 Mar 2014 17:32:13 +0800</pubDate>
      <link>https://ruby-china.org/topics/17634</link>
      <guid>https://ruby-china.org/topics/17634</guid>
    </item>
    <item>
      <title>开发 website 连接外部数据库 (多个数据库) 配置</title>
      <description>&lt;p&gt;1.增加 external_database.yml 在 project/config，配置如下 (以连接 postgresql 为例)：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="ss"&gt;development:
  adapter: &lt;/span&gt;&lt;span class="n"&gt;postgresql&lt;/span&gt;
  &lt;span class="ss"&gt;database: &lt;/span&gt;&lt;span class="no"&gt;DataBase_DEV&lt;/span&gt;
  &lt;span class="ss"&gt;encoding: &lt;/span&gt;&lt;span class="n"&gt;utf8&lt;/span&gt;
  &lt;span class="ss"&gt;pool: &lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;
  &lt;span class="ss"&gt;timeout: &lt;/span&gt;&lt;span class="mi"&gt;5000&lt;/span&gt;
  &lt;span class="ss"&gt;username: &lt;/span&gt;&lt;span class="n"&gt;yourname&lt;/span&gt;
  &lt;span class="ss"&gt;password: &lt;/span&gt;&lt;span class="n"&gt;yourpassword&lt;/span&gt;
  &lt;span class="ss"&gt;host: &lt;/span&gt;&lt;span class="n"&gt;localhost&lt;/span&gt;

&lt;span class="ss"&gt;production:
  adapter: &lt;/span&gt;&lt;span class="n"&gt;postgresql&lt;/span&gt;
  &lt;span class="ss"&gt;database: &lt;/span&gt;&lt;span class="no"&gt;DataBase_PROD&lt;/span&gt;
  &lt;span class="ss"&gt;encoding: &lt;/span&gt;&lt;span class="n"&gt;utf8&lt;/span&gt;
  &lt;span class="ss"&gt;pool: &lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;
  &lt;span class="ss"&gt;timeout: &lt;/span&gt;&lt;span class="mi"&gt;5000&lt;/span&gt;
  &lt;span class="ss"&gt;username: &lt;/span&gt;&lt;span class="n"&gt;yourname&lt;/span&gt;
  &lt;span class="ss"&gt;password: &lt;/span&gt;&lt;span class="n"&gt;yourpassword&lt;/span&gt;
  &lt;span class="ss"&gt;host: &lt;/span&gt;&lt;span class="n"&gt;remote&lt;/span&gt; &lt;span class="n"&gt;ip&lt;/span&gt; &lt;span class="n"&gt;address&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2.增加 external_databases.rb 文件在 project/config/initializers，内容如下 (初始化外部数据库的各个参数)：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;EXTERNAL_DATABASE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;YAML&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load_file&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;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;root&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/config/external_database.yml"&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;env&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;3.增加 external_db_object.rb 文件在 projrct/app/models/,内容如下（建立外部数据库连接）：&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;ExternalDbObject&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="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;abstract_class&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;
  &lt;span class="k"&gt;begin&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="sx"&gt;%w[production development test]&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;include?&lt;/span&gt; &lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;env&lt;/span&gt;
      &lt;span class="n"&gt;establish_connection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
          &lt;span class="ss"&gt;:adapter&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;EXTERNAL_DATABASE&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"adapter"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
          &lt;span class="ss"&gt;:pool&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;EXTERNAL_DATABASE&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"pool"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
          &lt;span class="ss"&gt;:timeout&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;EXTERNAL_DATABASE&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"timeout"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
          &lt;span class="ss"&gt;:host&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;EXTERNAL_DATABASE&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"host"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
          &lt;span class="ss"&gt;:database&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;EXTERNAL_DATABASE&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"database"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
          &lt;span class="ss"&gt;:username&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;EXTERNAL_DATABASE&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"username"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
          &lt;span class="ss"&gt;:password&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;EXTERNAL_DATABASE&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"password"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
          &lt;span class="ss"&gt;:encoding&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;EXTERNAL_DATABASE&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"encoding"&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;rescue&lt;/span&gt; &lt;span class="no"&gt;Exception&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;
    &lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Failed to connect to &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="no"&gt;EXTERNAL_DATABASE&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"adapter"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;backtrace&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;4.此上三部已设置好外部数据库的连接信息，此时如果要用外部数据库的某个表（例如 sample_cars）建立 model:&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;Car&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ExternalDbObject&lt;/span&gt; &lt;span class="err"&gt;（&lt;/span&gt;&lt;span class="n"&gt;注意此时要继承ExternalDbObject&lt;/span&gt;  &lt;span class="n"&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="err"&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;table_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"sample_cars"&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;至此完成了外部数据库的连接，指定了 sample_cars 表作为 Car model 对应的表，此时表中各个字段均可为此 model 所用，包括 find 各方法；
     如果用到多张表（每个都继承 ExternalDbObject），而且表间有关联，只需要添加关联，association 关系完全适用&lt;/p&gt;</description>
      <author>jasonZYJ</author>
      <pubDate>Thu, 13 Feb 2014 12:26:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/17223</link>
      <guid>https://ruby-china.org/topics/17223</guid>
    </item>
    <item>
      <title>git did not exit cleanly (exit code 128) 的解决</title>
      <description>&lt;p&gt;最近 git pull 或者 push 的时候出现如标题的错误，最终发现是无线网速龟速导致一直提示这个 error，同事机器也会出现，但是切换到有线稳定的网络（网速过得去）就不会有这问题啊，大家都来说说出现这情况的其他原因吧&lt;/p&gt;</description>
      <author>jasonZYJ</author>
      <pubDate>Sun, 29 Dec 2013 10:56:39 +0800</pubDate>
      <link>https://ruby-china.org/topics/16486</link>
      <guid>https://ruby-china.org/topics/16486</guid>
    </item>
    <item>
      <title>ruby 中有直接处理季度的方法吗？比如 2013Q1 解析为一个日 期范围区间？</title>
      <description>&lt;p&gt;ruby 中有直接处理季度的方法吗？比如 2013Q1 解析为一个日期范围区间？&lt;/p&gt;</description>
      <author>jasonZYJ</author>
      <pubDate>Tue, 25 Jun 2013 10:50:56 +0800</pubDate>
      <link>https://ruby-china.org/topics/11970</link>
      <guid>https://ruby-china.org/topics/11970</guid>
    </item>
    <item>
      <title>(已解决) rails project 打包为 war 的详细步骤？</title>
      <description>&lt;p&gt;现完成一个 rails project，准备打包到 tomcat 上，但不知详细步骤，用的是 gem warbler 来打包，在线等啊？请详细告知步骤，不甚感激啊&lt;/p&gt;

&lt;p&gt;已解决：gem warbler，打包命令&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;jruby&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="no"&gt;S&lt;/span&gt; &lt;span class="n"&gt;warble&lt;/span&gt; &lt;span class="n"&gt;war&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>jasonZYJ</author>
      <pubDate>Mon, 26 Nov 2012 10:08:30 +0800</pubDate>
      <link>https://ruby-china.org/topics/7091</link>
      <guid>https://ruby-china.org/topics/7091</guid>
    </item>
  </channel>
</rss>
