Rails Server未加载当前Git分支文件问题求助
问题描述
搭建Rails项目后,在branch1分支开发时rails s运行正常。切换至文件内容不同的branch2分支(已执行git fetch origin branch2、bundle install、rake db:setup等操作),启动rails s后发现服务器仍加载branch1的文件,而非当前检出的branch2文件。已尝试重新checkout分支、spring stop清除缓存、重新克隆仓库等操作,问题未解决。两个分支共用同一数据库。
解决方案
确认当前分支状态
先执行命令查看当前是否确实处于branch2分支,同时检查是否有未提交文件或冲突导致分支切换不彻底:git branch git status若存在未提交文件,先执行
git stash暂存,再重新切换分支。彻底清除Rails临时文件与缓存
Rails的tmp目录和Spring缓存可能残留旧分支内容,执行以下命令清理:spring stop rm -rf tmp/ rails assets:clobber # Rails 5+适用;老版本替换为 rake assets:clobber清理完成后重启服务器:
rails s强制重新安装依赖
切换分支后依赖可能存在变更,强制重新安装bundle依赖以避免缓存影响:bundle install --force检查并终止残留的Rails进程
之前的Rails服务器进程可能在后台未完全终止,导致加载旧内容:ps aux | grep rails kill -9 [进程ID] # 将[进程ID]替换为查询到的对应进程ID之后重新启动
rails s检查开发环境asset配置
若分支间有静态资源差异,预编译的asset文件可能被优先加载。确保开发环境配置关闭asset预编译缓存:
修改config/environments/development.rb:config.assets.compile = true config.assets.digest = false保存后重启服务器。
确认数据库迁移状态
虽然两个分支共用数据库,但如果branch2有未执行的新migrations,可能导致显示内容异常:rake db:migrate
内容的提问来源于stack exchange,提问作者spaceman

