Rails应用程序在本地运行,但在部署到Heroku时则不行

时间:2014-07-04 04:45:49

标签: ruby-on-rails ruby heroku heroku-postgres

我的应用在本地工作。我部署到heroku并收到应用程序错误。我似乎无法弄清楚出了什么问题。在下面发布日志,有什么用处吗?

错误

应用程序中发生错误,无法提供您的页面。请稍后再试。

如果您是应用程序所有者,请查看日志以获取详细信息。

日志

heroku日志

2014-07-04T04:40:15.871014+00:00 heroku[web.1]: State changed from starting to crashed
2014-07-04T04:40:16.982435+00:00 heroku[router]: at=error code=H10 desc="App crashed"     method=GET path="/" host=kitchen-ninja.herokuapp.com request_id=aa152804-e6f0-4a2f-9c27-   c9fb580272f3 fwd="100.1.249.244" dyno= connect= service= status=503 bytes=
2014-07-04T04:40:17.620440+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=kitchen-ninja.herokuapp.com request_id=a3c43716-35b3-43b5-9426-fb2f3f400c1b fwd="100.1.249.244" dyno= connect= service= status=503 bytes=
2014-07-04T04:40:17.783162+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=kitchen-ninja.herokuapp.com request_id=2a8c63d7-3906-48c7-85de-abe64c2fd247 fwd="100.1.249.244" dyno= connect= service= status=503 bytes=
2014-07-04T04:40:15.860319+00:00 heroku[web.1]: Process exited with status 1

的Gemfile

source 'https://rubygems.org'
ruby '2.0.0'


gem 'rails', '4.0.2'
gem 'pg', '0.15.1'
gem 'mail_form', '~> 1.5.0.rc'
gem 'less-rails'
gem 'therubyracer', '~> 0.12.1'
gem 'simple_form'
gem 'pony'
gem 'sass-rails', '4.0.1'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.1'
gem 'jquery-rails', '3.0.4'
gem 'jquery-turbolinks'
gem 'jbuilder', '1.0.2'
gem 'paperclip', '4.1'
gem 'devise'

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

group :test do

end

group :doc do
  gem 'sdoc', '0.3.20', require: false
end

group :production do
    gem 'rails_12factor', '0.0.2'
end

5 个答案:

答案 0 :(得分:8)

在必须部署到heroku之后,需要在开始工作之前运行rake db:migrate。转到您推送应用程序的文件夹并执行

heroku run rake db:migrate

这应该可以解决您遇到的503错误。

答案 1 :(得分:4)

Heroku上有两种类型的Rails应用程序错误:

<强>的Heroku

enter image description here

这意味着 Heroku 在平台级别存在问题(无法加载I.E Rails)。这通常是database问题,可以通过确保创建db或从CMD运行heroku run rake db:migrate命令来解决此问题

-

<强>滑轨

enter image description here

这是 Rails 特定错误,当您点击内部时出现问题的Rails应用时会导致此错误。这只会显示整个Heroku平台是否运行良好,这意味着如果你有db设置等 - 意味着代码中的某些内容被破坏


这里的区别在于,一个错误是platform特定的,而另一个错误是application特定的。如果您遇到上述(Heroku)错误,则需要确保可以解决Heroku平台本身存在的任何问题 - 可以通过以下方式解决:

$ heroku run rake db:migrate

当然,考虑到您为Rails应用程序设置了数据库。如果是这种情况,您需要确保在生产中设置了数据库,然后在config/database.yml

中设置了正确的身份验证详细信息

答案 2 :(得分:1)

我跑了     heroku运行rails console

让我更好地理解了什么是错的。事实证明我的用户控制器意外结束了......

heroku run rails console
Running `rails console` attached to terminal... up, run.6073
/app/vendor/bundle/ruby/2.0.0/gems/activesupport-  
4.0.2/lib/active_support/dependencies.rb:229:in `require':     
/app/app/controllers/users_controller.rb:68: syntax error, unexpected keyword_end, 
expecting    end-of-input (SyntaxError)

答案 3 :(得分:1)

这是一篇旧帖子,但是如果你在日志中没有原因/ H10错误代码的情况下使应用程序崩溃,请确保使用的是Puma。我面对同样没有任何工作,但添加Puma来解决它。基本上是:

  1. 将Puma添加到您的Gemfile中:

    gem 'puma'
    
  2. 在Procfile中将Puma设置为Web进程的服务器:

    web: bundle exec puma -C config/puma.rb
    
  3. config/puma.rb为Puma创建配置文件。 Heroku推荐以下内容,但可根据您的需求进行定制

    workers Integer(ENV['WEB_CONCURRENCY'] || 2) 
    threads_count = Integer(ENV['MAX_THREADS'] || 5)
    threads threads_count, threads_count<br/>
    preload_app!<br/>
    rackup DefaultRackup<br/>
    port        ENV['PORT']     || 3000
    environment ENV['RACK_ENV'] || 'development'<br/>
    on_worker_boot do
        ActiveRecord::Base.establish_connection
    end
    
  4. 更多信息可以在heroku.com找到:Deploying Rails Applications with the Puma Web Server

答案 4 :(得分:0)

我遇到了同样的问题,我花了很多时间作为Ruby on Rails的初学者,找到解决方案。感谢Shyam Bhimani,他link给了我。无论如何,解决方案如下:

注意:您应该位于应用程序文件夹内的SSH屏幕前方。现在输入以下内容:

$ bundle update 

$ heroku run rake db:migrate

$ heroku run rake db:schema:load

$ git init

$ git add .

$ git commit -am "some comment"

$ git push heroku master

$ git push heroku master

$ heroku open

我很高兴让我的应用程序在Heroku上工作,而我正在回答这个问题,以帮助Shayam帮助我。此致