• 谢谢安道的翻译,购买过电子版本,之前也收到过安道赠送的书籍。

  • 注意使用 inject 和 reduce at 2017年08月24日

    @pathbox

    https://apidock.com/ruby/Enumerable/inject

    参考 inject 使用文档

    [1,2,3,4,5,6].inject([]) do |sum, i|  
    

    当你对数组调用 inject 方法并进行迭代时,sum 刚开始是为 [],然后下面一句是需要注意的,迭代过程中 block 的返回值会赋值给 sum,并作为下一次的输入,最终迭代完成后,sum 的值作为返回结果。

    In either case, the result becomes the new value for memo. At the end of the iteration, the final value of memo is the return value for the method.

    所以,当进行如下判断时

    if i > 1 
      sum <<  i
    end
    

    执行完成 if 语句后,返回的值为 nil,此时本次迭代的返回值 nil 就会赋值给 sum,当下一次再进行迭代时,就会报你遇到的以下错误

    NoMethodError: undefined method `<<' for nil:NilClass
    

    解决办法

    在 block 迭代的时候,显式返回 sum 就行了

    [1,2,3,4,5,6].inject([]) do |sum, i|
      if i > 1
        sum << i
      end
      sum
    end
    
  • @ZhouYiYu

    errors.messages 里面针对 attr 对应的 message 是数组的形式,所以如果需要单独显示每条,可以再次遍历 message 即可

    <% @customer.errors.messages.each do |attr,message| %>
      <% message.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
    <% end %>
    
  • <% if @customer.errors.full_messages.any? %> 
      <% @customer.errors.messages.values.each do |msg| %>
        <li> <%= msg %> </li>
      <% end %>
    <% end %>
    

    你之前日志里面显示了错误信息的 key,比如 Mobile,Name 等 用以上的方式就只打印错误的 value,而不用打印 key

  • 是的,定时部署,我目前用的 cron 定时调用部署脚本。

  • 只是举了个业务中的实例,是业务中自己创建的代码目录,可以不用关注。

  • 是的,更精确的还是用的 datetime 类型

  • 用 int 代替 datetime,主要是为了满足这种场景,比如要查询 2017 年 5 月 12 号的记录,则可以用条件 record_date = 20170512,如果对 datetime 创建索引,则直接可以索引命中。 如果用 datetime 类型,则需要做条件判断,比如 record_date > "2017-05-12 00:00:00" and record_date < "2017-05-12 23:59:59"

  • @pathbox 谢谢你回复及分析。 目前的业务使用场景

    • 的确是用到了多列索引,由于和具体业务相关,没有把所有的索引项全部列出来。
    • record_date 自己构建的 int 型 值为 Time.now.strftime("%Y%m%d").to_i 比如 20170509,方便用当前日期来做索引,从而使这种条件查询可以直接用到多列索引,SendLog.where("record_date=?and user_id=?",20170509,1)

    你在上面提到的,如果返回记录在 10W+ 的场景,如果用默认的 find_each 一样会存在索引失效的问题,的确如你所说,需要自己指定 order by field_column。

    对你的回复,再次表示感谢。

  • 已经到货,书的装订和印刷质量挺好,至于内容,等读完再评价

  • 在线培训的收费模式 at 2016年11月17日

    @ccok 体验过 蛋人网上面的教学,真的是非常用心的在做,课程质量也是相当高,对程序员而言,一年 800 多点儿的订阅费用,的确还是比较便宜,希望蛋人网能够一如既往的坚持高质量,相信会有越来越多的人订阅,并从中收益,也希望蛋人网能够一直做下去,我是会通过订阅来支持你们的。

  • @15731118085 多文件及图片上传的,我最终是用的 jquery 文件异步上传插件,非常好用,也没用阻塞服务,请参考下面的例子

    https://blueimp.github.io/jQuery-File-Upload/

  • C++ 入门书籍推荐 at 2016年06月06日

    写 ruby 之前,一直都是写 C++,编写电信设备相关管理软件,精读过不少 C++ 书箱,初学者我强力推荐下面 4 本,请按先后阅读:

    1. 《C++ Primer》
    2. 《Effective C++》
    3. 《More effective C++》
    4. 《C++ 编程规范》 其中《C++ Primer》是入门必备的,楼主不要怕厚,多花不了你一周时间,2,3 两本是进阶的,这 3 本书,精读,写 C++ 够用了。 第 4 本是编程中需要谨记的一切规范。
  • @nouse 可能我信息没跟上,请你推荐一些更好的选择,谢谢。

  • @1c7 谢谢提醒,在开头处,已经补充。

  • @pynix 5.0.0 正式版本还没有发布,我当时安装的是 5.0.0.beta1 --pre,已更新

  • @pynix @small_fish__ 网站作者 Terry Tai 已经将问题修复,可以访问了。

  • 个人建议还是买一本,这个书看完后,多数人会一直保留着的,这不是看完一次就收箱底的书,很多时候都会再拿出来翻翻,做参考。

  • #5 楼 @lgn21st 而我当时正好是读的第四版

  • [北京] 白帽汇招工匠 at 2016年03月24日

    @xiaokele233 和白帽汇的刘宇深入交流过,白帽汇是一家以技术为驱动的公司,友情帮顶,祝早日招到合适的 ruby 高手!

  • 之前看了 intel 在无人机方面的最新科技,重点也是跟随 + 避障

    http://www.jianshu.com/p/470ddf246870

  • 存在内存泄露的 Gem 列表 at 2016年03月02日

    @onemagicant 谢谢,已经更新列表

  • Effective Ruby 出中文版了 at 2016年01月22日

    初次印象

    • 书很轻薄,总共 180 页
    • 排版不错,和经典的 类似

    周末两天,刚好可以拜读。

  • Effective Ruby 出中文版了 at 2016年01月21日

    好书,多谢楼主分享,已经在京东上面购买。

  • 支持安道的作品 :plus1:

  • 两段元编程代码的疑问 at 2015年12月24日

    调用方法时 Ruby 做两件事

    • 找到这个方法
    • 执行这个方法

    注意,在 MyClass 没有实例化对象之前,MyClass 的实例方法,只有 method_one,这点可以用以下语句证实

    MyClass.instance_methods(false)
    

    obj 是 MyClass 对象 1、若直接执行 obj.method_two,首先向右一步,在 MyClass 中查找 method_two,没查到,然后在 MyClass 的祖先链上面查找,也没查到,所以最终在 method_missing 方法中会报undefined method `method_two'

    2、若先执行 obj.method_one,在 MyClass 中查找到 method_one,于是在执行 method_one 的方法调用的同时,定义 MyClass 的实例方法 method_two,此时 method_two 才会加入到 MyClass 的实例方法列表中,所以,这时再 new 一个 MyClass 的对象,可以用新的对象直接调用 method_two 实例方法,而不用再执行 method_one 方法

    obj2 = MyClass.new
    obj2.method_two
    

    以上会直接输出“hello!”

  • 存在内存泄露的 Gem 列表 at 2015年11月24日

    @rubyist518 谢谢,已经更新

  • 存在内存泄露的 Gem 列表 at 2015年11月19日

    @ruby_xiaojie 转载自 ruby_news 官网 twitter