【问题标题】:heroku app crashes but works great locallyheroku 应用程序崩溃但在本地运行良好
【发布时间】:2013-02-24 09:20:39
【问题描述】:

我的应用程序在本地运行得非常好,当我输入 git push heroku master 时我没有看到任何错误。但是,当我输入 heroku open 并访问我看到的网址时:

应用程序错误

应用程序发生错误,无法提供您的页面。请稍后重试。 如果您是应用程序所有者,请查看您的日志以了解详细信息。

在 heroku 日志中,我得到以下信息:

2013-02-24T08:57:38+00:00 heroku[web.1]: Process exited with status 1
2013-02-24T08:57:38+00:00 heroku[web.1]: State changed from starting to crashed
2013-02-24T08:59:21+00:00 heroku[web.1]: State changed from crashed to starting
2013-02-24T08:59:23+00:00 heroku[web.1]: Starting process with command `bundle exec rails server -p 15485`
2013-02-24T08:59:30+00:00 app[web.1]: DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/config/environment.rb:5)
2013-02-24T08:59:30+00:00 app[web.1]: DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/config/environment.rb:5)
2013-02-24T08:59:33+00:00 app[web.1]: => Booting WEBrick
2013-02-24T08:59:33+00:00 app[web.1]: => Rails 3.2.11 application starting in production on http://0.0.0.0:15485
2013-02-24T08:59:33+00:00 app[web.1]: => Ctrl-C to shutdown server
2013-02-24T08:59:33+00:00 app[web.1]: Exiting
2013-02-24T08:59:33+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:317:in `rescue in depend_on': No such file to load -- spec_helper (LoadError)
2013-02-24T09:04:16+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=whispering-journey-9991.herokuapp.com fwd="108.46.218.98" dyno= queue= wait= connect= service= status=503 bytes=

有一个加载错误和一些我无法修复的弃用警告。我刚刚更新到 rails 3.2.11 不确定它是否相关。

宝石文件:

source 'https://rubygems.org'

gem 'rails', '3.2.11'
gem 'bootstrap-sass', '2.0.4'
gem 'bcrypt-ruby', '3.0.1'
gem 'faker', '1.0.1'
gem 'will_paginate', '3.0.3'
gem 'bootstrap-will_paginate', '0.0.6'
gem 'jquery-rails', '2.0.2'
gem 'pg', '0.12.2'
gem 'rails_autolink', '~> 1.0.9'
gem 'rinku', '~> 1.5.0', :require => 'rails_rinku'
gem 'auto_html', '1.6.0'
gem 'acts_as_votable', '~> 0.4.0'
gem 'thumbs_up', '~> 0.6.2'


group :development, :test do
  gem 'rspec-rails', '2.11.0'
end

group :development do
  gem 'annotate', '2.5.0'
end

group :assets do
  gem 'sass-rails',   '3.2.5'
  gem 'coffee-rails', '3.2.2'
  gem 'uglifier', '1.2.3'
end

group :test do
  gem 'factory_girl_rails', '4.1.0'
  gem 'capybara', '1.1.2'
  gem 'cucumber-rails', '1.2.1', :require => false
  gem 'database_cleaner', '0.7.0'
end

这是我第一次在这台(新)计算机上推送 heroku,不确定这是否会导致问题。

我在输入 git push heroku 时也遇到了这个错误:

   Running: rake assets:precompile
   rake aborted!
   could not connect to server: Connection refused
   Is the server running on host "127.0.0.1" and accepting
   TCP/IP connections on port 5432?

正在调查:https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar

【问题讨论】:

  • $ rails generate rspec:install> 相同的 .rspec 存在 spec 相同的 spec/spec_helper.rb
  • 你能在本地运行“bundle install --without development test”然后运行“bundle exec rails s”吗?同样的错误?
  • 当我这样做时,它在本地仍然可以正常工作,这没有意义
  • 我卸载并重新安装了 rspec,同样的事情发生了。我按照您的建议在本地运行它,但仍然没有收到错误。

标签: ruby-on-rails git heroku


【解决方案1】:

看起来您正在使用默认的 WEBrick 服务器。 Heroku 建议使用“瘦”服务器。尝试在您的 Gemfile 中添加类似的内容:

gem 'thin', :group => :production

然后运行 ​​bundle install,使用 Git 提交文件并再次推送到您的 heroku 应用程序。 如果您还没有这样做,则需要通过在命令行中尝试以下操作来预编译资产:

RAILS_ENV=production bundle exec rake assets:precompile

然后,别忘了运行你的 git 命令:

git add .
git commit -m "added precompiled assets"
git push heroku master

【讨论】:

  • 不确定这是否会起作用,因为 heroku 一个月前曾经为我工作,我从未使用过瘦,但我会尝试你的建议
  • 您是否尝试过预编译资产?你可以通过运行:“RAILS_ENV=production bundle exec rake assets:precompile”
  • 我收到此错误:致命:数据库“Audiospy_production”不存在,这是怎么回事?
最近更新 更多