Rails 7修改代码后需重启服务器才能生效,如何解决?
Rails 7开发环境修改内容需重启服务器的解决方案
1. 确认开发缓存已关闭
运行以下命令切换缓存状态,确保开发环境缓存处于关闭状态:
rails dev:cache
执行后会提示"Development mode is now being cached"或"Development mode is no longer being cached",确保是不再缓存的状态。同时可手动检查tmp/caching-dev.txt文件,若存在则直接删除。
2. 检查Puma配置
打开config/puma.rb,确认开发环境下未启用preload_app!:
# config/puma.rb if ENV['RAILS_ENV'] == 'development' # 确保此行被注释或设置为false # preload_app! end
preload_app!会在启动时预加载所有代码,导致后续修改无法自动重载。
3. 修复WSL环境下的文件监听问题
从服务器路径/mnt/c判断你正在使用WSL环境,默认的ActiveSupport::FileUpdateChecker在WSL中可能无法正确监听Windows文件系统的变化,可改用Listen gem:
- 在
Gemfile的development组添加依赖:group :development do gem 'listen' end - 执行
bundle install安装依赖 - 修改
config/environments/development.rb中的文件监视器配置:config.file_watcher = Listen.to(Rails.root, wait_for_delay: 1, latency: 0.25) do |modified, added, removed| Rails.application.reload_routes! Rails.application.reload! end
4. 清除临时文件
运行命令清除Rails临时目录的缓存文件:
rails tmp:clear
5. 验证自动重载基础配置
确认config/environments/development.rb中的以下配置无误:
config.cache_classes = false config.eager_load = false config.action_controller.perform_caching = false config.cache_store = :null_store
这些是开发环境自动重载的核心配置,确保未被错误修改。
内容的提问来源于stack exchange,提问作者Monroe Mann
相关产品推荐
相关产品推荐

