0

我是使用 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=

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

谢谢,

4

2 回答 2

1

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

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

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

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

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

  config.eager_load = true

end

最后,这个问题的最佳解决方案是审查你的测试套件,如果有的话,包括验证源文件功能的测试用例。

于 2017-06-08T07:08:38.180 回答
0

check is there any process which takes more than 30 seconds, if yes then your app will crashed with H10 error.

于 2017-06-08T07:17:21.080 回答