You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行rails db:create报错:Socket重复定义警告及Rack::Cors未初始化常量

解决方案

1. 修复 NameError: uninitialized constant Rack::Cors 错误

这是因为项目依赖的rack-cors gem未正确安装或配置:

  • 打开项目根目录的Gemfile,确认是否包含以下代码:
    gem 'rack-cors'
    
    没有的话添加这一行,然后执行安装命令:
    bundle install
    
  • 检查config/initializers/cors.rb文件是否存在,若不存在则新建该文件,填入基础配置(可根据实际需求调整):
    Rails.application.config.middleware.insert_before 0, Rack::Cors do
      allow do
        origins '*' # 生产环境建议替换为具体允许的域名
        resource '*',
          headers: :any,
          methods: [:get, :post, :put, :patch, :delete, :options, :head]
      end
    end
    
  • 保存文件后重新执行rails db:create

2. 处理 warning: previous definition of Socket was here 警告

这个警告通常由版本不兼容或gem冲突导致:

  • 核对Ruby与Rails版本的兼容性:比如Rails 7.x建议搭配Ruby 2.7及以上版本,Rails 6.x建议搭配Ruby 2.5及以上版本,版本不匹配时调整Ruby版本即可
  • 执行bundle list查看已安装的gem,排查是否有重定义Socket类的冲突gem,移除冲突项后重新运行bundle install
  • 若警告不影响功能可暂时忽略,但建议优先解决版本兼容问题,避免后续出现其他故障

内容的提问来源于stack exchange,提问作者hey_aash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 16:55:26