Ruby/Rails 的生产力高过 Java、Py 等语言我觉得在 RubyChina 应该是有共识的。
就我提的那个案例的话,从 0 搭一整套 OA(核心功能多租多项目、审批流程、组织结构、动态表单、带全部界面),我一个人实施(其实还是有俩朋友分担了一些工作),工期三个月、期间我还有两个别的合同在同时进行、组织 RubyConf、顺带结了个婚、保证八个小时睡眠和两个小时 山口山 和 SC2 的游戏时间。
做 Web 或者业务系统都不是什么高精尖的事情,搬砖做体力活要时薪足够高,就只能在效率上找方法(当然把事情做对也很重要),到我描述的这个水平的效率至少我相信只有 Ruby 能带来。我也学习了一些语言,但目的是储备起来配合 Ruby 解决他不擅长的问题,而不是取代它。
另外的例子,我之前分享过表单引擎 FormCore,能力跟金数据那种商业产品持平,原型版本一个通宵开发完,后来我和 hooopo 做了个带后端存储的商业版本(百万数据表单的过滤聚合查询演示),大概的过程就是吃了个饭聊了方案,然后我花了三个晚上写出来的。 界面虽然丑陋,但是很多公司就靠这种产品就能经营下去了。
(不会写前端就是不能发财的原罪啊!)
如果你不相信 Ruby/Rails 的生产力,这些项目代码都是公开的,可以比比看?
当然有条件的话 虚拟机镜像 或者 Docker 分发还是最靠谱的选择
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