【问题标题】:Rails app works locally but not when deployed to HerokuRails 应用程序在本地工作,但在部署到 Heroku 时不能
【发布时间】:2014-08-25 08:30:40
【问题描述】:

我的应用在本地运行。我部署到 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

宝石文件

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

【问题讨论】:

  • 503 服务不可用...您确定您的数据库实例在 heroku 上启动了吗?

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


【解决方案1】:

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

heroku run rake db:migrate

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

【讨论】:

    【解决方案2】:

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

    Heroku

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

    --

    导轨

    这是一个Rails 特有的错误,当您遇到内部 有问题的Rails 应用程序时导致。这只会显示整个 Heroku 平台是否运行良好,这意味着您是否设置了 db 等 - 意味着您的代码中的某些内容已损坏


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

    $ heroku run rake db:migrate
    

    当然,这是考虑到您已经为 Rails 应用程序设置了一个数据库。如果是这种情况,您需要确保在生产环境中设置了数据库,然后在 config/database.yml 中设置了正确的身份验证详细信息

    【讨论】:

      【解决方案3】:

      我跑了
      heroku 运行 rails 控制台

      这让我对出了什么问题有了更好的理解。原来我的用户控制器有一个意想不到的结局......

      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)
      

      【讨论】:

      • 您找到解决方案了吗?请与我们分享
      【解决方案4】:

      这是一篇旧帖子,但如果您在 heroku 中无故崩溃/日志中出现 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
        

      更多信息请访问 heroku.com:Deploying Rails Applications with the Puma Web Server

      【讨论】:

      • 您好,Evandro,请将该链接中的相关信息添加到您的答案中。仅链接的答案通常会被标记为删除,因为链接可能会更改,从而使答案无效。
      【解决方案5】:

      我遇到了同样的问题,作为 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 帮助我一样帮助你。问候

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-24
        • 1970-01-01
        • 2019-11-22
        • 2020-07-17
        • 2021-04-17
        • 2020-01-09
        • 1970-01-01
        相关资源
        最近更新 更多