同时写么? Google Docs 吧 石墨 一起写也行
tower
选来选去其实都没差,最后你会发现坚持用起来才是关键
想看图 首先你得带个梯 子
我怎么觉得是 java
为什么叫『丢失的』
不是一类问题,没什么参考价值 这个九成(或者十成,哈哈哈哈)可能是代码写得有问题
worker_timeout 改了没?看截图 这个线程已经运行了 14min?因催思婷
日志不多的话,grep 一下 20 分钟内 production.log 里每个请求的「开始行」和「结束行」,你会发现有一个请求没有打印「结束行」,因为处理他的线程彻底僵死了,连 puma 都干不掉它
或者临时把线上日志设置到 debug 层级,应该也可以发现点什么
或者查下上游 nginx 的日志,应该有返回状态为 499 的请求
最后,这种情况有个简单粗暴的处理方式,可治标不治本 —— 上 monit
还有一个挺有意思的 gem
https://github.com/nickelser/zhong 中文名大概叫『钟』吧,它依赖了一个 gem 叫 suo 『锁』
他的特点是用了 redis 做执行记录和分布式情况下避免多节点执行,非常有特色的命名方式
要知道,这个作者是个地道的老外
20s 这种频率的话,我觉得就不一定要用 whenever 了,频率太高用它反而是一种消耗(每次都要初始化环境)
建议直接用 jmettraux/rufus-scheduler,注意不要在 console 里面加载这个就好了
可以的
改成 5 试试,cpu 再 100% 的时候应该能看到 puma 的 worker 被杀死然后重启
那就基本可以确定是你们的某个请求会导致一个长时间运行的任务,grep 一下 production.log 看看有没有执行时间特别长的请求,或者只看到进来没看到相应的请求
production log 是 rails 输出的日志,可以看看能不能看出问题,是不是请求夯住了
另外 puma 还有一个单独的日志,记录 puma worker 的启/杀记录的,在 config/puma.rb 里面通过 stdout_redirect 设置的,也看下吧
你这个明显不正常,puma 的 worker_timeout 你设置的是啥?
业务本身有没有需要大量运算或耗时很长的操作
讲道理 让 Layer 配合 Turbolinks 工作应该不难,看下 Turbolinks 的文档应该是可以解决的,LZ 可以试着再折腾下 然后再写篇文章发到社区,可能社区就又多一篇精华了 哈哈哈~
贴一下 TopicsController 的代码呢,这个问题通常是由省略了 namespace 导致的
rails + vue
条件允许的话,换用线程会很简单
由于 GC 的存在,通常情况下内存没有想象中那么稀缺,相比起来数据库查询更容易成为瓶颈
模型间的关联关系到底是怎么样的,可以表述清楚一点么
@sharpx 我认识一个以前用 Ruby 的,现在已经叛逃到 js 了,你可以找他搅基 @vincenting
他是想去成都的 哈哈哈~~
最好不要用 default_scope,尽量不要用 default_scope,绝壁不要用 default_scope
除非你的这个模型承载的数据在业务中的职能足够单纯,并且不会被扩展或「花式调用」
无论你写什么,保证视野的开阔性才是最重要的
今年 RubyConf 上,亚飞把前端的 mbox 引入了 Ruby 里面,也许明年后年,你也可能把其他语言里的某个高级特性引入 Ruby
所以,保持你对 Ruby 的热爱,继续加油就好了
controller 本身和数据可以看做是没有关系的,它的职能可以描述为:当一个请求到来时,需要做什么
数据的读删查写都是通过操作 model 来实现的,它的职能是:当决定做什么了之后,要怎么做(基础的操作已经在 Rails 内核里面实现了,你的 Model 看上去可能会是空的)
所以 users_controller 里想操作 user 对象肯定是需要 User 的实例的
# users_controller.rb
def update
user = User.find_by(id: params[:id])
user.update name: params[:name], age: param[:age]
end
举个栗子,真实环境下,还是不要这么写
哟 简单查了下,原来 Pow 不是通过配置 /etc/hosts 的方式,而是自己启了一个 DNS server,这样就讲得通了
但是 localhost 没理由慢啊?
搜索域加上 dev 还可以理解,加上 localhost 又是什么鬼,不是这样用的吧
本地域名一般是写在 /etc/hosts 里面的吧,讲道理这些域名会在 DNS 解析之前就匹配到 ip 了,并不会真的去 DNS 服务器上做查询的
所以其实我不是很明白这么做的原因,以及实际效用 ~
以前没有接触过 MVC 么?
命令行中
$ rails g scaffold User name:string age:integer
$ rails db:migrate
然后你在生成的 users_controller 中
chrisyu = User.new
chrisyu.name = 'chrisyu'
chrisyu.age = 3
chrisyu.save
# 或者写简单点
User.create name: 'chrisyu', age: 3
在学习 Rails 的早期阶段,数据库管理 = migration,数据库操作 = ActiveModel , 所以暂时忘掉你的数据库吧