OS 完全一致的话,可以试试 https://bundler.io/guides/deploying.html 坑主要是二进制,需要你两台机器都提前装好依赖,版本尽量一致
如果服务器返回结果了,那就要看下网易那边的文档。
Mail 最大的坑是报 EOFError
each_char
和 each_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
PG::UndefinedFunction
数据库问题没跑,控制器/路由的错误基本都是 ActionController
抛出的。
你换数据库可以考虑删掉 db/schema.rb
然后 rails db:create && rails db:migrate
重建 schema.rb
有了工作流,很多不好做的事儿都好做了
之前我自己有一套。。。换电脑之后忘了备份了,这次基本上要么在这俩帖子里,要不就在代码里。。。其他都语音就没记了
我是真的考虑要不要恰饭卖个 Pro 什么样的变态需求会有人愿意付费呢?
没错,所以你的项目达到一定程度后,就要考虑部署环境和开发环境尽可能接近了。
就算是同一款数据库,版本不同也有可能行为不一致的
日志里写清楚了
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 对应的函数改写
促进一下生态, @dsh0416 制作了用于构造 PetriNet 的 DSL https://github.com/dsh0416/petri-dsl/
后继产品:Petri Net workflow for Rails by Hooopo
当然 Hooopo 的代码太暴力了,我也要写个版本,跟他比一比
炮哥出品,必属精品,这就是我前年的工作流的全新版本啦
苹果 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
说来 rvm 可以说是 shell 工程的集大成者了。。。印象里好像是上万行的 sh 了这可是非常恐怖的。。。
如果重新升级桩文件还有问题,用 bundle exec
来执行命令目前测试是不会出现问题的
我升级我自己维护的 gem 的时候发现一些别的问题, bundle exec
可以解决
Rails 还没有发正式的适配 2.7 版本,虽然不会有什么问题,但是会多一些 warning 看着烦,问题比较大的地方在 bundler 2.1.2,如果遇到问题可以试试重新生成一下 bundle 的桩文件 bundle binstubs bundler
试试能不能打印 pwd 就是当前目录 或者更土的办法,用 Windows 的搜索 去搜你存的那个文件名
两种方法: