Ruby on Rails网站在本地工作,路由正确,但在heroku上获得404

时间:2017-04-17 23:48:48

标签: ruby-on-rails ruby heroku routes

这是我遇到的一个非常奇怪的错误。我在铁轨上使用红宝石。一切都在本地运行良好(在云9上),我成功地将其推送到Heroku。我运行db:migrate没有错误。尽管如此,我收到错误"您正在寻找的页面并不存在"并且日志显示404.我已检查文件并且已正确上传。 我的路线:

  root 'application#index'
  get '/index/:type' => 'application#index'
  get '/index/' => 'application#index'
  get '/benchmark/' => 'application#benchmark'
  get '/benchmark/:type' => 'application#benchmark'
  get '/benchmarkupdate/:name' => 'application#benchmark'
  get '/indexupdate/:name' => 'application#index'

我的文件位置正确。我没有看到任何路由问题,它在本地工作。

Heroku Logs:

2017-04-18T03:13:14.455398+00:00 app[web.1]: * Version 3.8.2 (ruby 2.3.4-p301), codename: Sassy Salamander
2017-04-18T03:13:14.455399+00:00 app[web.1]: * Min threads: 5, max threads: 5
2017-04-18T03:13:14.455399+00:00 app[web.1]: * Environment: production
2017-04-18T03:13:15.493228+00:00 app[web.1]: DEPRECATION WARNING: `config.serve_static_files` is deprecated and will be removed in Rails 5.1.
2017-04-18T03:13:15.493241+00:00 app[web.1]: Please use `config.public_file_server.enabled = true` instead.
2017-04-18T03:13:15.493243+00:00 app[web.1]:  (called from block in <top (required)> at /app/config/environments/production.rb:25)
2017-04-18T03:13:16.337785+00:00 app[web.1]: * Listening on tcp://0.0.0.0:49146
2017-04-18T03:13:16.337997+00:00 app[web.1]: Use Ctrl-C to stop
2017-04-18T03:13:16.847301+00:00 heroku[web.1]: State changed from starting to up
2017-04-18T03:13:18.094441+00:00 heroku[router]: at=info method=GET path="/" host=protected-coast-54392.herokuapp.com request_id=3d8c7a3f-3f40-4747-862f-7e70e7c9029e fwd="152.3.34.25" dyno=web.1 connect=1ms service=75ms status=404 bytes=1744 protocol=https

还有什么可能导致这个问题吗?

2 个答案:

答案 0 :(得分:1)

问题是你没有设置根路由,这意味着有人在没有任何路径前往www.example.com后会进入根路由。在您的路线文件中添加类似

的内容
root 'application#index'

或任何控制器和操作以及您希望他们第一次访问您网站时访问的相应视图。

答案 1 :(得分:0)

嗯,首先,你不应该在生产上运行WEBrick。如果这导致了您的错误,我不肯定,但我会从那里开始。

Heroku目前推荐puma

您可以将puma包含在Gemfile gem 'puma'中,然后运行捆绑安装。

在项目目录中,您需要添加一个Procfile,告诉您的应用如何运行其网络服务器。

  

确保Procfile正确大写并检入git。

看起来应该是这样的:

# <Rails.root>/Procfile
web: bundle exec puma -t 5:5 -p ${PORT:-3000} -e ${RACK_ENV:-development}

这是一篇关于WEBrickhow to set up puma的文章。

你需要重新推送到heroku。看看是否有帮助。欢呼声。