Heroku问题:您要查找的页面不存在

时间:2011-09-11 07:46:19

标签: ruby-on-rails

我已按照本书直到第5章完成,并且它在我的linux工作站中正常工作 当我推送到Heroku时,所有数据都正确推送但是当我尝试打开Heroku时(http://vivid-sky-685.heroku.com)

我收到了404消息。

  

您要查找的页面不存在。   您可能输错了地址或页面可能已移动。

以下是我的Gemfile申请

source 'http://rubygems.org'
gem 'rails', '3.0.5'
gem 'sqlite3'

group :development do
  gem 'rspec-rails', '2.5.0'
end

group :test do
  gem 'rspec', '2.5.0'
  gem 'webrat', '0.7.1'
  gem 'spork', '0.9.0.rc4'
end

gem 'rake','~> 0.8.7'

任何可能出错的想法?​​

@odin这是我的heroku日志,谢谢

2011-09-11T10:41:57+00:00 heroku[router]: GET vivid-sky-685.heroku.com/y dyno=web.1 queue=0 wait=0ms service=5ms status=404 bytes=728
2011-09-11T10:41:57+00:00 app[web.1]: 
2011-09-11T10:41:57+00:00 app[web.1]: 
2011-09-11T10:41:57+00:00 app[web.1]: Started GET "/y" for 93.186.31.80 at 2011-09-11 03:41:57 -0700
2011-09-11T10:41:57+00:00 app[web.1]: 
2011-09-11T10:41:57+00:00 app[web.1]: ActionController::RoutingError (No route matches "/y"):
2011-09-11T10:41:57+00:00 app[web.1]:   
2011-09-11T10:41:57+00:00 app[web.1]: 
2011-09-11T10:41:57+00:00 app[web.1]: 
2011-09-11T10:41:57+00:00 heroku[nginx]: 93.186.31.80 - - [11/Sep/2011:03:41:57 -0700] "GET /y HTTP/1.1" 404 728 "-" "Mozilla/5.0 (BlackBerry; U; BlackBerry 9300; en) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.546 Mobile Safari/534.8+" vivid-sky-685.heroku.com
2011-09-11T11:45:28+00:00 heroku[web.1]: Idl

2011-09-11T11:45:29+00:00 heroku[web.1]: State changed from up to down
2011-09-11T11:45:29+00:00 heroku[web.1]: State changed from down to created
2011-09-11T11:45:29+00:00 heroku[web.1]: State changed from created to starting
2011-09-11T11:45:30+00:00 heroku[web.1]: Stopping process with SIGTERM
2011-09-11T11:45:30+00:00 app[web.1]: >> Stopping ...
2011-09-11T11:45:30+00:00 heroku[web.1]: Process exited
2011-09-11T11:45:30+00:00 heroku[web.1]: Starting process with command `thin -p 16738 -e production -R /home/heroku_rack/heroku.ru start`
2011-09-11T11:45:33+00:00 app[web.1]: >> Thin web server (v1.2.6 codename Crazy Delicious)
2011-09-11T11:45:33+00:00 app[web.1]: >> Maximum connections set to 1024
2011-09-11T11:45:33+00:00 app[web.1]: >> Listening on 0.0.0.0:16738, CTRL+C to stop
2011-09-11T11:45:33+00:00 heroku[web.1]: State changed from starting to up
2011-09-11T12:53:00+00:00 heroku[web.1]: Idling
2011-09-11T12:53:01+00:00 heroku[web.1]: State changed from up to down
2011-09-11T12:53:02+00:00 heroku[web.1]: Stopping process with SIGTERM
2011-09-11T12:53:02+00:00 app[web.1]: >> Stopping ...
2011-09-11T12:53:02+00:00 heroku[web.1]: Process exited
2011-09-11T13:18:21+00:00 heroku[rake.1]: State changed from created to starting
2011-09-11T13:18:23+00:00 app[rake.1]: Awaiting client
2011-09-11T13:18:23+00:00 app[rake.1]: Starting process with command `bundle exec rake db:migrate`


2011-09-11T13:18:26+00:00 heroku[rake.1]: Process exited
2011-09-11T13:18:26+00:00 heroku[rake.1]: State changed from up to complete
2011-09-11T13:20:02+00:00 heroku[web.1]: Unidling
2011-09-11T13:20:02+00:00 heroku[web.1]: State changed from down to created
2011-09-11T13:20:02+00:00 heroku[web.1]: State changed from created to starting
2011-09-11T13:20:04+00:00 heroku[web.1]: Starting process with command `thin -p 48393 -e production -R /home/heroku_rack/heroku.ru start`
2011-09-11T13:20:06+00:00 app[web.1]: >> Thin web server (v1.2.6 codename Crazy Delicious)
2011-09-11T13:20:06+00:00 app[web.1]: >> Maximum connections set to 1024
2011-09-11T13:20:06+00:00 app[web.1]: >> Listening on 0.0.0.0:48393, CTRL+C to stop
2011-09-11T13:20:07+00:00 heroku[web.1]: State changed from starting to up
2011-09-11T13:20:07+00:00 app[web.1]: 
2011-09-11T13:20:07+00:00 app[web.1]: 
2011-09-11T13:20:07+00:00 app[web.1]: Started GET "/" for 118.137.144.220 at 2011-09-11 06:20:07 -0700
2011-09-11T13:20:08+00:00 app[web.1]: 
2011-09-11T13:20:08+00:00 app[web.1]: ActionController::RoutingError (uninitialized constant PagesController):
2011-09-11T13:20:08+00:00 app[web.1]:   
2011-09-11T13:20:08+00:00 app[web.1]: 
2011-09-11T13:20:08+00:00 app[web.1]: 
2011-09-11T13:20:08+00:00 heroku[router]: GET vivid-sky-685.heroku.com/ dyno=web.1 queue=0 wait=0ms service=403ms status=404 bytes=728
2011-09-11T13:20:08+00:00 heroku[nginx]: 118.137.144.220 - - [11/Sep/2011:06:20:08 -0700] "GET / HTTP/1.1" 404 728 "-" "Mozilla/5.0 (X11; Linux i686; rv:2.0) Gecko/20100101 Firefox/4.0" vivid-sky-685.heroku.com

13 个答案:

答案 0 :(得分:27)

我知道这是一个老问题,但我也碰到了它。我意识到在推送之前我没有更改config/routes.rb中的根路由。不更改它可能会在本地产生欢迎页面,但在heroku上会出现上述错误。

答案 1 :(得分:9)

我遇到了同样的问题;但是,更改生产的1行代码后,位于config/environments/production.rb

config.assets.compile = false

config.assets.compile = true

提交新的更改。然后我的示例应用程序在heroku上工作正常

答案 2 :(得分:7)

我正在使用postgresql,而且我的页面也没有显示在heroku上。

此命令修复了它:

heroku run rake db:setup

然后

heroku rake db:migrate

之前我曾迁移过,但尚未完成设置。

我也尝试过设置

config.assets.compile = true

在production.rb中,但没有区别。

答案 3 :(得分:4)

您是否尝试过在本地生产模式下运行?尝试rails server -e production并查看是否收到相同的错误,然后您可以调试。另外,请确保您已完成heroku rake db:migrate

答案 4 :(得分:2)

在我的情况下,它是一个缺少的起始页面,在开发模式下没有引起问题,但确实在heroku上引起了上述问题。接受的答案on this thread提供了更多的亮点。

答案 5 :(得分:1)

也遇到了这个问题。通过设置根路由解决它。就我而言,在config / routes.rb

root 'pages#home'

如果未设置根路由,则会重定向到localhost:3000。因此,

  

您要查找的页面不存在。您可能错误输入了   地址或页面可能已移动。

答案 6 :(得分:1)

<强> 1。始终在路径中设置根。那个导轨101

我不会一直伪造资产预编译。对于生产应用程序,我觉得如果资产已经预编译,它可以提高整体速度。

<强> 2。根据经验,我总是在推送到git之前运行rake assets:precompile。请试一试。然后提交到git仓库,然后是heroku。 heroku restart

第3。另一个原因可能是heroku rake db:migrate,请检查你是否这样做

<强> 4。这也是我的开发和生产组的Gemfile设置

group :development do 
    gem 'sqlite3'        
end

group :production do    
    gem 'pg'
    gem 'rails_12factor'
    gem 'heroku-deflater'   
end

答案 7 :(得分:0)

我和heroku有一个非常类似的问题,找到了这个问题的答案:

RefineryCMS routes for Home page doesn't work

为了节省您的阅读,解决方案是使用高级选项更新“主页”,有一个问题:

“将此页面转发到其他网站或网页”

使用/填写此内容,它应该可以使用。这听起来有点倒退,因为它实际设置/ my_page重定向到“/”。但想到它的方法是:

  

炼油厂页面扩展程序正在查找包含网址“/”的网页   主页。所以通过告诉你想要它的标题为“Home”的页面   要将网址设为'/',您将其设置为权威主页   就炼油厂页面扩展而言。   (引自@Philip Arndt)

答案 8 :(得分:0)

所以我必须按照这个顺序运行,它对我有用

$ heroku rake db:migrate
$ heroku run rake db:setup

答案 9 :(得分:0)

在app中指定Ruby版本 Rails 5需要Ruby 2.2.0或更高版本。 Heroku默认安装了最新版本的Ruby,但您可以在Gemfile中使用ruby DSL指定确切的版本。

在Gemfile的末尾添加:

ruby​​“2.4.1”

答案 10 :(得分:0)

我遇到了同样的问题,但问题是该应用程序缺少根目录。 Heroku的默认主页是此HTML the default page。但是,如果您尝试所有定义的路线,它们将像:

appname.herokuapp.com/route

答案 11 :(得分:0)

我遇到了同样的错误,但是意识到我没有在config / routes.rb文件中将HTML动词从GET更改为ROOT。

get "/hello", to: "application#hello"

我将其更新为root "application#hello"

然后我将其推送到git并将其部署到生产中。

答案 12 :(得分:0)

我遇到了同样的错误,因为我使用此命令git push heroku master将相同的非master分支推送到了heroku master。这显然会引起冲突。

我还使用heroku run rake routes检查了路线。但是输出不是我的实际路线。甚至没有一个。
将您的非master分支推送到heroku master的正确方法是

git push -f heroku your_branch_name:master