部署Ruby on Rails到Render平台遇LoadError:无法加载database_cleaner/active_record
解决Render部署Rails生产环境database_cleaner加载错误
问题根源:
database_cleaner这类gem一般只在开发/测试环境用来清理数据库,你的Gemfile大概率把它放在了development或test分组里,导致生产环境没安装这个gem,但代码里又在生产环境触发了它的加载,所以报错。具体修复步骤:
- 打开项目根目录的
Gemfile,找到database_cleaner-active_record相关配置:# 常见错误写法:只在开发/测试组引入 group :development, :test do gem 'database_cleaner-active_record' end - 分两种情况处理:
- 生产环境不需要database_cleaner(绝大多数场景):找到项目中调用
database_cleaner的代码(比如初始化文件、测试辅助代码等),用环境判断包裹:
确保生产环境不会执行到这些代码。if Rails.env.development? || Rails.env.test? require 'database_cleaner/active_record' # 其他database_cleaner配置代码 end - 生产环境确实需要该gem(极少场景):把gem从分组里移出,或者添加到
production组:# 直接全局引入,或添加到:production组 gem 'database_cleaner-active_record' # 或者 group :development, :test, :production do gem 'database_cleaner-active_record' end
- 生产环境不需要database_cleaner(绝大多数场景):找到项目中调用
- 修复后运行
bundle install更新Gemfile.lock,提交这两个文件到版本库,重新触发Render的部署。
- 打开项目根目录的
额外排查点:检查
config/application.rb、config/initializers下的文件,有没有不区分环境直接require 'database_cleaner/active_record'的代码,有的话加上环境判断即可。
内容的提问来源于stack exchange,提问作者Anastasia
相关产品推荐
相关产品推荐

