从GitHub部署Ruby on Rails应用到Vercel时遭遇404错误
Vercel部署Rails应用404问题排查 + Heroku替代部署方案
一、Vercel部署404问题解决思路
从你贴的routes.rb来看,根路由指向items#index,但Vercel运行Rails应用需要注意几个核心点:
- 先确认
ItemsController#index动作存在,对应的视图文件app/views/items/index.html.erb(或对应模板引擎文件)没有缺失 - 必须在项目根目录配置
vercel.json处理Rails路由重写,否则Vercel的静态文件服务会优先匹配,导致动态路由返回404。示例配置如下:{ "installCommand": "bundle install", "buildCommand": "rails assets:precompile", "devCommand": "rails s", "routes": [ { "src": "/(.*)", "dest": "/$1" } ] } - 查看Vercel部署日志:在部署页面的Logs标签下,检查是否存在构建失败、依赖缺失、数据库迁移未执行(如果应用依赖数据库)这类报错信息
二、Heroku免费版替代部署选项
给你几个上手简便的部署平台:
- Render:和Heroku使用体验最接近,免费版有基础资源限制,支持一键关联GitHub仓库部署,自带PostgreSQL数据库选项
- Fly.io:适合需要全球访问加速的应用,免费版提供基础额度,通过命令行即可完成部署,Rails官方有专门的适配指南
- Railway:可视化操作界面友好,免费版有额度限制,支持Rails和多种数据库,关联仓库后自动完成构建部署
- AWS Elastic Beanstalk:亚马逊旗下的PaaS平台,有免费试用额度,适合熟悉AWS生态的用户,可一键部署Rails应用
你的路由配置参考:
Rails.application.routes.draw do root to: 'items#index' get "pages", to: "pages#home" get "trigger_service", to: "pages#trigger_service" resources :items, only: [:update] post "/items/update-all", to: "items#update_all" end
内容的提问来源于stack exchange,提问作者user20847337
相关产品推荐
相关产品推荐

