建议用 asdf,都 4202 年了,还有人在用 rvm 和 rbenv 吗🐶
人生苦短,改用 asdf
空哈希就是空对象,{}
https://blog.rubygems.org/2023/02/22/dependency-api-deprecation.html 貌似是这个问题导致的。ruby-china 源调用了错误的 API
这些 APP 用到了 h5 技术,APP 每个页面都相当于一个在线的网页或者提前加载到本地借助 APP 本地服务器伺服的网页。网页天生就是热更新的,跟你用 PC 访问是一样的。
APP 启动时,本地会运行一个服务器,用做 H5 的服务器。切换页面,或后台启动时会去云端检测服务器是否发布了新的 H5 版本,有新的版本,会静默加载新的 H5 资源包到本地。相当于 APP 就是个套了壳的 Nginx 服务器. 有的对体验没要求的,本地直接不存储 H5 资源包,直接就是个浏览器。
一切可以用 JavaScript 开发的都会用 JavaScript 开发,Android 开发和 iOS 开发先趟为敬.
世界是熵增的,restful 过于有序,不能完全满足真实世界,可以考虑函数式路由,这样就可以满足你们前端的需求了。
上述设计有慢查询问题
在 settings 表加个用户激活账号截止时间 activate_end_at, 然后加个索引,查询时User.join(:setting).where('settings.activate_end_at > ?', Time.now)
插入 setting 时设置 activate_end_at = user.attend_at + activate_duration.minute
若业务已上线,可以先加字段批量设值再上业务代码
可以这样写,就是 rubocop 的风格走偏了 (https://rubystyle.guide/#namespace-definition),没有因地制宜. 实际业务编程中,我们根本就不会去定义 Web、Controllers、Home 范围内的常量。
class Web::Controllers::Home::Index
include Web::Action
def call(params)
print "开始写代码"
if params
else
end
end
end
同理 Rails 的控制层嵌套也应写成这样,没有任何损失. 因为根本就不会去定义 Api, V1 级别的控制器常量,所以没有任何影响. 目前我就要求自己项目的人这样写,层级越少,越不容易达到每行 80 个字符的限制。
class Api::V1::UsersController < Api::V1::BaseController
......
end
同样都是做类型声明,Python 的方案是在原文件里操作,做类型注解,Ruby 却是新开一个文件。rbs 出来这么久大家都不感兴趣不使用,自然是 rbs 设计本身出了问题。 在过去 20 年,日本一直在点错科技树,rbs 不外乎也是日本人又一个"杰作"罢了。
可以 grep 一下看下是哪个文件存在问题:
bundle show rails
grep -rn "ruby\.exe" /Users/rocky/.rvm/gems/ruby-2.5.5/gems # 路径替换为上面bundle查看的路径
grep -rn "ruby\.exe" .
API 开发
ruby, go, python 都在用
go 语言。我们公司某个新项目用 go 语言开发,相关人员花半个月就上手了,开发效率是可以的。代码提示,fmt 都是开发利器
amber 这个框架维护太慢了,Crystal 三月份发布 1.0.0,2000 多星星的框架到现在还没支持 1.0.0。kemal 也是不勤励维护的状态。lucky 到现在 issue 还一大把。整一个 Crystal 都被 Ruby 的概念绑架了,难以突破和超越。看不到未来。
不怎样,已弃坑
开发效率 Go 只是比 Ruby 慢一点,还要考虑后续的维护成本。楼主先学的 Go 后学的 Ruby, 产生的认知错觉,技术达到一定高度 Go 的开发效率并不慢。另外,Ruby on Rails 一时爽,换人维护真心就是火葬场。空指针异常、风格不统一、解决问题的选择过多、国内生态差 (很多 SDK 都没 Ruby 版本)、非静态编译导致重构困难、微服务生态下毫无作为,这些都是你要面对的。
建议大家不要模仿。普通业务中是真的用不到元编程。楼主这样改,真就从一坨还可以维护的代码往米田共方向奔跑。
https://github.com/rails/rails/issues/41750
不得不说,楼主这个 issue 链接里面的评论质量是真的高。
观点一:如果可以由 rubygems 出面解决问题,大家用 docker 的就不用更新版本号了。
观点二:百万美元错误。
(管理员) 观点三:以上观点毫无价值,封评处理。
管理员停止评论的行为是真的不厚道。
另外 rubygems 应该限制已经发布了的版本不能作者删除。明明东西都是从 rubygems 下载的,作者说删就删。
这就不得不吐槽下 rails 了,微服务项目中完全没有用到 activestorage, 硬是有这个依赖,这个依赖还依赖别人 gem. 貌似 activestorage 是 5.1 还是 5.2 之后才有的
昨天刚升级到 0.3.6, 今天又要升级,对这个作者芜话可说了
给我个感觉 Ruby 社区好多团队还没用上 docker 部署。不知道是人气不行,还是生产工具普遍落后。
建议管理员临时置顶该帖 @huacnlee
不清楚哦,fiber 还没用到过
是 mimemagic 作者移除了旧版本,他现在只保留了 0.3.6 和 0.4.0,所有用 0.3.0 版本的可能都要更新下
为什么测试里面不应该用 Sidekiq?
测试也应判断异步任务是否被调用了。
sidekiq 的 wiki 里有一页就是专门说如何做测试的。直接根据 wiki 操作就好了,也不用真正意义上执行任务,只是判断任务是否入队列即可。 https://github.com/mperham/sidekiq/wiki/Testing
没有更简洁的写法,不是代码越短就越好的,要简单易懂。 &就是个语法糖,如果语法不适用这个语法糖就别强求
vscode 的插件 Tabnine, 人工智能的提示