错误H10:Heroku上的应用程序错误

时间:2012-10-23 19:39:52

标签: ruby-on-rails heroku

我是使用Rails和Heroku的新手。我尝试将我的应用程序推送到Heroku并且推送成功但由于某种原因我在Heroku网站上收到应用程序错误:

"An error occurred in the application and your page could not be served." 

如果有人可以提供帮助,那会很棒。传递有关我的应用和环境的一些信息。

在我的Gem文件中,我运行了以下数据库:

group :development, :test do
gem "sqlite3", "~> 1.3.6"
end

group :production do 
gem 'pg'
end

group :assets do
gem 'sass-rails',   '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'therubyracer'
gem 'uglifier', '>= 1.0.3'
end

在Database.yml中设置以下数据库:

development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000

test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000

production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000

首先,我不明白为什么.yml文件仍然在生产服务器中显示Sqlite3?不应该改为pgres。在Heroku日志中,这是显示的关键错误消息:

 2012-10-23T19:22:36+00:00 heroku[router]: Error H10 (App crashed) -> GET thawing-dusk-  8202.herokuapp.com/analysis dyno= queue= wait= service= status=503 bytes=

希望有人可以帮我解决这个问题!

谢谢,

2 个答案:

答案 0 :(得分:1)

您的Rails应用程序很可能在您的源文件启动时引发异常。

这个异常在开发环境中可能并不明显,因为Rails并不急于在开发或测试中加载文件。但是,当生产环境导致Rails应用程序急切地加载所有源文件时,该异常会中断应用程序启动过程,并且应用程序因Heroku日志中缺少堆栈跟踪而崩溃。

要获得信息丰富的堆栈跟踪,请从运行heroku run rails c的终端访问Rails控制台,假设您已包含Heroku Toolbelt并配置了您的项目。当您访问生产环境时,这也将在启动时失败,但堆栈跟踪将比Heroku日志更广泛。

诊断问题的另一种方法是将开发环境设置为急切的加载源文件。

# config/environments/development.rb
Rails.application.configure do

  config.eager_load = true

end

最后,解决此问题的最佳方法是检查您的测试套件(如果有),以包含验证源文件功能的测试用例。

答案 1 :(得分:0)

检查是否有任何进程需要超过30秒,如果是,则您的应用程序将因H10错误而崩溃。