【问题标题】:Can't deploy Rails 6 app to Heroku. ErrorLog included无法将 Rails 6 应用程序部署到 Heroku。包括错误日志
【发布时间】:2020-05-31 04:38:18
【问题描述】:

我已经通过新集成的 Webpacker for JS 使用 React 构建了一个 Rails 6 应用程序,但似乎无法克服部署到 Heroku 的最后障碍。我不太了解日志。我确实创建了一个Procfile 来启动 Puma 和 Webpack 服务器。有人介意查看日志并告诉我我可能遗漏了什么吗?顺便说一句,第一个障碍是摆脱 Yarn 与 NPM 锁定文件的冲突。

这里是日志:

2020-02-15T19:10:42.074186+00:00 app[web.1]: bundler: failed to load command: puma (/app/vendor/bundle/ruby/2.6.0/bin/puma)
2020-02-15T19:10:42.074256+00:00 app[web.1]: ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "outages" does not exist
2020-02-15T19:10:42.074256+00:00 app[web.1]: LINE 8:  WHERE a.attrelid = '"outages"'::regclass
2020-02-15T19:10:42.074257+00:00 app[web.1]: ^
2020-02-15T19:10:42.074269+00:00 app[web.1]: 
2020-02-15T19:10:42.074271+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:65:in `exec'
2020-02-15T19:10:42.074274+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:65:in `block (2 levels) in query'
2020-02-15T19:10:42.074274+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.2.1/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
2020-02-15T19:10:42.074275+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.2.1/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
2020-02-15T19:10:42.074275+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.2.1/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
2020-02-15T19:10:42.074275+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:64:in `block in query'
2020-02-15T19:10:42.074276+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:718:in `block (2 levels) in log'
2020-02-15T19:10:42.074276+00:00 app[web.1]: /app/vendor/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:230:in `mon_synchronize'
2020-02-15T19:10:42.074276+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:717:in `block in log'
2020-02-15T19:10:42.074277+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.2.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
2020-02-15T19:10:42.074277+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:708:in `log'
2020-02-15T19:10:42.074277+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:63:in `query'
2020-02-15T19:10:42.074277+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:817:in `column_definitions'
2020-02-15T19:10:42.074278+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:114:in `columns'
2020-02-15T19:10:42.074278+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/connection_adapters/schema_cache.rb:76:in `columns'
2020-02-15T19:10:42.074278+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/connection_adapters/schema_cache.rb:82:in `columns_hash'
2020-02-15T19:10:42.074278+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/model_schema.rb:490:in `load_schema!'
2020-02-15T19:10:42.074279+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/attributes.rb:247:in `load_schema!'
2020-02-15T19:10:42.074279+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/attribute_decorators.rb:51:in `load_schema!'
2020-02-15T19:10:42.074279+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/model_schema.rb:480:in `block in load_schema'
2020-02-15T19:10:42.074279+00:00 app[web.1]: /app/vendor/ruby-2.6.3/lib/ruby/2.6.0/monitor.rb:230:in `mon_synchronize'
2020-02-15T19:10:42.074280+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/model_schema.rb:477:in `load_schema'
2020-02-15T19:10:42.074280+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/model_schema.rb:352:in `columns_hash'
2020-02-15T19:10:42.074280+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/relation/query_methods.rb:1216:in `arel_column'
2020-02-15T19:10:42.074280+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/relation/query_methods.rb:1203:in `block in arel_columns'
2020-02-15T19:10:42.074280+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/relation/query_methods.rb:1196:in `each'
2020-02-15T19:10:42.074280+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/relation/query_methods.rb:1196:in `flat_map'
2020-02-15T19:10:42.074281+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/relation/query_methods.rb:1196:in `arel_columns'
2020-02-15T19:10:42.074281+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/relation/query_methods.rb:1187:in `build_select'
2020-02-15T19:10:42.074281+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/relation/query_methods.rb:1071:in `build_arel'
2020-02-15T19:10:42.074284+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/relation/query_methods.rb:1016:in `arel'
2020-02-15T19:10:42.074284+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/relation/finder_methods.rb:317:in `block in exists?'
2020-02-15T19:10:42.074284+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/relation.rb:828:in `skip_query_cache_if_necessary'
2020-02-15T19:10:42.074284+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/relation/finder_methods.rb:317:in `exists?'
2020-02-15T19:10:42.074285+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.1/lib/active_record/querying.rb:21:in `exists?'
2020-02-15T19:10:42.074285+00:00 app[web.1]: /app/app/controllers/application_controller.rb:3:in `<class:ApplicationController>'
2020-02-15T19:10:42.074285+00:00 app[web.1]: /app/app/controllers/application_controller.rb:1:in `<main>'
2020-02-15T19:10:42.074285+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
2020-02-15T19:10:42.074285+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
2020-02-15T19:10:42.074286+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
2020-02-15T19:10:42.074286+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
2020-02-15T19:10:42.074286+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
2020-02-15T19:10:42.074286+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.2.2/lib/zeitwerk/kernel.rb:16:in `require'
2020-02-15T19:10:42.074287+00:00 app[web.1]: /app/app/controllers/dashboard_controller.rb:1:in `<main>'
2020-02-15T19:10:42.074287+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
2020-02-15T19:10:42.074287+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
2020-02-15T19:10:42.074287+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
2020-02-15T19:10:42.074287+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
2020-02-15T19:10:42.074288+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
2020-02-15T19:10:42.074288+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.2.2/lib/zeitwerk/kernel.rb:16:in `require'
2020-02-15T19:10:42.074288+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.2.2/lib/zeitwerk/loader.rb:351:in `const_get'
2020-02-15T19:10:42.074288+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.2.2/lib/zeitwerk/loader.rb:351:in `block (2 levels) in eager_load'
2020-02-15T19:10:42.074289+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.2.2/lib/zeitwerk/loader.rb:685:in `block in ls'
2020-02-15T19:10:42.074289+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.2.2/lib/zeitwerk/loader.rb:682:in `foreach'
2020-02-15T19:10:42.074289+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.2.2/lib/zeitwerk/loader.rb:682:in `ls'
2020-02-15T19:10:42.074289+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.2.2/lib/zeitwerk/loader.rb:346:in `block in eager_load'
2020-02-15T19:10:42.074289+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.2.2/lib/zeitwerk/loader.rb:338:in `synchronize'
2020-02-15T19:10:42.074289+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.2.2/lib/zeitwerk/loader.rb:338:in `eager_load'
2020-02-15T19:10:42.074290+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.2.2/lib/zeitwerk/loader.rb:449:in `each'
2020-02-15T19:10:42.074290+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.2.2/lib/zeitwerk/loader.rb:449:in `eager_load_all'
2020-02-15T19:10:42.074290+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/railties-6.0.2.1/lib/rails/application/finisher.rb:122:in `block in <module:Finisher>'
2020-02-15T19:10:42.074290+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/railties-6.0.2.1/lib/rails/initializable.rb:32:in `instance_exec'
2020-02-15T19:10:42.074291+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/railties-6.0.2.1/lib/rails/initializable.rb:32:in `run'
2020-02-15T19:10:42.074291+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/railties-6.0.2.1/lib/rails/initializable.rb:61:in `block in run_initializers'
2020-02-15T19:10:42.074291+00:00 app[web.1]: /app/vendor/ruby-2.6.3/lib/ruby/2.6.0/tsort.rb:228:in `block in tsort_each'
2020-02-15T19:10:42.074291+00:00 app[web.1]: /app/vendor/ruby-2.6.3/lib/ruby/2.6.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
2020-02-15T19:10:42.074291+00:00 app[web.1]: /app/vendor/ruby-2.6.3/lib/ruby/2.6.0/tsort.rb:431:in `each_strongly_connected_component_from'
2020-02-15T19:10:42.074294+00:00 app[web.1]: /app/vendor/ruby-2.6.3/lib/ruby/2.6.0/tsort.rb:349:in `block in each_strongly_connected_component'
2020-02-15T19:10:42.074294+00:00 app[web.1]: /app/vendor/ruby-2.6.3/lib/ruby/2.6.0/tsort.rb:347:in `each'
2020-02-15T19:10:42.074294+00:00 app[web.1]: /app/vendor/ruby-2.6.3/lib/ruby/2.6.0/tsort.rb:347:in `call'
2020-02-15T19:10:42.074295+00:00 app[web.1]: /app/vendor/ruby-2.6.3/lib/ruby/2.6.0/tsort.rb:347:in `each_strongly_connected_component'
2020-02-15T19:10:42.074295+00:00 app[web.1]: /app/vendor/ruby-2.6.3/lib/ruby/2.6.0/tsort.rb:226:in `tsort_each'
2020-02-15T19:10:42.074295+00:00 app[web.1]: /app/vendor/ruby-2.6.3/lib/ruby/2.6.0/tsort.rb:205:in `tsort_each'
2020-02-15T19:10:42.074295+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/railties-6.0.2.1/lib/rails/initializable.rb:60:in `run_initializers'
2020-02-15T19:10:42.074296+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/railties-6.0.2.1/lib/rails/application.rb:363:in `initialize!'
2020-02-15T19:10:42.074296+00:00 app[web.1]: /app/config/environment.rb:5:in `<top (required)>'
2020-02-15T19:10:42.074297+00:00 app[web.1]: config.ru:3:in `require_relative'
2020-02-15T19:10:42.074297+00:00 app[web.1]: config.ru:3:in `block in <main>'
2020-02-15T19:10:42.074315+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/rack-2.2.2/lib/rack/builder.rb:116:in `eval'
2020-02-15T19:10:42.074316+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/rack-2.2.2/lib/rack/builder.rb:116:in `new_from_string'
2020-02-15T19:10:42.074316+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/rack-2.2.2/lib/rack/builder.rb:105:in `load_file'
2020-02-15T19:10:42.074316+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/rack-2.2.2/lib/rack/builder.rb:66:in `parse_file'
2020-02-15T19:10:42.074316+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/puma-4.3.1/lib/puma/configuration.rb:321:in `load_rackup'
2020-02-15T19:10:42.074317+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/puma-4.3.1/lib/puma/configuration.rb:246:in `app'
2020-02-15T19:10:42.074317+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/puma-4.3.1/lib/puma/runner.rb:155:in `load_and_bind'
2020-02-15T19:10:42.074317+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/puma-4.3.1/lib/puma/single.rb:98:in `run'
2020-02-15T19:10:42.074317+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/puma-4.3.1/lib/puma/launcher.rb:172:in `run'
2020-02-15T19:10:42.074318+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/puma-4.3.1/lib/puma/cli.rb:80:in `run'
2020-02-15T19:10:42.074318+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/puma-4.3.1/bin/puma:10:in `<top (required)>'
2020-02-15T19:10:42.074318+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/bin/puma:23:in `load'
2020-02-15T19:10:42.074318+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/bin/puma:23:in `<top (required)>'
2020-02-15T19:10:42.174683+00:00 heroku[web.1]: State changed from starting to crashed
2020-02-15T19:10:42.158245+00:00 heroku[web.1]: Process exited with status 1
2020-02-15T19:10:43.902737+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=tml-dashboard.herokuapp.com request_id=c6f9e222-b62f-47e2-b5eb-5befc8af9ad2 fwd="68.194.85.143" dyno= connect= service= status=503 bytes= protocol=https
2020-02-15T19:10:45.661172+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=tml-dashboard.herokuapp.com request_id=25660d39-0184-411c-8e94-d54fcbd0d7b3 fwd="68.194.85.143" dyno= connect= service= status=503 bytes= protocol=https

【问题讨论】:

    标签: ruby-on-rails ruby heroku webpack puma


    【解决方案1】:

    你的错误其实是

    ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "outages" does not exist
    

    所以看起来你从未运行过迁移

    heroku run rake db:migrate
    

    或者,如果您有多个环境,则为该环境添加标志

    heroku run rake db:migrate --remote production 
    

    或任何环境名称。

    【讨论】:

    • 仍然收到这些错误,例如:2020-02-15T20:01:23.048673+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=tml-dashboard.herokuapp.com request_id=62fc002e-1269-4410-af74-2920bfadc468 fwd="68.194.85.143" dyno= connect= service= status=503 bytes= protocol=https
    • 是的,错误不在该行,但在某处,您可以在原始问题中发布输出吗?
    • 为了清楚起见,错误是告诉您缺少一个表,因此您与中断模型相关的关系出错了。您的中断模型中是否缺少某些内容。您也可以分享您的停电模型文件吗?
    【解决方案2】:

    部署应用后,您似乎没有运行rails db:migrate。不幸/幸运的是 Heroku 在部署后没有运行迁移。

    作为快速修复:您可以运行heroku bash(您可以通过几种方式进行操作):

    1. $heroku run bash --app your_application_name
    2. 通过 Heroku 的 GUI

    然后手动运行它:rails db:migrate

    为了避免它在未来你可以添加到你的 Procfile release 阶段 您可以在其中设置部署后要执行的操作

    # Procfile
    release: rake db:migrate
    

    【讨论】:

    • 好酷。这让我很接近。在Heroku bash 中,我也尝试运行rails c 并收到此错误:`PG::UndefinedTable: ERROR: relationship "outages" does not exist (ActiveRecord::StatementInvalid) LINE 8: WHERE a.attrelid = ' “中断”'::regclass`
    • @DemianSims 在运行rails db:migrate 后 - 它应该被修复
    • @DemianSims 好吧,看起来很奇怪,你能在运行rails db:migrate之后添加日志吗?
    • 嗯,好的,你能在这里写下你运行迁移的步骤列表吗?
    • 当我尝试在heroku bash 中运行rails c 时,我遇到了这个问题。 codeshare.io/ax1O3D我确实有这个应用程序在本地运行良好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 2015-07-26
    • 2014-07-16
    相关资源
    最近更新 更多