ruby-on-rails - 代码更改后,Rails 开发服务器需要很长时间才能重新加载

标签 ruby-on-rails

我发誓,这在过去不是问题,我无法确定何时发生了变化。在我的本地开发环境中,如果我对我的模型/ Controller 进行任何更改,我的服务器至少需要 20-30 秒来重新加载和响应请求。这是 Rails 5.2.3 和 Thin 1.7.2。我不记得以前这么慢。仅供引用,我已经有了 config.cache_classes = false,这显然是罪魁祸首。

这里有什么想法吗?

最佳答案

我已经为这个问题苦苦挣扎了一段时间,我似乎找到了两个值得尝试的解决方案。我运行 Rails 7.0.4 和 Puma 6.0。

在使用 rack-mini-profiler 调试后,我注意到 Thread::Mutex#synchronize 非常慢。 ~30 秒。所以我认为减少 Puma 线程的数量可能会有所帮助。它有所改善,但并没有完全解决我的问题。

为了单线程运行 Puma,我将以下内容放入我的 Procfile 中:

RAILS_MIN_THREADS=0 RAILS_MAX_THREADS=1 bin/rails s -p 3000

我遇到的问题似乎与 Puma 6.0.0 中的这个错误更直接相关,如下所述:https://github.com/ElMassimo/vite_ruby/issues/299https://github.com/jumpstart-pro/jumpstart-pro-rails/issues/475

降级到 5.6.5 完全解决了这个问题,我能够返回到多线程 Puma。

关于ruby-on-rails - 代码更改后,Rails 开发服务器需要很长时间才能重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59937524/

相关文章:

ruby-on-rails - activescaffold Controller 缺少 activescaffold 解决方法

ruby-on-rails - Ruby on Rails 的所有 "conventions"是什么?

ruby-on-rails - Rails 连接模型困惑(连接许多表)

ruby-on-rails - Ruby on Rails : Default will_paginate to last page of results

ruby-on-rails - 在测试环境中手动测试 Rails 应用程序

ruby-on-rails - 在 Rails 中使用 sanitize 和 truncate 在元素之间添加空间

ruby-on-rails - 为触发邮件程序的观察者编写规范

ruby-on-rails - Ruby on Rails sqlite3-ruby gem 干扰 heroku push

ruby-on-rails - 找不到 'devise_install' 生成器 - Rails 2.3.8,Devise 1.0.8

ruby-on-rails - Elasticsearch-rails完成建议器, map 数据,创建索引,建议方法