Rails系统测试无法加载开发环境正常运行的lib目录文件该如何修复?
这个错误的根因为测试环境下Ruby的require查找路径未包含项目根目录下的/lib文件夹:Rails 6默认不会自动将/lib目录加入全局加载路径,开发环境和控制台因加载逻辑差异可以正常找到文件,不代表测试环境也能正常加载。
解决方案
方案1:全局配置加载路径(推荐)
打开项目下的config/application.rb,在Rails应用配置块内加入如下配置:
class Application < Rails::Application # 原有配置保留,新增以下两行 config.autoload_paths << Rails.root.join('lib') config.eager_load_paths << Rails.root.join('lib') end
修改完成后执行spring stop停止缓存的Spring服务,再重新运行测试即可。
方案2:直接指定绝对路径引入(无需修改全局配置)
将app/models/order.rb首行的require "pago"替换为:
require Rails.root.join("lib", "pago").to_s
直接用项目绝对路径定位文件,跳过加载路径查找逻辑,修改后直接运行测试即可生效。
内容的提问来源于stack exchange,提问作者jbk
相关产品推荐
相关产品推荐

