• OS 完全一致的话,可以试试 https://bundler.io/guides/deploying.html 坑主要是二进制,需要你两台机器都提前装好依赖,版本尽量一致

  • 如果服务器返回结果了,那就要看下网易那边的文档。 Mail 最大的坑是报 EOFError

  • each_chareach_byte 就是把 String 转换成 Enumerable 同时保证没有歧义,有歧义的地方就会产生坑,有坑的地方踩进去可能就捅出大篓子,所以不能让 String 自身有 Enumerable

  • 没做这个,如果给阅读器用直接 https://ruby-china.org/topics/feed

  • 国内直接就能部署一个。。。然后就进去了 GG

  • 下个月~ 最近冷却下做点别的事(zhuan)情(qian)

  • psql (12.2, server 12.1)
    Type "help" for help.
    
    jasl=# SELECT (ACOS(0.9999250668634809) * 6376.77271) as distance;
         distance
    -------------------
     78.06486321137545
    (1 row)
    
    2.6.5 :001 > ActiveRecord::Base.connection.execute("SELECT (ACOS(0.9999250668634809) * 6376.77271) as distance;").first
       (0.5ms)  SELECT (ACOS(0.9999250668634809) * 6376.77271) as distance;
     => {"distance"=>78.06486321137545}
    

    再确认一下 PG 版本和结果?

  • 如果你想校验日期格式 https://github.com/adzap/validates_timeliness 用这个就好

    如果你要想练习,最简单的办法就是,你先搞明白 rawValue = record.send(attribute.to_s + '_before_type_cast') 出来的值和类型是什么 (取 attribute.to_s + '_before_type_cast' 的意图没看懂)

    puts rawValue
    puts rawValue.class
    

    看一看

    继续,做做测试,比如

    2.6.5 :009 > User.first.created_at_before_type_cast
      User Load (0.5ms)  SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT $1  [["LIMIT", 1]]
     => 2020-02-22 16:33:42 UTC
    2.6.5 :010 > Date.parse User.first.created_at_before_type_cast
      User Load (0.5ms)  SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT $1  [["LIMIT", 1]]
    Traceback (most recent call last):
            2: from (irb):10
            1: from (irb):10:in `parse'
    TypeError (no implicit conversion of Time into String)
    
    2.6.5 :011 > Date.parse User.first.created_at.to_date
      User Load (0.5ms)  SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT $1  [["LIMIT", 1]]
    Traceback (most recent call last):
            3: from (irb):11
            2: from (irb):11:in `rescue in irb_binding'
            1: from (irb):11:in `parse'
    TypeError (no implicit conversion of Date into String)
    

    可见字段类型如果是 Datetime 甚至就是 Date 一样可以引发异常,这明显违背了这个验证器的意图。

    这里正确的做法是用专门的库(开头提了),或者利用 ActiveRecord::Type

    2.6.5 :012 > ActiveRecord::Type.lookup(:date).cast("x")
     => nil
    
    2.6.5 :014 > ActiveRecord::Type.lookup(:date).cast('2020-02-02')
     => Sun, 02 Feb 2020
    
    2.6.5 :015 > ActiveRecord::Type.lookup(:date).cast(Date.today)
     => Tue, 25 Feb 2020
    
    2.6.5 :016 > ActiveRecord::Type.lookup(:date).cast(Time.now)
     => Tue, 25 Feb 2020
    

    那么只要判断返回值是否为 nil,即可判定了

  • 自己学习一下 CSV 的格式,然后手拼 CSV

  • Rails 数据库相关问题 at 2020年02月23日

    PG::UndefinedFunction 数据库问题没跑,控制器/路由的错误基本都是 ActionController 抛出的。 你换数据库可以考虑删掉 db/schema.rb 然后 rails db:create && rails db:migrate 重建 schema.rb

  • 有了工作流,很多不好做的事儿都好做了

  • 之前我自己有一套。。。换电脑之后忘了备份了,这次基本上要么在这俩帖子里,要不就在代码里。。。其他都语音就没记了

  • 我是真的考虑要不要恰饭卖个 Pro 😂 什么样的变态需求会有人愿意付费呢?

  • Rails 数据库相关问题 at 2020年02月19日

    没错,所以你的项目达到一定程度后,就要考虑部署环境和开发环境尽可能接近了。

    就算是同一款数据库,版本不同也有可能行为不一致的

  • Rails 数据库相关问题 at 2020年02月19日

    日志里写清楚了

    No function matches the given name and argument types. You might need to add explicit type casts.

    问题在于这 sql

    select * from problems where detected_at > date('now','start of year','-1 year') AND detected_at < date('now','start of year','1 second')):

    date 聚合函数有问题,如果是你自己写的,那么你就要找一下 PG 对应的函数改写

  • Petri Net workflow for Rails at 2020年02月14日

    促进一下生态, @dsh0416 制作了用于构造 PetriNet 的 DSL https://github.com/dsh0416/petri-dsl/

  • 后继产品:Petri Net workflow for Rails by Hooopo

    当然 Hooopo 的代码太暴力了,我也要写个版本,跟他比一比

  • Petri Net workflow for Rails at 2020年02月12日

    炮哥出品,必属精品,这就是我前年的工作流的全新版本啦 🎉

  • 苹果 2016 新设计的那个钢板键盘有设计缺陷,所以使用这设计的(就是 2016-2019 的 mbp)键盘保修期延长到四年且免费更换

  • 成为 MiBoy 啊!一百多就够了吧...反正机械键盘几乎都是 Cherry 轴 Cherry G3000 500 左右(傻大笨) Mac 布局的 Matias 也差不多 700 多

  • 消耗品该磨损就磨损吧(毕竟还能顺道换 C 壳和电池),在书桌上用可以买个键盘用

  • 华顺应该没续那个域名 我看看能否拿掉那一条

  • APM 监控有钱上 NewRelic,没钱自建 ELK

    自动化运维机器不多各台机器单独配 Monit 就好,部署 capstrano,老玩具还马马虎虎能用。

    机器比较多的话,现代话的做法还是上容器了

  • (我不会用,但你得有,逃~

  • 好像只能用在 select 上,Insert Delete Update 调用链最后不是 AR 的 Query 了,没法调 to_sql

  • 这年头有多少个 XXEnv? at 2019年12月26日

    说来 rvm 可以说是 shell 工程的集大成者了。。。印象里好像是上万行的 sh 了这可是非常恐怖的。。。

  • Ruby 2.7.0 Released at 2019年12月26日

    如果重新升级桩文件还有问题,用 bundle exec 来执行命令目前测试是不会出现问题的

    我升级我自己维护的 gem 的时候发现一些别的问题, bundle exec 可以解决

  • Ruby 2.7.0 Released at 2019年12月26日

    Rails 还没有发正式的适配 2.7 版本,虽然不会有什么问题,但是会多一些 warning 看着烦,问题比较大的地方在 bundler 2.1.2,如果遇到问题可以试试重新生成一下 bundle 的桩文件 bundle binstubs bundler

  • 试试能不能打印 pwd 就是当前目录 或者更土的办法,用 Windows 的搜索 去搜你存的那个文件名

  • ruby 做强类型 DSL 的问题 at 2019年12月24日

    两种方法:

    1. 用 Sorbet 加类型标注,未来就是 Ruby 默认集成的组件了
    2. https://github.com/egonSchiele/contracts.ruby 这个有知名项目在用