<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>ghn645568344 (又忧桑)</title>
    <link>https://ruby-china.org/ghn645568344</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>请教 omniauth google 登录时 是好是坏 SSL_connect</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;ruby&lt;/span&gt; &lt;span class="mf"&gt;3.1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="n"&gt;rails&lt;/span&gt; &lt;span class="mf"&gt;7.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;本地的docker部署访问
http://127.0.0.1:3000/omniauth/google_oauth2
问题：授权页面可以访问打开，点击按钮后跳转页面时，是好是坏
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;坏时错误提示如下&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Cannot&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="n"&gt;console&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;128.1&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="no"&gt;Allowed&lt;/span&gt; &lt;span class="ss"&gt;networks: &lt;/span&gt;&lt;span class="mf"&gt;127.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;127.255&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;255.255&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="mi"&gt;2022&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mo"&gt;07&lt;/span&gt;&lt;span class="no"&gt;T08&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;59&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;37.737410&lt;/span&gt; &lt;span class="c1"&gt;#1] DEBUG -- omniauth: (google_oauth2) Callback phase initiated.&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2022&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mo"&gt;07&lt;/span&gt;&lt;span class="no"&gt;T08&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;59&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;37.956060&lt;/span&gt; &lt;span class="c1"&gt;#1] ERROR -- omniauth: (google_oauth2) Authentication failure! SSL_connect SYSCALL returned=5 errno=0 peeraddr=142.251.42.234:443 state=SSLv3/TLS write client hello: Faraday::SSLError, SSL_connect SYSCALL returned=5 errno=0 peeraddr=142.251.42.234:443 state=SSLv3/TLS write client hello&lt;/span&gt;
 &lt;span class="no"&gt;Faraday&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;SSLError&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;SSL_connect&lt;/span&gt; &lt;span class="no"&gt;SYSCALL&lt;/span&gt; &lt;span class="n"&gt;returned&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="n"&gt;errno&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="n"&gt;peeraddr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;142.251&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;42.234&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;443&lt;/span&gt; &lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="no"&gt;SSLv3&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="no"&gt;TLS&lt;/span&gt; &lt;span class="n"&gt;write&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="n"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
 &lt;span class="n"&gt;net&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;protocol&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;net&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;protocol&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;46&lt;/span&gt;&lt;span class="ss"&gt;:in&lt;/span&gt; &lt;span class="sb"&gt;`connect_nonblock'
net-protocol (0.1.3) lib/net/protocol.rb:46:in `&lt;/span&gt;&lt;span class="n"&gt;ssl_socket_connect&lt;/span&gt;&lt;span class="s1"&gt;'
 /usr/local/lib/ruby/3.1.0/net/http.rb:1048:in `connect'&lt;/span&gt;
 &lt;span class="sr"&gt;/usr/&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ruby&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;3.1&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;net&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;976&lt;/span&gt;&lt;span class="ss"&gt;:in&lt;/span&gt; &lt;span class="sb"&gt;`do_start'
 /usr/local/lib/ruby/3.1.0/net/http.rb:965:in `&lt;/span&gt;&lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="s1"&gt;'
faraday-net_http (3.0.1) lib/faraday/adapter/net_http.rb:112:in `request_with_wrapped_block'&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;config/initializers/omniauth.rb&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;middleware&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt; &lt;span class="no"&gt;OmniAuth&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Builder&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;provider&lt;/span&gt; &lt;span class="ss"&gt;:google_oauth2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"xxx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="s2"&gt;"xxxx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="p"&gt;{&lt;/span&gt;
             &lt;span class="ss"&gt;prompt: &lt;/span&gt;&lt;span class="s1"&gt;'select_account'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="ss"&gt;:scope&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"email, profile"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="no"&gt;OmniAuth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;allowed_request_methods&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:post&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:get&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Controller 文件&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;SessionsController&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ApplicationController&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create&lt;/span&gt;
    &lt;span class="c1"&gt;# user = User.from_omniauth(env["omniauth.auth"])&lt;/span&gt;
    &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"-------------"&lt;/span&gt;
    &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;request&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;span class="s1"&gt;'omniauth.auth'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;request&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;span class="s1"&gt;'omniauth.auth'&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;info&lt;/span&gt;
    &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;
    &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"-------------"&lt;/span&gt;
    &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;json: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;code: &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="ss"&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;def&lt;/span&gt; &lt;span class="nf"&gt;destroy&lt;/span&gt;
    &lt;span class="c1"&gt;# session[:user_id] = nil&lt;/span&gt;
    &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="n"&gt;root_url&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>ghn645568344</author>
      <pubDate>Mon, 07 Nov 2022 17:29:19 +0800</pubDate>
      <link>https://ruby-china.org/topics/42727</link>
      <guid>https://ruby-china.org/topics/42727</guid>
    </item>
    <item>
      <title>请教在 docker 制作镜像预编译时 怎样不链接数据库</title>
      <description>&lt;p&gt;ruby:2.5.0
rails:5.2.0
在 docker 制作镜像时候，执行&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;bundle&lt;/span&gt; &lt;span class="nb"&gt;exec&lt;/span&gt;  &lt;span class="n"&gt;rails&lt;/span&gt; &lt;span class="n"&gt;assets&lt;/span&gt;&lt;span class="ss"&gt;:precompile&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/ghn645568344/1566943d-0c99-4d1d-a762-74f29bea92a6.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;提示要链接数据库，请教怎么跳过这步链接数据库的请求？
网上的说要加入&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;assets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;initialize_on_precompile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是不太好用，请教有没有别的办法？该怎么做&lt;/p&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Thu, 15 Sep 2022 23:17:05 +0800</pubDate>
      <link>https://ruby-china.org/topics/42655</link>
      <guid>https://ruby-china.org/topics/42655</guid>
    </item>
    <item>
      <title>请教 ruby 如何调用一个 dll 动态库</title>
      <description>&lt;p&gt;如下，在 C++ 中可以调用成功一个自定义的 DLL 库&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;HINSTANCE&lt;/span&gt; &lt;span class="n"&gt;hDllInst&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;hDllInst&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;LoadLibrary&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;L&lt;/span&gt;&lt;span class="s2"&gt;"SUDll.dll"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="sr"&gt;//&lt;/span&gt;&lt;span class="n"&gt;调用DLL&lt;/span&gt;

&lt;span class="n"&gt;typedef&lt;/span&gt; &lt;span class="n"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="no"&gt;PLUSFUNC&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;fileName&lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt; &lt;span class="n"&gt;size_t&lt;/span&gt; &lt;span class="n"&gt;fileNameNum&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;filePath&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="sr"&gt;//&lt;/span&gt;&lt;span class="n"&gt;后边为参数&lt;/span&gt;&lt;span class="err"&gt;，&lt;/span&gt;&lt;span class="n"&gt;前面为返回值&lt;/span&gt;
&lt;span class="no"&gt;PLUSFUNC&lt;/span&gt; &lt;span class="n"&gt;mergeSKP&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;PLUSFUNC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="no"&gt;GetProcAddress&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hDllInst&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"mergeSKP"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="sr"&gt;//&lt;/span&gt;&lt;span class="no"&gt;GetProcAddress为获取该函数的地址&lt;/span&gt;

&lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;fileName&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="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"model.skp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"model3.skp"&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s2"&gt;"=====开始生成======="&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;mergeSKP&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fileName&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="s2"&gt;"new_model.skp"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s2"&gt;"=====生成结束======="&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nb"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"pause"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;请问这个在 ruby 应该如何写？&lt;/p&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Tue, 11 Jan 2022 17:35:12 +0800</pubDate>
      <link>https://ruby-china.org/topics/42069</link>
      <guid>https://ruby-china.org/topics/42069</guid>
    </item>
    <item>
      <title>[北京] inDeco 公司招聘 RUBY 程序员</title>
      <description>&lt;h2 id="岗位职责："&gt;岗位职责：&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;参与 AI 辅助设计平台规划设计；&lt;/li&gt;
&lt;li&gt;负责 SketchUp 插件开发；&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="任职资格："&gt;任职资格：&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;计算机相关专业，专科及以上学历。&lt;/li&gt;
&lt;li&gt;一年以上 SketchUp 插件开发经验，熟练应用 SketchUp 软件。&lt;/li&gt;
&lt;li&gt;精通 Ruby 语言，2 年以上 Ruby 开发经验。&lt;/li&gt;
&lt;li&gt;良好的业务理解及学习能力，执行力强，团队合作精神佳；&lt;/li&gt;
&lt;li&gt;有过 UE4，WebGL 开发经验优先。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="薪资"&gt;薪资&lt;/h2&gt;
&lt;p&gt;12-18k&lt;/p&gt;
&lt;h2 id="简历投递"&gt;简历投递&lt;/h2&gt;
&lt;p&gt;xinchang@in-deco.com&lt;/p&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Thu, 17 Oct 2019 15:58:44 +0800</pubDate>
      <link>https://ruby-china.org/topics/39167</link>
      <guid>https://ruby-china.org/topics/39167</guid>
    </item>
    <item>
      <title>请教下，rucaptcha gem 报错</title>
      <description>&lt;p&gt;请教下大家，以前 rails 4 的时候玩过一次 rucaptcha，是好用的，最近升了 rails 升到 5.2.2，ruby2.5.3 后 rucaptcha 无法使用了，代码是按照
&lt;a href="https://github.com/huacnlee/rucaptcha" rel="nofollow" target="_blank"&gt;https://github.com/huacnlee/rucaptcha&lt;/a&gt; 配的
是因为版本不支持吗？还有其他好玩的验证码 gem 吗？请教&lt;img title=":smirk:" alt="😏" src="https://twemoji.ruby-china.com/2/svg/1f60f.svg" class="twemoji"&gt; &lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Exiting
Traceback &lt;span class="o"&gt;(&lt;/span&gt;most recent call last&lt;span class="o"&gt;)&lt;/span&gt;:
    81: from bin/rails:4:in &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;main&amp;gt;&lt;span class="s1"&gt;'
    80: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:291:in `require'&lt;/span&gt;
    79: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:257:in &lt;span class="sb"&gt;`&lt;/span&gt;load_dependency&lt;span class="s1"&gt;'
    78: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:291:in `block in require'&lt;/span&gt;
    77: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:29:in &lt;span class="sb"&gt;`&lt;/span&gt;require&lt;span class="s1"&gt;'
    76: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:20:in `require_with_bootsnap_lfi'&lt;/span&gt;
    75: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/loaded_features_index.rb:65:in &lt;span class="sb"&gt;`&lt;/span&gt;register&lt;span class="s1"&gt;'
    74: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `block in require_with_bootsnap_lfi'&lt;/span&gt;
    73: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in &lt;span class="sb"&gt;`&lt;/span&gt;require&lt;span class="s1"&gt;'
    72: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/commands.rb:18:in `&amp;lt;main&amp;gt;'&lt;/span&gt;
    71: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/command.rb:46:in &lt;span class="sb"&gt;`&lt;/span&gt;invoke&lt;span class="s1"&gt;'
    70: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/command/base.rb:65:in `perform'&lt;/span&gt;
    69: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/thor-0.20.3/lib/thor.rb:387:in &lt;span class="sb"&gt;`&lt;/span&gt;dispatch&lt;span class="s1"&gt;'
    68: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/thor-0.20.3/lib/thor/invocation.rb:126:in `invoke_command'&lt;/span&gt;
    67: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/thor-0.20.3/lib/thor/command.rb:27:in &lt;span class="sb"&gt;`&lt;/span&gt;run&lt;span class="s1"&gt;'
    66: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/commands/server/server_command.rb:142:in `perform'&lt;/span&gt;
    65: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/commands/server/server_command.rb:142:in &lt;span class="sb"&gt;`&lt;/span&gt;tap&lt;span class="s1"&gt;'
    64: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/commands/server/server_command.rb:147:in `block in perform'&lt;/span&gt;
    63: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/commands/server/server_command.rb:51:in &lt;span class="sb"&gt;`&lt;/span&gt;start&lt;span class="s1"&gt;'
    62: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/commands/server/server_command.rb:89:in `log_to_stdout'&lt;/span&gt;
    61: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/rack-2.0.6/lib/rack/server.rb:354:in &lt;span class="sb"&gt;`&lt;/span&gt;wrapped_app&lt;span class="s1"&gt;'
    60: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/commands/server/server_command.rb:27:in `app'&lt;/span&gt;
    59: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/rack-2.0.6/lib/rack/server.rb:219:in &lt;span class="sb"&gt;`&lt;/span&gt;app&lt;span class="s1"&gt;'
    58: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/rack-2.0.6/lib/rack/server.rb:319:in `build_app_and_options_from_config'&lt;/span&gt;
    57: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/rack-2.0.6/lib/rack/builder.rb:40:in &lt;span class="sb"&gt;`&lt;/span&gt;parse_file&lt;span class="s1"&gt;'
    56: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/rack-2.0.6/lib/rack/builder.rb:49:in `new_from_string'&lt;/span&gt;
    55: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/rack-2.0.6/lib/rack/builder.rb:49:in &lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;eval&lt;/span&gt;&lt;span class="s1"&gt;'
    54: from config.ru:in `&amp;lt;main&amp;gt;'&lt;/span&gt;
    53: from config.ru:in &lt;span class="sb"&gt;`&lt;/span&gt;new&lt;span class="s1"&gt;'
    52: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/rack-2.0.6/lib/rack/builder.rb:55:in `initialize'&lt;/span&gt;
    51: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/rack-2.0.6/lib/rack/builder.rb:55:in &lt;span class="sb"&gt;`&lt;/span&gt;instance_eval&lt;span class="s1"&gt;'
    50: from config.ru:3:in `block in &amp;lt;main&amp;gt;'&lt;/span&gt;
    49: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:44:in &lt;span class="sb"&gt;`&lt;/span&gt;require_relative&lt;span class="s1"&gt;'
    48: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:291:in `require'&lt;/span&gt;
    47: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:257:in &lt;span class="sb"&gt;`&lt;/span&gt;load_dependency&lt;span class="s1"&gt;'
    46: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:291:in `block in require'&lt;/span&gt;
    45: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:29:in &lt;span class="sb"&gt;`&lt;/span&gt;require&lt;span class="s1"&gt;'
    44: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:20:in `require_with_bootsnap_lfi'&lt;/span&gt;
    43: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/loaded_features_index.rb:65:in &lt;span class="sb"&gt;`&lt;/span&gt;register&lt;span class="s1"&gt;'
    42: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `block in require_with_bootsnap_lfi'&lt;/span&gt;
    41: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in &lt;span class="sb"&gt;`&lt;/span&gt;require&lt;span class="s1"&gt;'
    40: from /Users/haonan/gift/gift_app/config/environment.rb:5:in `&amp;lt;main&amp;gt;'&lt;/span&gt;
    39: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/application.rb:361:in &lt;span class="sb"&gt;`&lt;/span&gt;initialize!&lt;span class="s1"&gt;'
    38: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/initializable.rb:60:in `run_initializers'&lt;/span&gt;
    37: from /Users/haonan/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/tsort.rb:205:in &lt;span class="sb"&gt;`&lt;/span&gt;tsort_each&lt;span class="s1"&gt;'
    36: from /Users/haonan/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/tsort.rb:226:in `tsort_each'&lt;/span&gt;
    35: from /Users/haonan/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/tsort.rb:347:in &lt;span class="sb"&gt;`&lt;/span&gt;each_strongly_connected_component&lt;span class="s1"&gt;'
    34: from /Users/haonan/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/tsort.rb:347:in `call'&lt;/span&gt;
    33: from /Users/haonan/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/tsort.rb:347:in &lt;span class="sb"&gt;`&lt;/span&gt;each&lt;span class="s1"&gt;'
    32: from /Users/haonan/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/tsort.rb:349:in `block in each_strongly_connected_component'&lt;/span&gt;
    31: from /Users/haonan/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/tsort.rb:431:in &lt;span class="sb"&gt;`&lt;/span&gt;each_strongly_connected_component_from&lt;span class="s1"&gt;'
    30: from /Users/haonan/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'&lt;/span&gt;
    29: from /Users/haonan/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/tsort.rb:228:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;tsort_each&lt;span class="s1"&gt;'
    28: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/initializable.rb:61:in `block in run_initializers'&lt;/span&gt;
    27: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/initializable.rb:32:in &lt;span class="sb"&gt;`&lt;/span&gt;run&lt;span class="s1"&gt;'
    26: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/initializable.rb:32:in `instance_exec'&lt;/span&gt;
    25: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/application/finisher.rb:130:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in&lt;/span&gt; &amp;lt;module:Finisher&amp;gt;&lt;span class="s1"&gt;'
    24: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/application/routes_reloader.rb:10:in `execute'&lt;/span&gt;
    23: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/activesupport-5.2.2/lib/active_support/file_update_checker.rb:83:in &lt;span class="sb"&gt;`&lt;/span&gt;execute&lt;span class="s1"&gt;'
    22: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/application/routes_reloader.rb:30:in `block in updater'&lt;/span&gt;
    21: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/application/routes_reloader.rb:20:in &lt;span class="sb"&gt;`&lt;/span&gt;reload!&lt;span class="s1"&gt;'
    20: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/application/routes_reloader.rb:41:in `load_paths'&lt;/span&gt;
    19: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/application/routes_reloader.rb:41:in &lt;span class="sb"&gt;`&lt;/span&gt;each&lt;span class="s1"&gt;'
    18: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/railties-5.2.2/lib/rails/application/routes_reloader.rb:41:in `block in load_paths'&lt;/span&gt;
    17: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:285:in &lt;span class="sb"&gt;`&lt;/span&gt;load&lt;span class="s1"&gt;'
    16: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:257:in `load_dependency'&lt;/span&gt;
    15: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/activesupport-5.2.2/lib/active_support/dependencies.rb:285:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;load&lt;span class="s1"&gt;'
    14: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:50:in `load'&lt;/span&gt;
    13: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:50:in &lt;span class="sb"&gt;`&lt;/span&gt;load&lt;span class="s1"&gt;'
    12: from /Users/haonan/gift/gift_app/config/routes.rb:1:in `&amp;lt;main&amp;gt;'&lt;/span&gt;
    11: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/actionpack-5.2.2/lib/action_dispatch/routing/route_set.rb:414:in &lt;span class="sb"&gt;`&lt;/span&gt;draw&lt;span class="s1"&gt;'
    10: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/actionpack-5.2.2/lib/action_dispatch/routing/route_set.rb:432:in `eval_block'&lt;/span&gt;
     9: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/actionpack-5.2.2/lib/action_dispatch/routing/route_set.rb:432:in &lt;span class="sb"&gt;`&lt;/span&gt;instance_exec&lt;span class="s1"&gt;'
     8: from /Users/haonan/gift/gift_app/config/routes.rb:7:in `block in &amp;lt;main&amp;gt;'&lt;/span&gt;
     7: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/actionpack-5.2.2/lib/action_dispatch/routing/mapper.rb:628:in &lt;span class="sb"&gt;`&lt;/span&gt;mount&lt;span class="s1"&gt;'
     6: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/actionpack-5.2.2/lib/action_dispatch/routing/mapper.rb:1610:in `match'&lt;/span&gt;
     5: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/actionpack-5.2.2/lib/action_dispatch/routing/mapper.rb:1862:in &lt;span class="sb"&gt;`&lt;/span&gt;map_match&lt;span class="s1"&gt;'
     4: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/actionpack-5.2.2/lib/action_dispatch/routing/mapper.rb:1862:in `each'&lt;/span&gt;
     3: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/actionpack-5.2.2/lib/action_dispatch/routing/mapper.rb:1868:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;map_match&lt;span class="s1"&gt;'
     2: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/actionpack-5.2.2/lib/action_dispatch/routing/mapper.rb:1904:in `decomposed_match'&lt;/span&gt;
     1: from /Users/haonan/.rvm/gems/ruby-2.5.3/gems/actionpack-5.2.2/lib/action_dispatch/routing/mapper.rb:1933:in &lt;span class="sb"&gt;`&lt;/span&gt;add_route&lt;span class="s1"&gt;'
/Users/haonan/.rvm/gems/ruby-2.5.3/gems/actionpack-5.2.2/lib/action_dispatch/routing/route_set.rb:584:in `add_route'&lt;/span&gt;: Invalid route name, already &lt;span class="k"&gt;in &lt;/span&gt;use: &lt;span class="s1"&gt;'ru_captcha'&lt;/span&gt;  &lt;span class="o"&gt;(&lt;/span&gt;ArgumentError&lt;span class="o"&gt;)&lt;/span&gt;
You may have defined two routes with the same name using the &lt;span class="sb"&gt;`&lt;/span&gt;:as&lt;span class="sb"&gt;`&lt;/span&gt; option, or you may be overriding a route already defined by a resource with the same naming. For the latter, you can restrict the routes created with &lt;span class="sb"&gt;`&lt;/span&gt;resources&lt;span class="sb"&gt;`&lt;/span&gt; as explained here: 
http://guides.rubyonrails.org/routing.html#restricting-the-routes-created
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Wed, 26 Dec 2018 12:27:47 +0800</pubDate>
      <link>https://ruby-china.org/topics/37946</link>
      <guid>https://ruby-china.org/topics/37946</guid>
    </item>
    <item>
      <title>请教 Sidekiq 启动链接 redis 报密码错误 问题</title>
      <description>&lt;p&gt;RT
redis 是有密码的， &lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sidekiq &lt;span class="nt"&gt;-C&lt;/span&gt; sidekiq.yml 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;配置代码如下&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;idekiq&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;configure_server&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;config&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
  &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="n"&gt;redis_server&lt;/span&gt;
  &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="no"&gt;ENV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'REDIS_PASSWORD'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;redis&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="ss"&gt;url: &lt;/span&gt;&lt;span class="s1"&gt;'redis://localhost:6379/0'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;password:  &lt;/span&gt;&lt;span class="no"&gt;ENV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'REDIS_PASSWORD'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="ss"&gt;namespace: &lt;/span&gt;&lt;span class="s2"&gt;"kalading-sidekiq/&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;env&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="k"&gt;end&lt;/span&gt;

&lt;span class="no"&gt;Sidekiq&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;configure_client&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;config&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
  &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;redis&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="ss"&gt;url: &lt;/span&gt;&lt;span class="s1"&gt;'redis://localhost:6379/0'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;password:  &lt;/span&gt;&lt;span class="no"&gt;ENV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'REDIS_PASSWORD'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;namespace: &lt;/span&gt;&lt;span class="s2"&gt;"kalading-sidekiq/&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;env&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="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;启动，报&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;2017-07-25T10:03:06.526Z 12643 TID-or6mz2sug INFO: Booting Sidekiq 4.1.4 with redis options &lt;span class="o"&gt;{&lt;/span&gt;:url&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"redis://localhost:6379/0"&lt;/span&gt;, :password&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"REDACTED"&lt;/span&gt;, :namespace&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"kalading-sidekiq/development"&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;


         m,
         &lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nv"&gt;$b&lt;/span&gt;
    .ss,  &lt;span class="nv"&gt;$$&lt;/span&gt;:         .,d&lt;span class="err"&gt;$&lt;/span&gt;
    &lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nv"&gt;$$&lt;/span&gt;P,d&lt;span class="nv"&gt;$P&lt;/span&gt;&lt;span class="s1"&gt;'    .,md$P"'&lt;/span&gt;
     ,&lt;span class="nv"&gt;$$$$$bmmd$$$P&lt;/span&gt;^&lt;span class="s1"&gt;'
   .d$$$$$$$$$$P'&lt;/span&gt;
   &lt;span class="nv"&gt;$$&lt;/span&gt;^&lt;span class="s1"&gt;' `"^$$$'&lt;/span&gt;       ____  _     _      _    _
   &lt;span class="nv"&gt;$:&lt;/span&gt;     ,&lt;span class="nv"&gt;$$&lt;/span&gt;:       / ___|&lt;span class="o"&gt;(&lt;/span&gt;_&lt;span class="o"&gt;)&lt;/span&gt; __| | ___| | _&lt;span class="o"&gt;(&lt;/span&gt;_&lt;span class="o"&gt;)&lt;/span&gt; __ _
   &lt;span class="sb"&gt;`&lt;/span&gt;b     :&lt;span class="nv"&gt;$$&lt;/span&gt;        &lt;span class="se"&gt;\_&lt;/span&gt;__ &lt;span class="se"&gt;\|&lt;/span&gt; |/ _&lt;span class="sb"&gt;`&lt;/span&gt; |/ _ &lt;span class="se"&gt;\ &lt;/span&gt;|/ / |/ _&lt;span class="sb"&gt;`&lt;/span&gt; |
          &lt;span class="nv"&gt;$$&lt;/span&gt;:         ___&lt;span class="o"&gt;)&lt;/span&gt; | | &lt;span class="o"&gt;(&lt;/span&gt;_| |  __/   &amp;lt;| | &lt;span class="o"&gt;(&lt;/span&gt;_| |
          &lt;span class="nv"&gt;$$&lt;/span&gt;         |____/|_|&lt;span class="se"&gt;\_&lt;/span&gt;_,_|&lt;span class="se"&gt;\_&lt;/span&gt;__|_|&lt;span class="se"&gt;\_\_&lt;/span&gt;|&lt;span class="se"&gt;\_&lt;/span&gt;_, |
        .d&lt;span class="nv"&gt;$$&lt;/span&gt;                                       |_|

2017-07-25T10:03:09.018Z 12643 TID-or6mz2sug INFO: Running &lt;span class="k"&gt;in &lt;/span&gt;ruby 2.2.2p95 &lt;span class="o"&gt;(&lt;/span&gt;2015-04-13 revision 50295&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;x86_64-linux]
2017-07-25T10:03:09.018Z 12643 TID-or6mz2sug INFO: See LICENSE and the LGPL-3.0 &lt;span class="k"&gt;for &lt;/span&gt;licensing details.
2017-07-25T10:03:09.018Z 12643 TID-or6mz2sug INFO: Upgrade to Sidekiq Pro &lt;span class="k"&gt;for &lt;/span&gt;more features and support: http://sidekiq.org
ERR invalid password
/usr/local/lib/ruby/gems/2.2.0/gems/redis-3.3.1/lib/redis/client.rb:121:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
/usr/local/lib/ruby/gems/2.2.0/gems/peek-redis-1.2.0/lib/peek/views/redis.rb:9:in `call'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/redis-3.3.1/lib/redis/client.rb:102:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;connect&lt;span class="s1"&gt;'
/usr/local/lib/ruby/gems/2.2.0/gems/redis-3.3.1/lib/redis/client.rb:293:in `with_reconnect'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/redis-3.3.1/lib/redis/client.rb:100:in &lt;span class="sb"&gt;`&lt;/span&gt;connect&lt;span class="s1"&gt;'
/usr/local/lib/ruby/gems/2.2.0/gems/redis-3.3.1/lib/redis/client.rb:364:in `ensure_connected'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/redis-3.3.1/lib/redis/client.rb:221:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;process&lt;span class="s1"&gt;'
/usr/local/lib/ruby/gems/2.2.0/gems/redis-3.3.1/lib/redis/client.rb:306:in `logging'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/redis-3.3.1/lib/redis/client.rb:220:in &lt;span class="sb"&gt;`&lt;/span&gt;process&lt;span class="s1"&gt;'
/usr/local/lib/ruby/gems/2.2.0/gems/redis-3.3.1/lib/redis/client.rb:120:in `call'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/peek-redis-1.2.0/lib/peek/views/redis.rb:9:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
/usr/local/lib/ruby/gems/2.2.0/gems/redis-3.3.1/lib/redis.rb:251:in `block in info'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/redis-3.3.1/lib/redis.rb:58:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;synchronize&lt;span class="s1"&gt;'
/usr/local/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/redis-3.3.1/lib/redis.rb:58:in &lt;span class="sb"&gt;`&lt;/span&gt;synchronize&lt;span class="s1"&gt;'
/usr/local/lib/ruby/gems/2.2.0/gems/redis-3.3.1/lib/redis.rb:250:in `info'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/sidekiq-4.1.4/lib/sidekiq.rb:108:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;redis_info&lt;span class="s1"&gt;'
/usr/local/lib/ruby/gems/2.2.0/gems/sidekiq-4.1.4/lib/sidekiq.rb:92:in `block in redis'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/connection_pool-2.2.0/lib/connection_pool.rb:64:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="o"&gt;(&lt;/span&gt;2 levels&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="k"&gt;in &lt;/span&gt;with&lt;span class="s1"&gt;'
/usr/local/lib/ruby/gems/2.2.0/gems/connection_pool-2.2.0/lib/connection_pool.rb:63:in `handle_interrupt'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/connection_pool-2.2.0/lib/connection_pool.rb:63:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;with&lt;span class="s1"&gt;'
/usr/local/lib/ruby/gems/2.2.0/gems/connection_pool-2.2.0/lib/connection_pool.rb:60:in `handle_interrupt'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/connection_pool-2.2.0/lib/connection_pool.rb:60:in &lt;span class="sb"&gt;`&lt;/span&gt;with&lt;span class="s1"&gt;'
/usr/local/lib/ruby/gems/2.2.0/gems/sidekiq-4.1.4/lib/sidekiq.rb:89:in `redis'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/sidekiq-4.1.4/lib/sidekiq.rb:103:in &lt;span class="sb"&gt;`&lt;/span&gt;redis_info&lt;span class="s1"&gt;'
/usr/local/lib/ruby/gems/2.2.0/gems/sidekiq-4.1.4/lib/sidekiq/cli.rb:71:in `run'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/sidekiq-4.1.4/bin/sidekiq:12:in &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;top &lt;span class="o"&gt;(&lt;/span&gt;required&lt;span class="o"&gt;)&amp;gt;&lt;/span&gt;&lt;span class="s1"&gt;'
/usr/local/bin/sidekiq:23:in `load'&lt;/span&gt;
/usr/local/bin/sidekiq:23:in &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;top &lt;span class="o"&gt;(&lt;/span&gt;required&lt;span class="o"&gt;)&amp;gt;&lt;/span&gt;&lt;span class="s1"&gt;'
/usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.12.5/lib/bundler/cli/exec.rb:63:in `load'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.12.5/lib/bundler/cli/exec.rb:63:in &lt;span class="sb"&gt;`&lt;/span&gt;kernel_load&lt;span class="s1"&gt;'
/usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.12.5/lib/bundler/cli/exec.rb:24:in `run'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.12.5/lib/bundler/cli.rb:304:in &lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;exec&lt;/span&gt;&lt;span class="s1"&gt;'
/usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.12.5/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.12.5/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in &lt;span class="sb"&gt;`&lt;/span&gt;invoke_command&lt;span class="s1"&gt;'
/usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.12.5/lib/bundler/vendor/thor/lib/thor.rb:359:in `dispatch'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.12.5/lib/bundler/vendor/thor/lib/thor/base.rb:440:in &lt;span class="sb"&gt;`&lt;/span&gt;start&lt;span class="s1"&gt;'
/usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.12.5/lib/bundler/cli.rb:11:in `start'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.12.5/exe/bundle:27:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in&lt;/span&gt; &amp;lt;top &lt;span class="o"&gt;(&lt;/span&gt;required&lt;span class="o"&gt;)&amp;gt;&lt;/span&gt;&lt;span class="s1"&gt;'
/usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.12.5/lib/bundler/friendly_errors.rb:98:in `with_friendly_errors'&lt;/span&gt;
/usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.12.5/exe/bundle:19:in &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;top &lt;span class="o"&gt;(&lt;/span&gt;required&lt;span class="o"&gt;)&amp;gt;&lt;/span&gt;&lt;span class="s1"&gt;'
/usr/local/bin/bundle:23:in `load'&lt;/span&gt;
/usr/local/bin/bundle:23:in &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;main&amp;gt;&lt;span class="s1"&gt;'

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;密码肯定是对的，这个我敢保证，就是一直提示错误。。。。&lt;img src="https://l.ruby-china.com/photo/2017/3b7f6edb-8d14-4259-a8c3-6148c9e879f8.png!large" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Tue, 25 Jul 2017 18:13:54 +0800</pubDate>
      <link>https://ruby-china.org/topics/33629</link>
      <guid>https://ruby-china.org/topics/33629</guid>
    </item>
    <item>
      <title>请教大家 Sidekiq 的 监控页面怎么汉化的。。。</title>
      <description>&lt;p&gt;RT，请教大家 sidekiq 的 监控页面怎么汉化的。。。&lt;/p&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Tue, 25 Jul 2017 15:41:10 +0800</pubDate>
      <link>https://ruby-china.org/topics/33626</link>
      <guid>https://ruby-china.org/topics/33626</guid>
    </item>
    <item>
      <title>请教大家 rubypython 如何 使用 From…import </title>
      <description>&lt;p&gt;RT  在使用 rubypython  时，想调用一个离线导入的 python 包
python 可以直接&lt;/p&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;zmop.ZmopClient&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ZmopClient&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;zmop.request.ZhimaCustomerCertificationInitializeRequest&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;各种找不到答案，请教大家，使用 rubypython  该怎么达到上面的效果。。。&lt;img title=":pray:" alt="🙏" src="https://twemoji.ruby-china.com/2/svg/1f64f.svg" class="twemoji"&gt; &lt;/p&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Tue, 18 Jul 2017 17:44:24 +0800</pubDate>
      <link>https://ruby-china.org/topics/33547</link>
      <guid>https://ruby-china.org/topics/33547</guid>
    </item>
    <item>
      <title>使用 zhima_auth  提示 ZhimaAuth::InvalidResponse</title>
      <description>&lt;p&gt;RT
今天使用了一下 gem  'zhima_auth' 
按照 git 上给的例子测试了一下，报 &lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;irb&lt;span class="o"&gt;(&lt;/span&gt;main&lt;span class="o"&gt;)&lt;/span&gt;:013:0&lt;span class="k"&gt;*&lt;/span&gt; ZhimaAuth.certify params
ZhimaAuth::InvalidResponse: ZhimaAuth::InvalidResponse
    from /usr/local/lib/ruby/gems/2.2.0/gems/zhima_auth-0.3.0/lib/zhima_auth/validation.rb:31:in &lt;span class="sb"&gt;`&lt;/span&gt;check_initialize_response&lt;span class="s1"&gt;'
    from /usr/local/lib/ruby/gems/2.2.0/gems/zhima_auth-0.3.0/lib/zhima_auth/request.rb:41:in `get_biz_no'&lt;/span&gt;
    from /usr/local/lib/ruby/gems/2.2.0/gems/zhima_auth-0.3.0/lib/zhima_auth.rb:24:in &lt;span class="sb"&gt;`&lt;/span&gt;certify&lt;span class="s1"&gt;'
    from (irb):13
    from /usr/local/lib/ruby/gems/2.2.0/gems/railties-4.2.5.2/lib/rails/commands/console.rb:110:in `start'&lt;/span&gt;
    from /usr/local/lib/ruby/gems/2.2.0/gems/railties-4.2.5.2/lib/rails/commands/console.rb:9:in &lt;span class="sb"&gt;`&lt;/span&gt;start&lt;span class="s1"&gt;'
    from /usr/local/lib/ruby/gems/2.2.0/gems/railties-4.2.5.2/lib/rails/commands/commands_tasks.rb:68:in `console'&lt;/span&gt;
    from /usr/local/lib/ruby/gems/2.2.0/gems/railties-4.2.5.2/lib/rails/commands/commands_tasks.rb:39:in &lt;span class="sb"&gt;`&lt;/span&gt;run_command!&lt;span class="s1"&gt;'
    from /usr/local/lib/ruby/gems/2.2.0/gems/railties-4.2.5.2/lib/rails/commands.rb:17:in `&amp;lt;top (required)&amp;gt;'&lt;/span&gt;
    from /usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.5.2/lib/active_support/dependencies.rb:274:in &lt;span class="sb"&gt;`&lt;/span&gt;require&lt;span class="s1"&gt;'
    from /usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.5.2/lib/active_support/dependencies.rb:274:in `block in require'&lt;/span&gt;
    from /usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.5.2/lib/active_support/dependencies.rb:240:in &lt;span class="sb"&gt;`&lt;/span&gt;load_dependency&lt;span class="s1"&gt;'
    from /usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.5.2/lib/active_support/dependencies.rb:274:in `require'&lt;/span&gt;
    from /mnt/apix/qianbao/bin/rails:9:in &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;top &lt;span class="o"&gt;(&lt;/span&gt;required&lt;span class="o"&gt;)&amp;gt;&lt;/span&gt;&lt;span class="s1"&gt;'
    from /usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.5.2/lib/active_support/dependencies.rb:268:in `load'&lt;/span&gt;
    from /usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.5.2/lib/active_support/dependencies.rb:268:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;load&lt;span class="s1"&gt;'
    from /usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.5.2/lib/active_support/dependencies.rb:240:in `load_dependency'&lt;/span&gt;
    from /usr/local/lib/ruby/gems/2.2.0/gems/activesupport-4.2.5.2/lib/active_support/dependencies.rb:268:in &lt;span class="sb"&gt;`&lt;/span&gt;load&lt;span class="s1"&gt;'
    from /usr/local/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'&lt;/span&gt;
    from /usr/local/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in &lt;span class="sb"&gt;`&lt;/span&gt;require&lt;span class="s1"&gt;'
    from -e:1:in `&amp;lt;main&amp;gt;'&lt;/span&gt;irb&lt;span class="o"&gt;(&lt;/span&gt;main&lt;span class="o"&gt;)&lt;/span&gt;:014:0&amp;gt; 

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;报错提示太少了，没有思路，就看了下提示的 /usr/local/lib/ruby/gems/2.2.0/gems/zhima_auth-0.3.0/lib/zhima_auth/validation.rb:31:in `check_initialize_response' 的源码，
发现报错信息不一样，感觉比较差异，是我的排错方式不对吗？&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;check_initialize_response&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;
  &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="no"&gt;ZhimaAuth&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;InvalidResponse&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"Initialize request failed"&lt;/span&gt; &lt;span class="k"&gt;unless&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;is_a?&lt;/span&gt; &lt;span class="no"&gt;Hash&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"zhima_customer_certification_initialize_response"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="n"&gt;response_code&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"zhima_customer_certification_initialize_response"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s2"&gt;"code"&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_code&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="s2"&gt;"10000"&lt;/span&gt;
    &lt;span class="n"&gt;response_msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"zhima_customer_certification_initialize_response"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s2"&gt;"sub_msg"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="no"&gt;ZhimaAuth&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;InvalidResponse&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;response_code&lt;/span&gt;&lt;span class="si"&gt;}#{&lt;/span&gt;&lt;span class="n"&gt;response_msg&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="kp"&gt;true&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;请教各位大神啦&lt;/p&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Mon, 17 Jul 2017 15:06:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/33523</link>
      <guid>https://ruby-china.org/topics/33523</guid>
    </item>
    <item>
      <title>请问大家， rake db:migrate 时 报 iconv.so 错</title>
      <description>&lt;p&gt;RT
ruby 2.1.4
运行&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rake db:migrate
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;时，报&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rake aborted!
LoadError: incompatible library version - /home/haonan/.rvm/gems/ruby-2.1.4/gems/iconv-1.0.4/lib/iconv/iconv.so
/home/haonan/.rvm/gems/ruby-2.1.4/gems/iconv-1.0.4/lib/iconv.rb:1:in &lt;span class="sb"&gt;`&lt;/span&gt;require&lt;span class="s1"&gt;'
/home/haonan/.rvm/gems/ruby-2.1.4/gems/iconv-1.0.4/lib/iconv.rb:1:in `&amp;lt;top (required)&amp;gt;'&lt;/span&gt;
/home/haonan/文档/qianbao/config/application.rb:7:in &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;top &lt;span class="o"&gt;(&lt;/span&gt;required&lt;span class="o"&gt;)&amp;gt;&lt;/span&gt;&lt;span class="s1"&gt;'
/home/haonan/文档/qianbao/Rakefile:4:in `&amp;lt;top (required)&amp;gt;'&lt;/span&gt;
/home/haonan/.rvm/gems/ruby-2.1.4/gems/rake-12.0.0/exe/rake:27:in &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;top &lt;span class="o"&gt;(&lt;/span&gt;required&lt;span class="o"&gt;)&amp;gt;&lt;/span&gt;&lt;span class="s1"&gt;'
(See full trace by running task with --trace)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;纠结一下午了，请问大神们怎么解决&lt;img title=":pray:" alt="🙏" src="https://twemoji.ruby-china.com/2/svg/1f64f.svg" class="twemoji"&gt; &lt;/p&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Mon, 05 Jun 2017 17:16:53 +0800</pubDate>
      <link>https://ruby-china.org/topics/33154</link>
      <guid>https://ruby-china.org/topics/33154</guid>
    </item>
    <item>
      <title>请教大家关于 Unicorn 启动问题</title>
      <description>&lt;p&gt;现在项目是用的 NGINX 做的反向代理，但单独访问 unicorn 启动的端口  也是可以访问页面的
现在想请教大家：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;怎么能限制，只通过 Nginx 的端口进行访问&lt;/li&gt;
&lt;li&gt;unicorn 能只启动内网 IP 访问吗？&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Tue, 02 May 2017 14:53:55 +0800</pubDate>
      <link>https://ruby-china.org/topics/32912</link>
      <guid>https://ruby-china.org/topics/32912</guid>
    </item>
    <item>
      <title>请教大家，如果使用集群部署一个项目，静态文件怎么共享？</title>
      <description>&lt;p&gt;RT
请教大家，如果使用集群部署一个项目，静态文件怎么共享？
不想使用那些云存储的前提下，难道要自己单独搭建静态文件的服务器吗？还是有什么更好的办法或者 GEM，请教思路&lt;/p&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Tue, 18 Apr 2017 10:05:37 +0800</pubDate>
      <link>https://ruby-china.org/topics/32805</link>
      <guid>https://ruby-china.org/topics/32805</guid>
    </item>
    <item>
      <title>请教大家关于使用 default_scope 遇到的一个问题</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;Article&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;mount_uploader&lt;/span&gt;  &lt;span class="ss"&gt;:img&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;ShareUploader&lt;/span&gt;
    &lt;span class="n"&gt;default_scope&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="ss"&gt;:status&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;)}&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在 Article 中为了省事用了 default_scope，当 status=1 时，修改 img 图片字段报&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;---------------------&lt;/span&gt;
  Article Load &lt;span class="o"&gt;(&lt;/span&gt;7.4ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT  &lt;span class="sb"&gt;`&lt;/span&gt;articles&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="k"&gt;*&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;articles&lt;span class="sb"&gt;`&lt;/span&gt;  ORDER BY &lt;span class="sb"&gt;`&lt;/span&gt;articles&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt; ASC LIMIT 1
   &lt;span class="o"&gt;(&lt;/span&gt;5.1ms&lt;span class="o"&gt;)&lt;/span&gt;  BEGIN
  Article Load &lt;span class="o"&gt;(&lt;/span&gt;5.6ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT  &lt;span class="sb"&gt;`&lt;/span&gt;articles&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="k"&gt;*&lt;/span&gt; FROM &lt;span class="sb"&gt;`&lt;/span&gt;articles&lt;span class="sb"&gt;`&lt;/span&gt; WHERE &lt;span class="sb"&gt;`&lt;/span&gt;articles&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;status&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 0 AND &lt;span class="sb"&gt;`&lt;/span&gt;articles&lt;span class="sb"&gt;`&lt;/span&gt;.&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 1 LIMIT 1
   &lt;span class="o"&gt;(&lt;/span&gt;5.0ms&lt;span class="o"&gt;)&lt;/span&gt;  ROLLBACK
Completed 404 Not Found &lt;span class="k"&gt;in &lt;/span&gt;200ms &lt;span class="o"&gt;(&lt;/span&gt;ActiveRecord: 124.4ms&lt;span class="o"&gt;)&lt;/span&gt;

ActiveRecord::RecordNotFound &lt;span class="o"&gt;(&lt;/span&gt;Couldn&lt;span class="s1"&gt;'t find Article with '&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="s1"&gt;'=1 [WHERE `articles`.`status` = ?]):
  app/controllers/admins/article_controller.rb:58:in `up_article'&lt;/span&gt;


  Rendered /home/haonan/.rvm/gems/ruby-2.1.4/gems/actionpack-4.2.5.2/lib/action_dispatch/middleware/templates/rescues/_source.erb &lt;span class="o"&gt;(&lt;/span&gt;5.8ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered /home/haonan/.rvm/gems/ruby-2.1.4/gems/actionpack-4.2.5.2/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb &lt;span class="o"&gt;(&lt;/span&gt;2.8ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered /home/haonan/.rvm/gems/ruby-2.1.4/gems/actionpack-4.2.5.2/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb &lt;span class="o"&gt;(&lt;/span&gt;1.0ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered /home/haonan/.rvm/gems/ruby-2.1.4/gems/actionpack-4.2.5.2/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout &lt;span class="o"&gt;(&lt;/span&gt;19.4ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered /home/haonan/.rvm/gems/ruby-2.1.4/gems/web-console-2.3.0/lib/web_console/templates/_markup.html.erb &lt;span class="o"&gt;(&lt;/span&gt;0.5ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered /home/haonan/.rvm/gems/ruby-2.1.4/gems/web-console-2.3.0/lib/web_console/templates/_inner_console_markup.html.erb within layouts/inlined_string &lt;span class="o"&gt;(&lt;/span&gt;0.2ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered /home/haonan/.rvm/gems/ruby-2.1.4/gems/web-console-2.3.0/lib/web_console/templates/_prompt_box_markup.html.erb within layouts/inlined_string &lt;span class="o"&gt;(&lt;/span&gt;0.3ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered /home/haonan/.rvm/gems/ruby-2.1.4/gems/web-console-2.3.0/lib/web_console/templates/style.css.erb within layouts/inlined_string &lt;span class="o"&gt;(&lt;/span&gt;0.7ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered /home/haonan/.rvm/gems/ruby-2.1.4/gems/web-console-2.3.0/lib/web_console/templates/console.js.erb within layouts/javascript &lt;span class="o"&gt;(&lt;/span&gt;15.1ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered /home/haonan/.rvm/gems/ruby-2.1.4/gems/web-console-2.3.0/lib/web_console/templates/main.js.erb within layouts/javascript &lt;span class="o"&gt;(&lt;/span&gt;0.2ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered /home/haonan/.rvm/gems/ruby-2.1.4/gems/web-console-2.3.0/lib/web_console/templates/error_page.js.erb within layouts/javascript &lt;span class="o"&gt;(&lt;/span&gt;0.3ms&lt;span class="o"&gt;)&lt;/span&gt;
  Rendered /home/haonan/.rvm/gems/ruby-2.1.4/gems/web-console-2.3.0/lib/web_console/templates/index.html.erb &lt;span class="o"&gt;(&lt;/span&gt;29.2ms&lt;span class="o"&gt;)&lt;/span&gt;



&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;下面是执行的代码&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"---------------------"&lt;/span&gt;
&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Article&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;unscoped&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="ss"&gt;:status&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;article&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;unscoped&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;#.update(:status=&amp;gt;article.status,:img=&amp;gt;params[:img])&lt;/span&gt;
&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;img&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:img&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;不知道是怎么回事，明明使用了 unscoped，但是还是一直报找不到的错误，请教大家了&lt;/p&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Wed, 22 Feb 2017 17:39:05 +0800</pubDate>
      <link>https://ruby-china.org/topics/32361</link>
      <guid>https://ruby-china.org/topics/32361</guid>
    </item>
    <item>
      <title>请教大家 app 接口需要防护 csrf 吗？</title>
      <description>&lt;p&gt;RT，APP 的接口，需要防护 csrf 吗？不防护 csrf 的话，总感觉不安全呀，防护的话，该怎么做呢？总不能再单独给个接口传 token 吧。。。。&lt;img title=":worried:" alt="😟" src="https://twemoji.ruby-china.com/2/svg/1f61f.svg" class="twemoji"&gt; &lt;/p&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Wed, 18 Jan 2017 16:46:42 +0800</pubDate>
      <link>https://ruby-china.org/topics/32166</link>
      <guid>https://ruby-china.org/topics/32166</guid>
    </item>
    <item>
      <title>请教大家 1.12.x 版本中，报 NameError: uninitialized constant MongoReplicaSetClient</title>
      <description>&lt;p&gt;之前项目中用的是 1.12.3 版本的 mongo  gem，后来升级 mongo gem 后发现之前版本的链接方式都换了，想再退回到 1.12.3 版本的 GEM
但使用副本集的时候&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="no"&gt;MongoReplicaSetClient&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="s1"&gt;'123.57.xxx.xxx:30000'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'123.56.xxx.xxx:30000'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'101.201.xxx.xxx:30000'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;链接时报&lt;img title=":sob:" alt="😭" src="https://twemoji.ruby-china.com/2/svg/1f62d.svg" class="twemoji"&gt; &lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;NameError: uninitialized constant MongoReplicaSetClient
    from &lt;span class="o"&gt;(&lt;/span&gt;irb&lt;span class="o"&gt;)&lt;/span&gt;:3
    from /home/haonan/.rvm/gems/ruby-2.1.4/gems/railties-4.2.3/lib/rails/commands/console.rb:110:in &lt;span class="sb"&gt;`&lt;/span&gt;start&lt;span class="s1"&gt;'
    from /home/haonan/.rvm/gems/ruby-2.1.4/gems/railties-4.2.3/lib/rails/commands/console.rb:9:in `start'&lt;/span&gt;
    from /home/haonan/.rvm/gems/ruby-2.1.4/gems/railties-4.2.3/lib/rails/commands/commands_tasks.rb:68:in &lt;span class="sb"&gt;`&lt;/span&gt;console&lt;span class="s1"&gt;'
    from /home/haonan/.rvm/gems/ruby-2.1.4/gems/railties-4.2.3/lib/rails/commands/commands_tasks.rb:39:in `run_command!'&lt;/span&gt;
    from /home/haonan/.rvm/gems/ruby-2.1.4/gems/railties-4.2.3/lib/rails/commands.rb:17:in &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;top &lt;span class="o"&gt;(&lt;/span&gt;required&lt;span class="o"&gt;)&amp;gt;&lt;/span&gt;&lt;span class="s1"&gt;'
    from bin/rails:4:in `require'&lt;/span&gt;
    from bin/rails:4:in &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;main&amp;gt;&lt;span class="s1"&gt;'

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;网上各种查，没找到好的办法，请假大家了&lt;img title=":pray:" alt="🙏" src="https://twemoji.ruby-china.com/2/svg/1f64f.svg" class="twemoji"&gt; &lt;/p&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Mon, 19 Dec 2016 14:23:38 +0800</pubDate>
      <link>https://ruby-china.org/topics/31932</link>
      <guid>https://ruby-china.org/topics/31932</guid>
    </item>
    <item>
      <title>Go 适合在哪个系统上开发？</title>
      <description>&lt;p&gt;RT，这几天在学习 GO，本能的用 Linux 玩，但是碰见很多环境配置的问题，和小伙伴讨论时，有人说 GO 用 WIN 开发才是地道的，有人了解吗？大神们&lt;/p&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Thu, 15 Dec 2016 13:25:00 +0800</pubDate>
      <link>https://ruby-china.org/topics/31910</link>
      <guid>https://ruby-china.org/topics/31910</guid>
    </item>
    <item>
      <title>分享一个写爬虫，走过的坑</title>
      <description>&lt;p&gt;本人小白，最近在网上一大堆赞美 go 的文章，今天闲下来看了看，捣鼓了一下，简单了看了下语法，没深看，习惯边写边学单看没意思&lt;img title=":stuck_out_tongue_winking_eye:" alt="😜" src="https://twemoji.ruby-china.com/2/svg/1f61c.svg" class="twemoji"&gt; ，我个人觉得熟悉一门语言最快的方式就是写爬虫&lt;img title=":sunglasses:" alt="😎" src="https://twemoji.ruby-china.com/2/svg/1f60e.svg" class="twemoji"&gt; ，废话不多说，开始主题&lt;/p&gt;

&lt;p&gt;开始安装之旅，go 的安装和 ruby 大同小异，唯一认为比较坑的，是需要自己配 GOPATH 与工作空间，本来打算用一个类似于 rvm 的一个东东（gvm），结果发现这个被墙了，而且到处找没找到国内有相关的源，坑爹呀有木有&lt;img title=":triumph:" alt="😤" src="https://twemoji.ruby-china.com/2/svg/1f624.svg" class="twemoji"&gt; ，瞬间感觉还是 ruby 大法好，没办法还是老老实实的安装吧&lt;/p&gt;

&lt;p&gt;访问下载地址&lt;a href="http://www.golangtc.com/download" rel="nofollow" target="_blank"&gt;http://www.golangtc.com/download&lt;/a&gt;，32 位系统下载 go1.x.x.linux-386.tar.gz，64 位系统下载 go1.x.x.linux-amd64.tar.gz，
假定你想要安装 Go 的目录为 $GO_INSTALL_DIR，后面替换为相应的目录路径。
解压缩 tar.gz 包到安装目录下：tar zxvf go1.X.x.linux-amd64.tar.gz -C $GO_INSTALL_DIR。
设置 PATH，export PATH=$PATH:$GO_INSTALL_DIR/go/bin
然后执行 go
如果出现一大串 关于 go 的内容，恭喜你安装成功了&lt;/p&gt;

&lt;p&gt;开始爬虫&lt;br&gt;
        之前用 RUBY 写过一段时间爬虫，所以本能的在 go 上搜索下有没有类似的东东，结果发现真有“httpclient”。。。。。解析页面用 goquery
        每次都是爬豆瓣练手&lt;img title=":mask:" alt="😷" src="https://twemoji.ruby-china.com/2/svg/1f637.svg" class="twemoji"&gt; &lt;/p&gt;
&lt;pre class="highlight erlang"&gt;&lt;code&gt;&lt;span class="n"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="nf"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s"&gt;"fmt"&lt;/span&gt;
    &lt;span class="s"&gt;"github.com/PuerkitoBio/goquery"&lt;/span&gt;
    &lt;span class="s"&gt;"github.com/ddliu/go-httpclient"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="n"&gt;res&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;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;httpclient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;Get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://www.douban.com/search"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;map&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="s"&gt;"q"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="n"&gt;doc&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;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;goquery&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;NewDocumentFromReader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;Body&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;Find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"h1"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nv"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;Println&lt;/span&gt;&lt;span class="p"&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;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;Find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;".result"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nv"&gt;Each&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="n"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;goquery&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;Selection&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;Println&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;title&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;Find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"h3"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nv"&gt;Find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nv"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="n"&gt;url&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;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;Find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"h3"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nv"&gt;Find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nv"&gt;Attr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"href"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"--------"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;"---"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;url&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;省略了异常处理，代码不多就短短的几行，花费了半天的时间&lt;img title=":clock1030:" alt="🕥" src="https://twemoji.ruby-china.com/2/svg/1f565.svg" class="twemoji"&gt; ，唯一卡住时间的是调用 goquery 方法的时候，各种报错，各种查。。。都没找到，后来看了看官方的文档。。才搞明白应该用 NewDocumentFromReader 这个方法。。。。
分享出来，希望向我一样的小白想用 GO 写爬虫的人，少走点弯路&lt;/p&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Tue, 13 Dec 2016 17:52:27 +0800</pubDate>
      <link>https://ruby-china.org/topics/31896</link>
      <guid>https://ruby-china.org/topics/31896</guid>
    </item>
    <item>
      <title>请教大家 ES 在 Rails 里怎么添加账号密码进行链接</title>
      <description>&lt;p&gt;RT，ES 在 rails 里，怎么添加账号密码，进行链接访问
用 X-Pack 加了密，现在无法访问一直报&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;401] &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"error"&lt;/span&gt;:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"root_cause"&lt;/span&gt;:[&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"type"&lt;/span&gt;:&lt;span class="s2"&gt;"security_exception"&lt;/span&gt;,&lt;span class="s2"&gt;"reason"&lt;/span&gt;:&lt;span class="s2"&gt;"missing authentication token for REST request [/es_users/es_user/AVjOhZWLvFIJagtSUp6r]"&lt;/span&gt;,&lt;span class="s2"&gt;"header"&lt;/span&gt;:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"WWW-Authenticate"&lt;/span&gt;:&lt;span class="s2"&gt;"Basic realm=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;security&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; charset=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;UTF-8&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="o"&gt;}}]&lt;/span&gt;,&lt;span class="s2"&gt;"type"&lt;/span&gt;:&lt;span class="s2"&gt;"security_exception"&lt;/span&gt;,&lt;span class="s2"&gt;"reason"&lt;/span&gt;:&lt;span class="s2"&gt;"missing authentication token for REST request [/es_users/es_user/AVjOhZWLvFIJagtSUp6r]"&lt;/span&gt;,&lt;span class="s2"&gt;"header"&lt;/span&gt;:&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"WWW-Authenticate"&lt;/span&gt;:&lt;span class="s2"&gt;"Basic realm=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;security&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; charset=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;UTF-8&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="o"&gt;}}&lt;/span&gt;,&lt;span class="s2"&gt;"status"&lt;/span&gt;:401&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;很郁闷&lt;img src="https://l.ruby-china.com/photo/2016/797000dc96fc0750c02d58e76f24aa87.png!large" title="" alt=""&gt;
到处查了，也没找到怎么再 rails 中配置这些相关数据。。。。&lt;img title=":sob:" alt="😭" src="https://twemoji.ruby-china.com/2/svg/1f62d.svg" class="twemoji"&gt; 请教大家了&lt;/p&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Tue, 06 Dec 2016 11:39:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/31810</link>
      <guid>https://ruby-china.org/topics/31810</guid>
    </item>
    <item>
      <title>elasticsearch-persistence 怎么改变默认配置?</title>
      <description>&lt;p&gt;RT，想在单独运行一个 ruby 文件  用 elasticsearch-persistence 执行数据增删改查
代码如下&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# encoding: utf-8&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'active_record'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'will_paginate'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mechanize'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'elasticsearch'&lt;/span&gt;
&lt;span class="c1"&gt;# require 'elasticsearch/rails'&lt;/span&gt;
&lt;span class="c1"&gt;# require 'elasticsearch/model'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'elasticsearch/persistence'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'elasticsearch/persistence/model'&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="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;establish_connection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="err"&gt;。。。。。。。&lt;/span&gt;
&lt;span class="err"&gt;）&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="c1"&gt;#newbaichebao_items&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;EsUser&lt;/span&gt;
    &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;Elasticsearch&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Persistence&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Model&lt;/span&gt;

  &lt;span class="c1"&gt;# include Elasticsearch::Persistence::Repository&lt;/span&gt;
  &lt;span class="c1"&gt;# def initialize(options={})&lt;/span&gt;
  &lt;span class="c1"&gt;#   index  options[:index] || 'rails'&lt;/span&gt;
  &lt;span class="c1"&gt;#   client Elasticsearch::Client.new url: options[:url], log: options[:log]&lt;/span&gt;
  &lt;span class="c1"&gt;#&lt;/span&gt;
  &lt;span class="c1"&gt;# end&lt;/span&gt;
    &lt;span class="n"&gt;attribute&lt;/span&gt; &lt;span class="ss"&gt;:user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="no"&gt;String&lt;/span&gt;
    &lt;span class="n"&gt;attribute&lt;/span&gt; &lt;span class="ss"&gt;:phone&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="no"&gt;String&lt;/span&gt;
    &lt;span class="n"&gt;attribute&lt;/span&gt; &lt;span class="ss"&gt;:name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="no"&gt;String&lt;/span&gt;
    &lt;span class="n"&gt;attribute&lt;/span&gt; &lt;span class="ss"&gt;:registration_time&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="no"&gt;String&lt;/span&gt;
    &lt;span class="n"&gt;attribute&lt;/span&gt; &lt;span class="ss"&gt;:registered_location&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="no"&gt;String&lt;/span&gt;
    &lt;span class="n"&gt;attribute&lt;/span&gt; &lt;span class="ss"&gt;:channel&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="no"&gt;String&lt;/span&gt;
    &lt;span class="n"&gt;attribute&lt;/span&gt; &lt;span class="ss"&gt;:fraction&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="no"&gt;Integer&lt;/span&gt;
    &lt;span class="n"&gt;attribute&lt;/span&gt; &lt;span class="ss"&gt;:number_of_terms&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="no"&gt;Integer&lt;/span&gt;
    &lt;span class="n"&gt;attribute&lt;/span&gt; &lt;span class="ss"&gt;:last_login_time&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="no"&gt;String&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;main&lt;/span&gt;
  &lt;span class="n"&gt;repository&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Elasticsearch&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Persistence&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Repository&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="c1"&gt;# Configure the Elasticsearch client&lt;/span&gt;
    &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="no"&gt;Elasticsearch&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt; &lt;span class="ss"&gt;url: &lt;/span&gt;&lt;span class="s1"&gt;'10.797.26.99:9200'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;log: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;
    &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="ss"&gt;:rails&lt;/span&gt;
    &lt;span class="c1"&gt;# type  :my_note&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
    &lt;span class="c1"&gt;# str = Mechanize.new&lt;/span&gt;
    &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;count&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="c1"&gt;# puts EsUser.find()&lt;/span&gt;
  &lt;span class="c1"&gt;# for i in 1..a&lt;/span&gt;
    &lt;span class="c1"&gt;#   puts "&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;#{i}"&lt;/span&gt;
    &lt;span class="c1"&gt;#   users = User.paginate(:page =&amp;gt; i, :per_page =&amp;gt; 1000)&lt;/span&gt;
  &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find_each&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;user&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
      &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;name&lt;/span&gt;
      &lt;span class="n"&gt;fen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;LicenseLogging&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:user_id&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:name&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"credit_indicator"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;blank?&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="no"&gt;LicenseLogging&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:user_id&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:name&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"credit_indicator"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;last&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;remarks&lt;/span&gt;
      &lt;span class="n"&gt;es&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;EsUser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;
      &lt;span class="n"&gt;es&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;user_id&lt;/span&gt; &lt;span class="o"&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;ids&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
      &lt;span class="n"&gt;es&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;phone&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;name&lt;/span&gt;
      &lt;span class="n"&gt;es&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;registration_time&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;created_at&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_s&lt;/span&gt;
      &lt;span class="n"&gt;es&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;registered_location&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reg_location&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_s&lt;/span&gt;
      &lt;span class="n"&gt;es&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;channel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;port_type&lt;/span&gt;
      &lt;span class="n"&gt;es&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fraction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fen&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_i&lt;/span&gt;
      &lt;span class="n"&gt;es&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;number_of_terms&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt;
      &lt;span class="n"&gt;es&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;last_login_time&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;updated_at&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_s&lt;/span&gt;
      &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="n"&gt;es&lt;/span&gt;
      &lt;span class="n"&gt;es&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
    &lt;span class="c1"&gt;# end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;main&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是始终改不了默认的本地连接。。。&lt;img title=":sob:" alt="😭" src="https://twemoji.ruby-china.com/2/svg/1f62d.svg" class="twemoji"&gt; &lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/home/yangmi/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/net/http.rb:879:in &lt;span class="sb"&gt;`&lt;/span&gt;initialize&lt;span class="s1"&gt;': Network is unreachable - connect(2) for "localhost" port 9200 (Faraday::ConnectionFailed)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;请教大家了&lt;img title=":pray:" alt="🙏" src="https://twemoji.ruby-china.com/2/svg/1f64f.svg" class="twemoji"&gt; &lt;/p&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Mon, 05 Dec 2016 16:43:55 +0800</pubDate>
      <link>https://ruby-china.org/topics/31803</link>
      <guid>https://ruby-china.org/topics/31803</guid>
    </item>
    <item>
      <title>请问大家，influxdb-ruby 这个 GEM  报 invalid field format</title>
      <description>&lt;p&gt;RT，用 influxdb-ruby  这个 gem 往 influxdb 存数据，报&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;InfluxDB&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"error"&lt;/span&gt;&lt;span class="ss"&gt;:"unable to parse 'qianbao ': invalid field format"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="sr"&gt;/usr/&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;rvm&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gems&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ruby&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gems&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;influxdb&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;influxdb&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;85&lt;/span&gt;&lt;span class="ss"&gt;:in&lt;/span&gt; &lt;span class="sb"&gt;`resolve_error'
    from /usr/local/rvm/gems/ruby-2.3.1/gems/influxdb-0.3.12/lib/influxdb/client/http.rb:35:in `&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="s1"&gt;'
    from /usr/local/rvm/gems/ruby-2.3.1/gems/influxdb-0.3.12/lib/influxdb/client/http.rb:53:in `connect_with_retry'&lt;/span&gt;
    &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="sr"&gt;/usr/&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;rvm&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gems&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ruby&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gems&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;influxdb&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;influxdb&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;26&lt;/span&gt;&lt;span class="ss"&gt;:in&lt;/span&gt; &lt;span class="sb"&gt;`post'
    from /usr/local/rvm/gems/ruby-2.3.1/gems/influxdb-0.3.12/lib/influxdb/query/core.rb:71:in `&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="s1"&gt;'
    from /usr/local/rvm/gems/ruby-2.3.1/gems/influxdb-0.3.12/lib/influxdb/query/core.rb:57:in `write_points'&lt;/span&gt;
    &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="sr"&gt;/usr/&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;rvm&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gems&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ruby&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gems&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;influxdb&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;influxdb&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;core&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;63&lt;/span&gt;&lt;span class="ss"&gt;:in&lt;/span&gt; &lt;span class="sb"&gt;`write_point'
    from (irb):49
    from /usr/local/rvm/rubies/ruby-2.3.1/bin/irb:11:in `&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;代码是这样的 &lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'influxdb'&lt;/span&gt;
&lt;span class="n"&gt;influxdb&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;InfluxDB&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt; 
&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"method"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"GET"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"path"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"/api/lottery/awards"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"format"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"html"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"controller"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"Api::LotteryController"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"action"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"lottery_awards"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"status"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"duration"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="mf"&gt;651.61&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"view"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="mf"&gt;2.16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"db"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="mf"&gt;93.05&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;influxdb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write_point&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"qianbao"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;各种查过。。。。没找到有用的。。。。
请教各位大神了&lt;img title=":sob:" alt="😭" src="https://twemoji.ruby-china.com/2/svg/1f62d.svg" class="twemoji"&gt; &lt;/p&gt;</description>
      <author>ghn645568344</author>
      <pubDate>Mon, 21 Nov 2016 16:02:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/31652</link>
      <guid>https://ruby-china.org/topics/31652</guid>
    </item>
  </channel>
</rss>
