Spring Gem加载环境异常:为何在错误/全部环境中加载?
关于Spring在测试环境意外加载的排查记录
我碰到了一个诡异的情况:我的Gemfile里没有在测试环境或全局范围内声明Spring Gem,但执行bundle exec rails console test启动测试环境控制台时,Spring进程居然自动启动了,而且Listen模块也被加载了进来。
为了搞清楚原因,我一步步做了验证:
- 首先,我手动停止了所有Spring进程(确保没有后台残留进程影响测试),但再次执行测试环境控制台命令时,Spring还是会被触发启动。
- 接着我做了个sanity check:直接把Gemfile里整个
development依赖组移除,然后运行bundle重新梳理依赖。这时候再启动测试环境控制台,Spring和Listen就完全不会被加载了,和预期一致。
这个结果说明,Spring虽然只在development组里声明,但可能通过某种依赖传递或者Rails的默认配置逻辑,被带到了测试环境中;移除development组后,这条依赖链被切断,就不会再出现意外加载的情况了。
内容的提问来源于stack exchange,提问作者konyak
相关产品推荐
相关产品推荐

