<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>return (NULL)</title>
    <link>https://ruby-china.org/return</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>[长沙 高薪招聘] ruby 开发 / 实习工程师</title>
      <description>&lt;p&gt;长沙智擎信息技术有限公司创立于 2016 年 07 月 08 日，其核心产品 EduCoder 平台是一个基于互联网的 IT 教学、实验、实战和开发平台，为各类院校、企业和个人提供全 IT 技术栈的教学、实训和开发一体化的云服务。&lt;/p&gt;

&lt;p&gt;EduCoder 与国防科技大学、北京大学、北京航空航天大学、中科院软件所等建立长期战略合作，处于国际领先水平，注册用户来自 600 多家高校，为中国计算机学会、浪潮通软、中创软件、开源中国、微锐超算等机构和企业提供实训与竞赛平台，为全军大学计算机实训指定平台。&lt;/p&gt;

&lt;p&gt;待遇福利：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;月薪 4k-15k&lt;/li&gt;
&lt;li&gt;五险一金 + 股票期权 + 绩效奖金 + 年终分红&lt;/li&gt;
&lt;li&gt;弹性上班时间&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;招聘需求：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;有 web 开发经验，熟悉 ruby 语言、Rails 框架等优先考虑&lt;/li&gt;
&lt;li&gt;熟悉 Javascript，HTML，CSS 等技术&lt;/li&gt;
&lt;li&gt;熟悉 MySQL 数据库&lt;/li&gt;
&lt;li&gt;熟练使用 Git&lt;/li&gt;
&lt;li&gt;具备良好的代码书写规范，善于思考，能独立分析和解决问题&lt;/li&gt;
&lt;li&gt;责任心强，具备团队合作精神&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;加分项&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;有 GitHub 开源项目&lt;/li&gt;
&lt;li&gt;研读过 Gtlab 或者 Redmine 源码&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;联系我们：
电话：15388083362（微信同号）&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Thu, 14 Feb 2019 15:14:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/38107</link>
      <guid>https://ruby-china.org/topics/38107</guid>
    </item>
    <item>
      <title>This website is under heavy load 怎么优化</title>
      <description>&lt;p&gt;服务器是用的 Uloud 云，两台，每台（CPU 8 核 内存 16G），系统是 ubuntu + nginx + passenger 的
nginx 对 passenger 的配置如下：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
passenger_max_pool_size 70&lt;span class="p"&gt;;&lt;/span&gt;
passenger_min_instances 30&lt;span class="p"&gt;;&lt;/span&gt;
passenger_max_request_queue_size 500&lt;span class="p"&gt;;&lt;/span&gt;
passenger_pool_idle_time 60&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c"&gt;#  passenger_max_instances_per_app 70;&lt;/span&gt;
passenger_friendly_error_pages off&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c"&gt;# passenger_max_request_time 15;&lt;/span&gt;
&lt;span class="c"&gt;# passenger_memory_limit 150;&lt;/span&gt;
passenger_max_requests 200&lt;span class="p"&gt;;&lt;/span&gt;
include       mime.types&lt;span class="p"&gt;;&lt;/span&gt;
default_type  application/octet-stream&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最近经常出现：The website is under heavy load
请大家指点下是不哪里配置的有问题，非常感谢！&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Fri, 21 Sep 2018 10:19:08 +0800</pubDate>
      <link>https://ruby-china.org/topics/37525</link>
      <guid>https://ruby-china.org/topics/37525</guid>
    </item>
    <item>
      <title>[长沙] 诚聘 Ruby 精英！</title>
      <description>&lt;h2 id="我们是谁？"&gt;我们是谁？&lt;/h2&gt;
&lt;p&gt;国防科技大学计算机学院起步于 1958 年，1966 年成立全国第一个电子计算机系，1971 年扩建成计算机系兼研究所，1999 年成立计算机学院。学院下设计算机科学与技术系、网络工程系、计算机研究所、软件研究所、微电子与微处理器研究所、网络与信息安全研究所、并行与分布处理国家重点实验室和银河计算机工厂。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2018/48ac5f82-ce2a-4a9c-a750-051739cbd748.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;学院技术力量雄厚，现有教职工 800 多人，其中两院院士 2 人，高级专业技术职务 200 多人，在岗博士生导师 40 多人，硕士生导师 100 多人，具有博士学位的 150 余人，具有硕士以上学位 (含) 的近 300 人。先后涌现出“何梁何利”奖获得者 3 人，国家级有突出贡献的中青年专家 10 人，享受政府特殊津贴 64 人，进入国家“百千万工程”人才库 6 人，中国青年科技奖获得者 4 人，国家杰出青年基金获得者 4 人，全国优秀教师 2 人，全国高等学校优秀骨干教师 1 人，“求是”奖获得者 4 人，全国百篇优秀博士论文获得者 3 人，进入教育部跨世纪优秀人才培养计划 2 人，进入教育部新世纪优秀人才支持计划 5 人，有突出贡献中青年专家 10 人，有 30 多人次在国家学位委员会学科评议组、国家教育部教育指导委员会、国家自然科学基金委项目、国家 973 计划、国家 863 计划等国家重要学术机构中任职。&lt;/p&gt;
&lt;h2 id="坐标："&gt;坐标：&lt;/h2&gt;
&lt;p&gt;湖南长沙三一大道国防科技大学一号院&lt;/p&gt;
&lt;h2 id="招聘岗位（全职）：Ruby 研发工程师"&gt;招聘岗位（全职）：Ruby 研发工程师&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2 年以上互联网公司后台开发经验（新人如果谦虚好学我们愿意培养），熟悉 ruby 语言，rails 框架&lt;/li&gt;
&lt;li&gt;良好的代码风格，深厚的代码审查能力&lt;/li&gt;
&lt;li&gt;熟悉 MySQL 或 Redis，具备数据库优化经验&lt;/li&gt;
&lt;li&gt;有 grape 开发经验&lt;/li&gt;
&lt;li&gt;熟练使用 Git、Linux 系统&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;加分项&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;有 GitHub 开源项目&lt;/li&gt;
&lt;li&gt;熟悉 Angular、React、Vue 其中任一种&lt;/li&gt;
&lt;li&gt;不 TDD 就没安全感&lt;/li&gt;
&lt;li&gt;熟悉 docker、kubernetes&lt;/li&gt;
&lt;li&gt;熟悉 elasticsearch&lt;/li&gt;
&lt;li&gt;掌握服务器运维知识。如：Nginx 调优、负载均衡等&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="待遇"&gt;待遇&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;工资面议（只要你够强，上不封顶）&lt;/li&gt;
&lt;li&gt;五险一金、餐补&lt;/li&gt;
&lt;li&gt;带薪年假，病假，事假（还可能有额外一两周的寒暑假）&lt;/li&gt;
&lt;li&gt;免费住宿、免费健身场所&lt;/li&gt;
&lt;li&gt;还有很多...，来了你就知道了&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="要求"&gt;要求&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;工作主动，责任心强&lt;/li&gt;
&lt;li&gt;踏实、靠谱、聪明、愿意学习、渴望挑战&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="联系方式"&gt;联系方式&lt;/h2&gt;
&lt;p&gt;黄先生：15388083362&lt;/p&gt;

&lt;p&gt;email: 635995834@qq.com&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Thu, 07 Jun 2018 09:22:28 +0800</pubDate>
      <link>https://ruby-china.org/topics/36917</link>
      <guid>https://ruby-china.org/topics/36917</guid>
    </item>
    <item>
      <title>Rails3.2 为什么 production 下不能使用 zip 压缩</title>
      <description>&lt;p&gt;遇到一个很奇怪的问题，希望各位大牛帮解惑，非常感谢&lt;/p&gt;

&lt;p&gt;我的 Rails 版本比较低 3.2，我想把一些静态 JS 通过 ZIP 进行压缩
application.rb 中配置如下&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;middleware&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;insert_before&lt;/span&gt; &lt;span class="no"&gt;ActionDispatch&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Static&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;Rack&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Deflater&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在 development 环境下 JS 可以 zip 压缩&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Cache&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="no"&gt;Control&lt;/span&gt;&lt;span class="ss"&gt;:no&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;store&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;must&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;revalidate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kp"&gt;private&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="no"&gt;Connection&lt;/span&gt;&lt;span class="ss"&gt;:Keep&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="no"&gt;Alive&lt;/span&gt;
&lt;span class="no"&gt;Content&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="no"&gt;Encoding&lt;/span&gt;&lt;span class="ss"&gt;:gzip&lt;/span&gt;
&lt;span class="no"&gt;Content&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="no"&gt;Length&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;286241&lt;/span&gt;
&lt;span class="no"&gt;Content&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="no"&gt;Type&lt;/span&gt;&lt;span class="ss"&gt;:application&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;javascript&lt;/span&gt;
&lt;span class="no"&gt;Date&lt;/span&gt;&lt;span class="ss"&gt;:Wed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt; &lt;span class="no"&gt;May&lt;/span&gt; &lt;span class="mi"&gt;2018&lt;/span&gt; &lt;span class="mo"&gt;07&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;34&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;38&lt;/span&gt; &lt;span class="no"&gt;GMT&lt;/span&gt;
&lt;span class="no"&gt;Last&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="no"&gt;Modified&lt;/span&gt;&lt;span class="ss"&gt;:Tue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt; &lt;span class="no"&gt;May&lt;/span&gt; &lt;span class="mi"&gt;2018&lt;/span&gt; &lt;span class="mo"&gt;01&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;34&lt;/span&gt; &lt;span class="no"&gt;GMT&lt;/span&gt;
&lt;span class="no"&gt;Server&lt;/span&gt;&lt;span class="ss"&gt;:WEBrick&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1.3&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="no"&gt;Ruby&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1.9&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;2013&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="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="no"&gt;Set&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="no"&gt;Cookie&lt;/span&gt;&lt;span class="ss"&gt;:__profilin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;p&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="no"&gt;Dt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sr"&gt;/
Set-Cookie:__profilin=p%3Dt; path=/&lt;/span&gt;
&lt;span class="no"&gt;Set&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="no"&gt;Cookie&lt;/span&gt;&lt;span class="ss"&gt;:__profilin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;p&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="no"&gt;Dt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sr"&gt;/
Vary:Accept-Encoding
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是在 production 环境下始终没有效果：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Accept&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="no"&gt;Ranges&lt;/span&gt;&lt;span class="ss"&gt;:bytes&lt;/span&gt;
&lt;span class="no"&gt;Connection&lt;/span&gt;&lt;span class="ss"&gt;:keep&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;alive&lt;/span&gt;
&lt;span class="no"&gt;Content&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="no"&gt;Length&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1006540&lt;/span&gt;
&lt;span class="no"&gt;Content&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="no"&gt;Type&lt;/span&gt;&lt;span class="ss"&gt;:application&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;javascript&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;charset&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;utf&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;
&lt;span class="no"&gt;Date&lt;/span&gt;&lt;span class="ss"&gt;:Wed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt; &lt;span class="no"&gt;May&lt;/span&gt; &lt;span class="mi"&gt;2018&lt;/span&gt; &lt;span class="mo"&gt;07&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;37&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;28&lt;/span&gt; &lt;span class="no"&gt;GMT&lt;/span&gt;
&lt;span class="no"&gt;ETag&lt;/span&gt;&lt;span class="ss"&gt;:"5afec9cd-f5bcc"&lt;/span&gt;
&lt;span class="no"&gt;Last&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="no"&gt;Modified&lt;/span&gt;&lt;span class="ss"&gt;:Fri&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt; &lt;span class="no"&gt;May&lt;/span&gt; &lt;span class="mi"&gt;2018&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;45&lt;/span&gt; &lt;span class="no"&gt;GMT&lt;/span&gt;
&lt;span class="no"&gt;Server&lt;/span&gt;&lt;span class="ss"&gt;:nginx&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1.10&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;请问有好的解决方法吗？非常感谢！&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Wed, 23 May 2018 15:40:01 +0800</pubDate>
      <link>https://ruby-china.org/topics/36817</link>
      <guid>https://ruby-china.org/topics/36817</guid>
    </item>
    <item>
      <title>Rails 树形结构分组查询问题</title>
      <description>&lt;p&gt;非常感谢大家的关注，问题是这样的：有张 comments 表，大致结构结构如下&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;id&lt;/span&gt;  &lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt;  &lt;span class="n"&gt;parent_id&lt;/span&gt;
&lt;span class="mi"&gt;1&lt;/span&gt;    &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;test1&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;      &lt;span class="mi"&gt;1&lt;/span&gt;       &lt;span class="n"&gt;null&lt;/span&gt;
&lt;span class="mi"&gt;2&lt;/span&gt;    &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;test2&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;      &lt;span class="mi"&gt;1&lt;/span&gt;       &lt;span class="n"&gt;null&lt;/span&gt;
&lt;span class="mi"&gt;3&lt;/span&gt;    &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;test3&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;      &lt;span class="mi"&gt;1&lt;/span&gt;       &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="mi"&gt;4&lt;/span&gt;    &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;test4&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;      &lt;span class="mi"&gt;1&lt;/span&gt;       &lt;span class="n"&gt;null&lt;/span&gt;    
&lt;span class="mi"&gt;5&lt;/span&gt;    &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;test5&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;      &lt;span class="mi"&gt;1&lt;/span&gt;       &lt;span class="mi"&gt;2&lt;/span&gt;            
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中 parent 为空代表没有回复，比如：记录 3、5 就是对记录 2 的回复
我现在想一次查询获取所有的数据树形结构，最好不改动现有的数据库结构
比如：
最终展示三条记录（1、2、4），其中记录 2 包含两天缩进的子记录（3、5）
大家有好的方法请多多指导，非常感谢~&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Mon, 09 Apr 2018 14:46:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/35409</link>
      <guid>https://ruby-china.org/topics/35409</guid>
    </item>
    <item>
      <title>Rails has_many 关联查询问题</title>
      <description>&lt;p&gt;两张表：users、projects；
其中 projects 表的字段如下&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="err"&gt;，&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;position&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;index&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="no"&gt;Class&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;
   &lt;span class="n"&gt;has_many&lt;/span&gt;&lt;span class="ss"&gt;:projects&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="ss"&gt;:dependent&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;:destroy&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当我查询用户的 projects 时候，会有多组值&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;projects&lt;/span&gt;  &lt;span class="n"&gt;结果如下&lt;/span&gt;

&lt;span class="nb"&gt;id&lt;/span&gt;  &lt;span class="n"&gt;user_id&lt;/span&gt;  &lt;span class="n"&gt;position&lt;/span&gt;  &lt;span class="n"&gt;index&lt;/span&gt;
&lt;span class="mi"&gt;1&lt;/span&gt;    &lt;span class="mi"&gt;12&lt;/span&gt;          &lt;span class="mi"&gt;1&lt;/span&gt;       &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="mi"&gt;2&lt;/span&gt;    &lt;span class="mi"&gt;12&lt;/span&gt;          &lt;span class="mi"&gt;2&lt;/span&gt;       &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="mi"&gt;3&lt;/span&gt;    &lt;span class="mi"&gt;12&lt;/span&gt;          &lt;span class="mi"&gt;3&lt;/span&gt;       &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="mi"&gt;4&lt;/span&gt;    &lt;span class="mi"&gt;12&lt;/span&gt;          &lt;span class="mi"&gt;1&lt;/span&gt;       &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="mi"&gt;5&lt;/span&gt;    &lt;span class="mi"&gt;12&lt;/span&gt;          &lt;span class="mi"&gt;2&lt;/span&gt;       &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="mi"&gt;6&lt;/span&gt;    &lt;span class="mi"&gt;12&lt;/span&gt;          &lt;span class="mi"&gt;3&lt;/span&gt;       &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我想的结果是：能否通过一次查询只取 index 最大的一组值（比如：4、5、6 记录）
最好是在 has_many 关联的时候就设置，比如：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;#  伪码如下&lt;/span&gt;
&lt;span class="n"&gt;has_many&lt;/span&gt; &lt;span class="ss"&gt;:projects&lt;/span&gt;&lt;span class="p"&gt;,&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;max&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'index'&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;希望各位大神多多关照，非常感谢！！！&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Mon, 02 Apr 2018 14:52:03 +0800</pubDate>
      <link>https://ruby-china.org/topics/35385</link>
      <guid>https://ruby-china.org/topics/35385</guid>
    </item>
    <item>
      <title>[长沙 待遇优厚] 招聘 Ruby 工程师 </title>
      <description>&lt;h2 id="我们是谁？"&gt;我们是谁？&lt;/h2&gt;
&lt;p&gt;国防科技大学计算机学院起步于 1958 年，1966 年成立全国第一个电子计算机系，1971 年扩建成计算机系兼研究所，1999 年成立计算机学院。学院下设计算机科学与技术系、网络工程系、计算机研究所、软件研究所、微电子与微处理器研究所、网络与信息安全研究所、并行与分布处理国家重点实验室和银河计算机工厂。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2018/48ac5f82-ce2a-4a9c-a750-051739cbd748.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;学院技术力量雄厚，现有教职工 800 多人，其中两院院士 2 人，高级专业技术职务 200 多人，在岗博士生导师 40 多人，硕士生导师 100 多人，具有博士学位的 150 余人，具有硕士以上学位 (含) 的近 300 人。先后涌现出“何梁何利”奖获得者 3 人，国家级有突出贡献的中青年专家 10 人，享受政府特殊津贴 64 人，进入国家“百千万工程”人才库 6 人，中国青年科技奖获得者 4 人，国家杰出青年基金获得者 4 人，全国优秀教师 2 人，全国高等学校优秀骨干教师 1 人，“求是”奖获得者 4 人，全国百篇优秀博士论文获得者 3 人，进入教育部跨世纪优秀人才培养计划 2 人，进入教育部新世纪优秀人才支持计划 5 人，有突出贡献中青年专家 10 人，有 30 多人次在国家学位委员会学科评议组、国家教育部教育指导委员会、国家自然科学基金委项目、国家 973 计划、国家 863 计划等国家重要学术机构中任职。&lt;/p&gt;
&lt;h2 id="坐标："&gt;坐标：&lt;/h2&gt;
&lt;p&gt;湖南长沙三一大道国防科技大学一号院&lt;/p&gt;
&lt;h2 id="招聘岗位（全职）：Ruby 全栈研发工程师"&gt;招聘岗位（全职）：Ruby 全栈研发工程师&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;有 Web 开发经验（must have）&lt;/li&gt;
&lt;li&gt;良好的代码风格&lt;/li&gt;
&lt;li&gt;良好的英文阅读能力&lt;/li&gt;
&lt;li&gt;熟悉 MySQL 或 Postgres&lt;/li&gt;
&lt;li&gt;熟练使用 Git&lt;/li&gt;
&lt;li&gt;熟悉 Unix/Linux 系统
&lt;strong&gt;加分项&lt;/strong&gt;：&lt;/li&gt;
&lt;li&gt;有 GitHub 开源项目&lt;/li&gt;
&lt;li&gt;有 Angular、React 或 Bootstrap 项目经验（我们主要用 Vue）&lt;/li&gt;
&lt;li&gt;不 TDD 就没安全感&lt;/li&gt;
&lt;li&gt;熟悉 haml&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="待遇"&gt;待遇&lt;/h2&gt;
&lt;p&gt;待遇优厚，根据个人情况面谈&lt;/p&gt;
&lt;h2 id="联系方式"&gt;联系方式&lt;/h2&gt;
&lt;p&gt;卢先生：18390843989&lt;br&gt;
email: 839377654@qq.com&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Wed, 17 Jan 2018 16:04:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/34901</link>
      <guid>https://ruby-china.org/topics/34901</guid>
    </item>
    <item>
      <title>Rails 传参问题 (params、@_params 有啥区别？)</title>
      <description>&lt;p&gt;Controller 的 function 中接收参数可以使用&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;params&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;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是，如果控制器方法中添加事务后，在事务中就获取参数 params 会变成 nil，只能使用&lt;a href="/_params" class="user-mention" title="@_params"&gt;&lt;i&gt;@&lt;/i&gt;_params&lt;/a&gt;来获取参数，这是什么缘由？
希望大神们帮解答下，谢谢~&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Fri, 22 Dec 2017 15:37:17 +0800</pubDate>
      <link>https://ruby-china.org/topics/34753</link>
      <guid>https://ruby-china.org/topics/34753</guid>
    </item>
    <item>
      <title>Rails 性能查询优化</title>
      <description>&lt;p&gt;麻烦各位百忙之中抽出一点时间帮我看看这个问题，谢谢！
问题是这样：
有三张表 projects、sub_projects、products。projects 表与子项目表（sub_project）是一对多的关系；projects 表与产品表（products）是一对多的关系；&lt;/p&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;projects 表，字段 sub_project_id, products_id
sub_projects、products 外键project_id
现在需要做的是查询10条projects ，每条记录中需要包含该条记录的sub_projects总数，products总数
&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;select&lt;/span&gt; &lt;span class="n"&gt;projects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;*&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;select&lt;/span&gt; &lt;span class="n"&gt;count&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="n"&gt;form&lt;/span&gt; &lt;span class="n"&gt;sub_projects&lt;/span&gt; &lt;span class="n"&gt;where&lt;/span&gt; &lt;span class="n"&gt;projects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;sub_projects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;project_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="n"&gt;as&lt;/span&gt; &lt;span class="n"&gt;sub_project_count&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; 
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;select&lt;/span&gt; &lt;span class="n"&gt;count&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="n"&gt;form&lt;/span&gt; &lt;span class="n"&gt;products&lt;/span&gt; &lt;span class="n"&gt;where&lt;/span&gt; &lt;span class="n"&gt;projects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;products&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;project_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;as&lt;/span&gt; &lt;span class="n"&gt;product_count&lt;/span&gt; 
&lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;projects&lt;/span&gt;  &lt;span class="n"&gt;order&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt;  &lt;span class="n"&gt;product_count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sub_project_count&lt;/span&gt;&lt;span class="err"&gt;；&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;上面的语句虽然可以实现，但是性能太差？
有没有更高效的查询？&lt;/p&gt;

&lt;p&gt;如果哪位大神能够用 ruby 帮我写出来，那就太好了，非常感谢！&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Wed, 20 Dec 2017 11:22:17 +0800</pubDate>
      <link>https://ruby-china.org/topics/34734</link>
      <guid>https://ruby-china.org/topics/34734</guid>
    </item>
    <item>
      <title>GitLab 权限控制失效， 非项目成员能随便 push 代码</title>
      <description>&lt;p&gt;之前部署过 Gitlab 功能都正常，但是最近突然发现 Gitlab 平台所有的用户都能够随便向其他项目 push 代码，奇怪的是非项目成员也可以随便 push，这可能是什么原因呢？
完全没头绪，日志也都正常，不知道从哪下手，望大神指点，非常感谢！&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Thu, 09 Nov 2017 17:35:18 +0800</pubDate>
      <link>https://ruby-china.org/topics/34546</link>
      <guid>https://ruby-china.org/topics/34546</guid>
    </item>
    <item>
      <title>Rails 锁 --- 能不能对一段逻辑代码加锁，高并发情况下总被反复执行</title>
      <description>&lt;p&gt;逻辑代码如下：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&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="n"&gt;project&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create!&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;"name"&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="n"&gt;api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&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="c1"&gt;# 这是一个调用第三方api的一个更新操作&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;present?&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;update_column&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="k"&gt;end&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;/code&gt;&lt;/pre&gt;
&lt;p&gt;现在的问题是在高并发下，这段代码可能会被执行多次，有方法对这整过过程加锁吗？类似于 lock/unlock&lt;/p&gt;

&lt;p&gt;如果仅对 Project 加锁，&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;roject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lock&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create!&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;/code&gt;&lt;/pre&gt;
&lt;p&gt;加锁，后面的 api...这段代码应该还是有可能执行多次吧？
Rails Guide 对锁的介绍好抽象，望大神能帮解惑，非常感谢！&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Mon, 30 Oct 2017 18:38:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/34469</link>
      <guid>https://ruby-china.org/topics/34469</guid>
    </item>
    <item>
      <title>如何使用 validates 及 uniqueness 实现两个字段唯一确定一条记录</title>
      <description>&lt;p&gt;代码如下&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Product&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;attr_accessible&lt;/span&gt;  &lt;span class="ss"&gt;:user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:project_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我现在想通过 user_id 及 project_id 两字段组合来唯一确定一条数据，也就是说不能存在两条相同的（user_id,project_id）的记录
请问这个该如何实现？
感谢！&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Mon, 30 Oct 2017 17:14:48 +0800</pubDate>
      <link>https://ruby-china.org/topics/34466</link>
      <guid>https://ruby-china.org/topics/34466</guid>
    </item>
    <item>
      <title>请问如何使用 ruby 代码来执行.sh 文件</title>
      <description>&lt;p&gt;我在目录的 files 文件下面写了个 test.sh 文件，现在我想在控制器中来执行这个 test.sh 文件（files/test.sh），请问该怎么写？谢谢！&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Fri, 29 Sep 2017 18:47:05 +0800</pubDate>
      <link>https://ruby-china.org/topics/34299</link>
      <guid>https://ruby-china.org/topics/34299</guid>
    </item>
    <item>
      <title>Ruby 使用 Spreadsheet 解析 Excel 数据，row 总是为 nil</title>
      <description>&lt;p&gt;想要读取 Excel 数据，按网上的一些教程，代码如下：&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;sync_students&lt;/span&gt;
    &lt;span class="c1"&gt;# Spreadsheet::ParseExcel.parse("files/2017/09/副本lvyou.xls")&lt;/span&gt;
    &lt;span class="no"&gt;Spreadsheet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;client_encoding&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"UTF-8"&lt;/span&gt;
    &lt;span class="n"&gt;book&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Spreadsheet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"files/2017/09/副本lvyou.xls"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;sheet1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;book&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;worksheet&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="n"&gt;sheet1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
       &lt;span class="n"&gt;row&lt;/span&gt;  &lt;span class="c1"&gt;# Empty Spreadsheet::Excel::Row&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是，解析出来的 row 总是为空&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Empty&lt;/span&gt; &lt;span class="no"&gt;Spreadsheet&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Excel&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Row&lt;/span&gt;&lt;span class="err"&gt;）&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中 sheet1 的数据类型如下：&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2017/ec67127e-99b7-4aac-b5ca-9beeb9724033.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;这是哪里出了问题？
希望大家帮忙看下，谢谢！&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Tue, 12 Sep 2017 18:00:50 +0800</pubDate>
      <link>https://ruby-china.org/topics/34100</link>
      <guid>https://ruby-china.org/topics/34100</guid>
    </item>
    <item>
      <title>Cookie 跨域删除问题</title>
      <description>&lt;p&gt;有两个域名：aa.bbb.net 和 &lt;a href="http://www.ccc.net%EF%BC%8C%E5%90%8C%E6%97%B6%E6%8C%87%E5%90%91%E4%B8%80%E4%B8%AA%E6%9C%8D%E5%8A%A1%EF%BC%88ngnix%E9%85%8D%E7%BD%AE%EF%BC%89%EF%BC%8C%E5%8F%AF%E4%BB%A5%E5%9C%A8%E4%B8%80%E4%B8%AA%E6%B5%8F%E8%A7%88%E5%99%A8%E7%9A%84%E4%B8%A4%E4%B8%AAtab%E5%88%86%E5%88%AB%E7%99%BB%E9%99%86%E8%BF%99%E4%B8%A4%E4%B8%AA%E5%9F%9F%E5%90%8D" title=""&gt;www.ccc.net，同时指向一个服务（ngnix 配置），可以在一个浏览器的两个 tab 分别登陆这两个域名&lt;/a&gt;
现在退出登录的时候遇到了问题，删除代码如下：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;autologin_cookie_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;domain: &lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt; &lt;span class="n"&gt;aa&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;bbb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;net&lt;/span&gt;&lt;span class="err"&gt;’&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;autologin_cookie_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;domain: &lt;/span&gt;&lt;span class="err"&gt;‘&lt;/span&gt; &lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ccc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;net&lt;/span&gt;&lt;span class="err"&gt;’&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;只能退出‘www.ccc.net’（删除成功），而域名‘aa.bbb.net’无法退出，
是不是这样的写法有问题？对 cookie 了解不多，新手，希望各位帮忙看看？谢谢&lt;/p&gt;

&lt;p&gt;或者有没有更好的处理方法？&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Mon, 04 Sep 2017 15:54:53 +0800</pubDate>
      <link>https://ruby-china.org/topics/34018</link>
      <guid>https://ruby-china.org/topics/34018</guid>
    </item>
    <item>
      <title>手动刷新页面为什么会出现 WWW-Authenticate 验证登录框？</title>
      <description>&lt;p&gt;浏览网页的时候偶尔会出现 WWW-Authenticate'的验证的登录框
有个问题不理解，我是直接刷新页面的，按道理是不会走 xml 请求，有没有方法避免这个问题？&lt;/p&gt;

&lt;p&gt;代码如下：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;require_login&lt;/span&gt;
    &lt;span class="k"&gt;if&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;current&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;logged?&lt;/span&gt;
      &lt;span class="c1"&gt;# Extract only the basic url parameters on non-GET requests&lt;/span&gt;
      &lt;span class="k"&gt;if&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;get?&lt;/span&gt;
        &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;url_for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="k"&gt;else&lt;/span&gt;
        &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;url_for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:controller&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;:controller&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="ss"&gt;:action&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;:action&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;:project_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;:project_id&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;
      &lt;span class="n"&gt;respond_to&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
        &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;html&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="n"&gt;signin_url&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;atom&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="n"&gt;signin_url&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;xml&lt;/span&gt;  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;head&lt;/span&gt; &lt;span class="ss"&gt;:unauthorized&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'WWW-Authenticate'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Basic realm="Redmine API"'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;js&lt;/span&gt;   &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;head&lt;/span&gt; &lt;span class="ss"&gt;:unauthorized&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'WWW-Authenticate'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Basic realm="Redmine API"'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;head&lt;/span&gt; &lt;span class="ss"&gt;:unauthorized&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'WWW-Authenticate'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Basic realm="Redmine API"'&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;return&lt;/span&gt; &lt;span class="kp"&gt;false&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;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;xml&lt;/span&gt;  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;head&lt;/span&gt; &lt;span class="ss"&gt;:unauthorized&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'WWW-Authenticate'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Basic realm="Redmine API"'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
       &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;js&lt;/span&gt;   &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;head&lt;/span&gt; &lt;span class="ss"&gt;:unauthorized&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'WWW-Authenticate'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Basic realm="Redmine API"'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
       &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;head&lt;/span&gt; &lt;span class="ss"&gt;:unauthorized&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'WWW-Authenticate'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Basic realm="Redmine API"'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;会有影响吗？&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Mon, 12 Jun 2017 14:19:12 +0800</pubDate>
      <link>https://ruby-china.org/topics/33221</link>
      <guid>https://ruby-china.org/topics/33221</guid>
    </item>
    <item>
      <title>Where 两个字段查询问题</title>
      <description>&lt;p&gt;如：projects 表有字段 name，language&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;language&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;:language&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我查询的时候&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Project&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;:name&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"test"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:language&lt;/span&gt; &lt;span class="o"&gt;=&amp;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;language&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;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果这个时候 language 为 nil，那么我只想得到结果&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Project&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;:name&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"test"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;而不是&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Project&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;:name&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"test"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:language&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这该怎么写&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Fri, 02 Jun 2017 10:41:37 +0800</pubDate>
      <link>https://ruby-china.org/topics/33120</link>
      <guid>https://ruby-china.org/topics/33120</guid>
    </item>
    <item>
      <title>Ruby 抛出异常后为什么不执行 rescue 中的语句了</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;current_cart&lt;/span&gt;
  &lt;span class="no"&gt;Cart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:cart_id&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="k"&gt;rescue&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;RecordNotFound&lt;/span&gt;
  &lt;span class="n"&gt;cart&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Cart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;
  &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:cart_id&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;
  &lt;span class="n"&gt;cart&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;debug 模式，都不进入 cart = Cart.create
但是如果去掉 ActiveRecord::RecordNotFound，会执行 rescue 后的语句，这是什么原因&lt;/p&gt;

&lt;p&gt;另外
cart = Cart.create 总会报参数不对，求解！谢谢
&lt;a href="/lyfi2003" class="user-mention" title="@lyfi2003"&gt;&lt;i&gt;@&lt;/i&gt;lyfi2003&lt;/a&gt; &lt;a href="/huacnlee" class="user-mention" title="@huacnlee"&gt;&lt;i&gt;@&lt;/i&gt;huacnlee&lt;/a&gt; &lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Sat, 14 Jan 2017 22:12:09 +0800</pubDate>
      <link>https://ruby-china.org/topics/32125</link>
      <guid>https://ruby-china.org/topics/32125</guid>
    </item>
    <item>
      <title>Grape 过滤器如何过滤掉 API 方法 (语法不清楚)</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;API&lt;/span&gt;
  &lt;span class="c1"&gt;# Projects API&lt;/span&gt;
  &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Repositories&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;Grape&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;API&lt;/span&gt;
    &lt;span class="n"&gt;before&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;authenticate!&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;before&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;authorize!&lt;/span&gt; &lt;span class="ss"&gt;:download_code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user_project&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;resource&lt;/span&gt; &lt;span class="ss"&gt;:projects&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="o"&gt;...&lt;/span&gt;
      &lt;span class="o"&gt;....&lt;/span&gt;

      &lt;span class="c1"&gt;#   GET /projects/:id/repository/test&lt;/span&gt;
      &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="s1"&gt;':id/repository/test'&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
          &lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;上面的代码中，我想在第一个 before { authenticate! } 中 except 掉 tree，即调 test api 的时候不走 authenticate!，请问语法上该怎么写？
感谢！&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Wed, 21 Dec 2016 10:44:48 +0800</pubDate>
      <link>https://ruby-china.org/topics/31958</link>
      <guid>https://ruby-china.org/topics/31958</guid>
    </item>
    <item>
      <title>通过 Gitlab 接口 如何打包下载版本库源码</title>
      <description>&lt;p&gt;gitlab archive 接口如下：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Get an archive of the repository&lt;/span&gt;
&lt;span class="c1"&gt;# @param [Integer] project the ID fo a project.&lt;/span&gt;
&lt;span class="c1"&gt;# sha (optional) - The commit SHA to download defaults to the tip of the default branch&lt;/span&gt;
&lt;span class="c1"&gt;# @return [Gitlab::ObjectifiedHash]&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;project_archive&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sha&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"/projects/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/repository/archive?sha=&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;sha&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="kp"&gt;alias_method&lt;/span&gt; &lt;span class="ss"&gt;:repo_project_archive&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:project_archive&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;调用 archive 接口后，返回 [Gitlab::ObjectifiedHash] 类型，而我想直接 send file，有好的解决方法吗？
当然，如果使用：&lt;a href="https://git.aaaaa.net/api/v3/projects/1/repository/archive?&amp;amp;private_token=XXXXXXXXXX" rel="nofollow" target="_blank"&gt;https://git.aaaaa.net/api/v3/projects/1/repository/archive?&amp;amp;private_token=XXXXXXXXXX&lt;/a&gt; 这样是可以直接下载，但是会暴漏 token 值&lt;/p&gt;

&lt;p&gt;谢谢大家&lt;/p&gt;</description>
      <author>return</author>
      <pubDate>Tue, 20 Dec 2016 10:38:54 +0800</pubDate>
      <link>https://ruby-china.org/topics/31939</link>
      <guid>https://ruby-china.org/topics/31939</guid>
    </item>
  </channel>
</rss>
