bundle stdout: rbenv: /home/chuck/.rvm/bin/rvm: command not found
用的是 rbenv 还是 rvm?去掉不必要那个。
日志贴全,隐去敏感信息。
如果是手工发 ajax 请求,要自己处理浏览器返回的内容。所以还是:上代码。
日志显示没有 route 到 destroy action。
日志显示就是没找到路由,你以为的问题可能和实际问题不一样,把代码和意图贴上来。
这个问题我之前也没留意,搜了一下,以前有讨论帖
https://ruby-china.org/topics/15581
还有 StackOverflow 的回答
https://stackoverflow.com/questions/3430280/how-does-object-id-assignment-work https://stackoverflow.com/questions/2818602/in-ruby-why-does-inspect-print-out-some-kind-of-object-id-which-is-different/2818916#2818916
大概意思是 Ruby 计算不同的对象的 obejct_id 时候用了不同的规则,让一些不需要分配内存的值对象 id 和其它 obejct 不冲突,除了 true/false/nil 等固定值外,比较特殊的有 fixnum 和 obejct 的计算规则。
fixnum object_id = 值 * 2 + 1
object object_id = 指针地址 / 2
因为在某些计算机上,指针地址的末位都是 0,所以就把末位为 1 的空间除了几个固定值以外的空间都分配给 fixnum。(写到这里我觉得 object 的 object_id 不除以 2 也可以啊,也许是为了显得紧凑?期待其它人回答)
反过来说,一般对象的 object_id 乘以 2 就是指针地址:
> user.to_s
=> "#<User:0x00000008b8bca0>"
> user.object_id
=> 73162320
> (user.object_id * 2).to_s 16 # 16 进制显示
=> "8b8bca0"
> (user.object_id << 1).to_s 16 # 二进制里面,乘以 2 其实就是左移 1 位。
=> "8b8bca0"
> 0x00000008b8bca0.to_s 2 # 2 进制显示
=> "1000101110001011110010100000"
> user.object_id.to_s 2 # 二进制显示,比上面末尾少一个 0,
=> "100010111000101111001010000"
> (user.object_id << 1).to_s 2 # 二进制比较容易看出为什么末尾为 1 就能区分 fixnum 和 object。
=> "1000101110001011110010100000"
😂我看了这篇博客去官网仓库找,还以为就是 dep,原来还有别的吗?我已经凌乱了。
昨晚开始被 DDOS。
从侧栏删掉链接了。
工具那里我指的是语言。
GitLab 对于他们的文档要怎么写,他们是有决定权的。但是例如“Rails 要怎么部署”,这属于个人观点,没有人有决定权的(除了自己)。
Cargo 的核心团队里有 Yehuda Katz(前 Ruby on Rails 核心团队成员),吸收了 Ruby 社区依赖管理的成功经验,所以依赖管理是同类语言里最好的。反面例子就是 Go 了,最近才由官方推出 Dep 终结混乱。
能高效的解决问题的工具就是好工具,不用太在意用的人多不多,有时用的人少反而是自己的秘密武器。
太粗暴了,我犹豫要不要屏蔽。
时间太久了我都忘了是怎么坑掉的,好像是因为编辑意见不统一后来我不干了,我不懂管理 wiki。现在觉得 wiki 适合定义“什么是什么”这类内容,而“怎么完成某件事”,各人有各人的看法,适合各写各的,根据点赞和时间排序。
理想是做成这样 https://www.digitalocean.com/community/tutorials
话说回来,现在没时间做……
后台任务通过某种消息机制(例如 Redis pubsub)通知管理 websockets 的进程,再由管理 websockets 的进程通知用户。
Rails 里的 ActionCable 实现了这个机制 https://guides.rubyonrails.org/action_cable_overview.html
服务器上 curl 一下本地端口能不能访问?云服务有没有安全组设置?
那个是 hash 而不是时间戳,前端可以把文件名和打包后的静态文件路径写到一个 json 文件里,然后在 Rails 加个 helper 方法读取 json 内的路径,就可以做到类似 stylesheet_link_tag
的效果。
https://github.com/rails/webpacker 已经做了这件事情,并且 Rails 6.0 会成为默认,如果你们前端团队本来就是用 Webpack 而且不介意源码放在同一个项目里,那么可以试试 Webpacker。
stylesheet_link_tag
的作用就是找 asset pipeline 处理过后的资源,如果不走 pipeline 直接用 <style>
标签即可。
确实有网站是用 Turbolinks 实现不间断播放器的
Why We Chose Turbolinks https://changelog.com/posts/why-we-chose-turbolinks
我更正一下,6 楼意思是依赖 turbolinks:load 绑定事件不是好实践。边栏可能大部分情况需要每次载入都执行,但到了没有边栏的页面就是无谓的消耗了。如果习惯这种写法的话,个别页面的事件也这样绑,那么挂在 turbolinks:load 上面的逻辑就会越来越多,并且很多是不必要执行的。
$(document).ready(function() {
jQuery(function ($) {
这里两层 document load 有问题,导致外层改了时间里面还是在等 DOMContentLoaded
。
外层改成 $(document).on('turbolinks:load', function() {
再把里层 jQuery(function ($) {
去掉。
另外全局绑定事件不是好实践,有时间的建议看 Stimulus,和 Turbolinks 绝配。
完事了就可以把组件去掉了
看 DHH 什么时候改口去掉 Assets Pipeline 了,装了 Webpacker 之后看到两个 asset 类目录感觉很分裂。
看了源码和调试 demo,发现两个有趣的地方:
这是全栈框架才能提供的功能,有助于新建项目时快速实现富文本编辑。