<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>helperhaps (Helperhaps)</title>
    <link>https://ruby-china.org/helperhaps</link>
    <description>Less is More</description>
    <language>en-us</language>
    <item>
      <title>Travis CI 中的 cURL 问题</title>
      <description>&lt;p&gt;惭愧，PHP 的一个包要支持使用 HTTP2 发送请求，使用 cURL 轻松的实现了。&lt;/p&gt;

&lt;p&gt;但是我本地安装的是 PHP7 和 libcurl3-7.50.1 所以是没有问题的。但是大家都知道 PHP 的坑之一就是很多人使用的都是相当古老的版本甚至 5.3 以下的不版本。&lt;/p&gt;

&lt;p&gt;所以这个 feature 的测试就要借助 travis-ci 的力量了（我是这么想得），在 Travis 配置文件中指定了 5.3、5.4、5.5、5.6 和 7.0 这些版本来测试，根据 &lt;a href="http://stackoverflow.com/questions/34606801/how-do-i-send-a-http-2-post-request-in-php" rel="nofollow" target="_blank"&gt;http://stackoverflow.com/questions/34606801/how-do-i-send-a-http-2-post-request-in-php&lt;/a&gt; 这个答案来看 PHP &amp;gt;= 5.5.24 cURL 就会使用 http2 发送请求。但还有一个要求是 libcurl &amp;gt;=7.38.0（一说大于 7.33.0），然后喜闻乐见的 travis 中的 libcurl 的版本在每一个 php 版本中都是 7.22.0，&lt;/p&gt;

&lt;p&gt;那么问题来了，怎在 Travis 中升级 php-curl 所依赖的 libcurl 的版本呢，知道的大大指点一下，或者发个有用的链接我看看&lt;/p&gt;</description>
      <author>helperhaps</author>
      <pubDate>Tue, 13 Sep 2016 15:28:13 +0800</pubDate>
      <link>https://ruby-china.org/topics/31058</link>
      <guid>https://ruby-china.org/topics/31058</guid>
    </item>
    <item>
      <title>Discourse I18n 直接修改代码无效问题 (production 环境)</title>
      <description>&lt;p&gt;使用 Discourse 遇到 i18n 问题，如下图的 all_tags 的翻译问题
&lt;img src="https://l.ruby-china.com/photo/2016/5109ad7fdfa53db5350315d8c530058e.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;官方的翻译是“所以标签” ，我在本地跑了一个 discourse 直接修改相关的 i18n yml 文件之后 works well 如上图。但是在 discourse 官方推荐的 Docker 安装方式下直接修改对应的 yml 文件无效，我想问这个是不是环境关系（本地是开发环境 docker 下是生产环境）？如果是的话需要怎么去修改（需要命令吗）？&lt;/p&gt;

&lt;p&gt;PS：关于官方的翻译问题，我已经去提交了正确的翻译，并且 discourse 已经合进主库了，1.6 beta7 版本已经可以看到了，问题是如果不升级版本直接修改线上 docker 中的源代码该怎么去使其生效？&lt;/p&gt;</description>
      <author>helperhaps</author>
      <pubDate>Mon, 06 Jun 2016 14:02:41 +0800</pubDate>
      <link>https://ruby-china.org/topics/30220</link>
      <guid>https://ruby-china.org/topics/30220</guid>
    </item>
    <item>
      <title>极光推送的 JPush Ruby SDK 发布了</title>
      <description>&lt;p&gt;之前的 JPush SDK 经常被人吐槽长得太像 JAVA，所以领导一怒之下，叫我去重写 (ง •̀_•́)ง，然而我也只写过半年的 Rails，心中不免有些忐忑。话虽这么说了，但还是得硬着头皮上啊，就这样，数月之后&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;基本实现了 JPush API 的全部功能&lt;/li&gt;
&lt;li&gt;添加了一些特定场景下的实用接口&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;仅做到这些，不过个人觉得 README 写的还算清晰，正常使用基本无障碍。
至于其他地方，比如 参数检查啊，异常处理啊，单元测试啊之类的有些做了但是感觉不那么优雅，有些不知道怎么去做 &lt;img title=":sob:" alt="😭" src="https://twemoji.ruby-china.com/2/svg/1f62d.svg" class="twemoji"&gt;，相关文档也不是那么好找，并且即使有也不一定符合当前的逻辑 &lt;img title=":sob:" alt="😭" src="https://twemoji.ruby-china.com/2/svg/1f62d.svg" class="twemoji"&gt;  ，所以如果谁有什么想法，请一定多多赐教啊。&lt;/p&gt;

&lt;p&gt;下面简单写一下基本用法&lt;/p&gt;
&lt;h4 id="安装"&gt;安装&lt;/h4&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;gem &lt;span class="nb"&gt;install &lt;/span&gt;jpush
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Gemfile&lt;/span&gt;
&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'jpush'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="发送简单推送"&gt;发送简单推送&lt;/h4&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;app_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'xxx'&lt;/span&gt;
&lt;span class="n"&gt;master_secret&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'xxx'&lt;/span&gt;
&lt;span class="n"&gt;jpush&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;JPush&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="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;app_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;master_secret&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;push_payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;JPush&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Push&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;PushPayload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="ss"&gt;platform: &lt;/span&gt;&lt;span class="s1"&gt;'all'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="ss"&gt;audience: &lt;/span&gt;&lt;span class="s1"&gt;'all'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="ss"&gt;notification: &lt;/span&gt;&lt;span class="s1"&gt;'hello jpush'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="ss"&gt;message: &lt;/span&gt;&lt;span class="s1"&gt;'hello world'&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;jpush&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;pusher&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;push_payload&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Github：·&lt;a href="https://github.com/jpush/jpush-api-ruby-client" rel="nofollow" target="_blank" title=""&gt;https://github.com/jpush/jpush-api-ruby-client&lt;/a&gt; （欢迎大家 fork, 提 issue、pr, 吐槽和表达不满）
API 文档： &lt;a href="http://docs.jpush.io/server/server_overview/" rel="nofollow" target="_blank" title=""&gt;http://docs.jpush.io/server/server_overview/&lt;/a&gt;&lt;/p&gt;</description>
      <author>helperhaps</author>
      <pubDate>Thu, 05 May 2016 10:42:54 +0800</pubDate>
      <link>https://ruby-china.org/topics/29912</link>
      <guid>https://ruby-china.org/topics/29912</guid>
    </item>
    <item>
      <title>RubyGem 如何正确配置 Travis CI</title>
      <description>&lt;p&gt;我写了一个 rubygem，其中的测试流程是&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cp test&lt;/span&gt;/config.yml.example &lt;span class="nb"&gt;test&lt;/span&gt;/config.yml
&lt;span class="nv"&gt;$ &lt;/span&gt;vi test.config.yml
&lt;span class="c"&gt;# 手动填写必要的隐私数据（帐号密码啥的等基础数据， 测试要用到）&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;bundle &lt;span class="nb"&gt;exec test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;现在是 push 到 github 上，那个 Travis Ci build 失败，其原因也好理解，因为没有填写必要的数据，所以，请大家出出主意，该如何进行处理&lt;/p&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;%= ENV['app'] %&amp;gt;&lt;/span&gt;
&lt;span class="na"&gt;password&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;%= ENV['password'] %&amp;gt;&lt;/span&gt;
&lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;common&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;%= ENV['tags_common'] %&amp;gt;&lt;/span&gt;
&lt;span class="na"&gt;delay_time&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;%= ENV['delay_time'] %&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当前我的想法是，Travis Ci 可以设置环境变量，那么修改测试，让其从环境变量中读取基础数据
但是毕竟不是 rails &lt;img title=":sob:" alt="😭" src="https://twemoji.ruby-china.com/2/svg/1f62d.svg" class="twemoji"&gt; 无法解析 yaml 里面的 erb &lt;/p&gt;</description>
      <author>helperhaps</author>
      <pubDate>Thu, 14 Apr 2016 15:40:11 +0800</pubDate>
      <link>https://ruby-china.org/topics/29712</link>
      <guid>https://ruby-china.org/topics/29712</guid>
    </item>
    <item>
      <title>请教如何针对 model 中的 validates 进行测试</title>
      <description>&lt;p&gt;在 table 的 model 中有如下的 validates，要求在创建 table 的时候 name 不能重复，&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;validates&lt;/span&gt; &lt;span class="ss"&gt;:name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;presence: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;uniqueness: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;这个帮助方法会在保存对象之前验证属性值是否是唯一的。该方法不会在数据库中创建唯一性约束，所以有可能两个数据库连接创建的记录字段的值是相同的。为了避免出现这种问题，要在数据库的字段上建立唯一性索引——Rails Guides（uniqueness）&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;由于上述原因，在数据库的相应字段上建立了唯一性索引后其 schema 中出现如下的一行：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;add_index&lt;/span&gt; &lt;span class="s2"&gt;"tables"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="ss"&gt;name: &lt;/span&gt;&lt;span class="s2"&gt;"index_tables_on_name"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;unique: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;using: :btree&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;那么问题来了，如何对这个验证操作编写测试用例（rspec）？前辈们有什么可行的方案吗？&lt;/p&gt;</description>
      <author>helperhaps</author>
      <pubDate>Wed, 19 Aug 2015 13:39:42 +0800</pubDate>
      <link>https://ruby-china.org/topics/26979</link>
      <guid>https://ruby-china.org/topics/26979</guid>
    </item>
  </channel>
</rss>
