2013-04-23 21 views
14

Tôi đã tạo ứng dụng Rails 4 beta mới và triển khai nó lên Heroku (sử dụng Ruby 2.0.0 và Unicorn qua Procfile).Rails 4 ứng dụng trên Heroku là 500ing, nhưng không có thông báo lỗi trong nhật ký

Nó chạy tốt tại địa phương với foreman start, nhưng khi tôi truy cập trang chủ của ứng dụng triển khai, tôi chỉ nhận được các tiêu chuẩn Heroku 500 lỗi:

We're sorry, but something went wrong. 
If you are the application owner check the logs for more information. 

Tuy nhiên, trong các bản ghi, không có lỗi . Tôi không biết những gì đang gây ra 500.

Đây là kết quả từ git push heroku master cuối cùng của tôi:

Counting objects: 6, done. 
Delta compression using up to 8 threads. 
Compressing objects: 100% (4/4), done. 
Writing objects: 100% (4/4), 656 bytes, done. 
Total 4 (delta 2), reused 0 (delta 0) 

-----> Ruby/Rails app detected 
-----> Using Ruby version: ruby-2.0.0 
-----> Installing dependencies using Bundler version 1.3.2 
     Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin --deployment 
     Using rake (10.0.4) 
     Using i18n (0.6.4) 
     Using minitest (4.7.3) 
     Using multi_json (1.7.2) 
     Using atomic (1.1.8) 
     Using thread_safe (0.1.0) 
     Using tzinfo (0.3.37) 
     Using activesupport (4.0.0.beta1) 
     Using builder (3.1.4) 
     Using erubis (2.7.0) 
     Using rack (1.5.2) 
     Using rack-test (0.6.2) 
     Using actionpack (4.0.0.beta1) 
     Using mime-types (1.23) 
     Using polyglot (0.3.3) 
     Using treetop (1.4.12) 
     Using mail (2.5.3) 
     Using actionmailer (4.0.0.beta1) 
     Using activemodel (4.0.0.beta1) 
     Using activerecord-deprecated_finders (0.0.3) 
     Using arel (4.0.0) 
     Using activerecord (4.0.0.beta1) 
     Using coffee-script-source (1.6.2) 
     Using execjs (1.4.0) 
     Using coffee-script (2.2.0) 
     Using json (1.7.7) 
     Using rdoc (3.12.2) 
     Using thor (0.18.1) 
     Using railties (4.0.0.beta1) 
     Using coffee-rails (4.0.0) 
     Using hike (1.2.2) 
     Using jbuilder (1.0.2) 
     Using jquery-rails (2.2.1) 
     Using kgio (2.8.0) 
     Using mysql2 (0.3.11) 
     Using bundler (1.3.2) 
     Using tilt (1.3.7) 
     Using sprockets (2.9.3) 
     Using sprockets-rails (2.0.0.rc4) 
     Using rails (4.0.0.beta1) 
     Using raindrops (0.11.0) 
     Using sass (3.2.8) 
     Using sass-rails (4.0.0.rc1) 
     Using turbolinks (1.1.1) 
     Using uglifier (2.0.1) 
     Using unicorn (4.6.2) 
     Your bundle is complete! It was installed into ./vendor/bundle 
     Cleaning up the bundler cache. 
-----> Preparing app for Rails asset pipeline 
     Running: rake assets:precompile 
     I, [2013-04-23T22:28:44.559735 #871] INFO -- : Writing /tmp/build_33m76p0rij8a5/public/assets/rails-d8fb6a2617998f32edf5edb354fc5326.png 
     I, [2013-04-23T22:28:49.911890 #871] INFO -- : Writing /tmp/build_33m76p0rij8a5/public/assets/application-d4a508061cd56ce9e544945495285e0c.js 
     I, [2013-04-23T22:28:50.120141 #871] INFO -- : Writing /tmp/build_33m76p0rij8a5/public/assets/application-a3b89b66a8471f3e75abb239e3b35c7d.css 
     Asset precompilation completed (8.30s) 
-----> Rails plugin injection 
-----> Discovering process types 
     Procfile declares types  -> web 
     Default types for Ruby/Rails -> console, rake, worker 

-----> Compiled slug size: 35.0MB 
-----> Launching... done, v21 
     http://blofs.herokuapp.com deployed to Heroku 

To [email protected]:blofs.git 
    32e51a2..37d989c master -> master 

Và đây là các bản ghi từ push rằng:

2013-04-23T22:28:06.650049+00:00 heroku[slugc]: Slug compilation started 
2013-04-23T22:29:11.194613+00:00 heroku[api]: Release v21 created by [email protected] 
2013-04-23T22:29:11.365908+00:00 heroku[api]: Deploy 37d989c by [email protected] 
2013-04-23T22:29:11.441066+00:00 heroku[web.1]: State changed from up to starting 
2013-04-23T22:29:11.932952+00:00 heroku[slugc]: Slug compilation finished 
2013-04-23T22:29:12.858139+00:00 heroku[web.1]: Stopping all processes with SIGTERM 
2013-04-23T22:29:13.194707+00:00 app[web.1]: I, [2013-04-23T22:29:13.194495 #2] INFO -- : reaped #<Process::Status: pid 5 exit 0> worker=0 
2013-04-23T22:29:13.194902+00:00 app[web.1]: I, [2013-04-23T22:29:13.194747 #2] INFO -- : master complete 
2013-04-23T22:29:14.312014+00:00 heroku[web.1]: Process exited with status 0 
2013-04-23T22:29:14.338943+00:00 heroku[web.1]: Starting process with command `bundle exec unicorn -p 25281 -E $RACK_ENV` 
2013-04-23T22:29:15.717687+00:00 app[web.1]: I, [2013-04-23T22:29:15.717387 #2] INFO -- : listening on addr=0.0.0.0:25281 fd=7 
2013-04-23T22:29:15.717916+00:00 app[web.1]: I, [2013-04-23T22:29:15.717861 #2] INFO -- : worker=0 spawning... 
2013-04-23T22:29:15.721526+00:00 app[web.1]: I, [2013-04-23T22:29:15.721385 #2] INFO -- : master process ready 
2013-04-23T22:29:15.723623+00:00 app[web.1]: I, [2013-04-23T22:29:15.723389 #5] INFO -- : worker=0 spawned pid=5 
2013-04-23T22:29:15.723805+00:00 app[web.1]: I, [2013-04-23T22:29:15.723750 #5] INFO -- : Refreshing Gem list 
2013-04-23T22:29:16.305653+00:00 heroku[web.1]: State changed from starting to up 
2013-04-23T22:29:16.891063+00:00 app[web.1]: I, [2013-04-23T22:29:16.890882 #5] INFO -- : worker=0 ready 

Sau đó, Tôi đã cố gắng tải trang chủ trong trình duyệt của mình và đây chỉ là hai dòng phụ xuất hiện trong nhật ký:

2013-04-23T22:29:26.685651+00:00 heroku[router]: at=info method=GET path=/ host=blofs.herokuapp.com fwd="46.65.16.44" dyno=web.1 connect=2ms service=156ms status=500 bytes=706 
2013-04-23T22:29:26.973073+00:00 heroku[router]: at=info method=GET path=/favicon.ico host=blofs.herokuapp.com fwd="46.65.16.44" dyno=web.1 connect=1ms service=5ms status=200 bytes=0 

Có ai có ý kiến ​​gì về vấn đề này không?

Những điều khác mà có thể có liên quan:

  • tôi đã vô hiệu hóa các tiêu chuẩn Heroku Postgres addon và đang sử dụng các addon ClearDB MySQL để thay thế.
  • Tôi đã thử thay đổi biến môi trường DATABASE_URL theo cách thủ công từ giá trị trước đó (vẫn là URL postgres ngay cả sau khi tôi đã xóa phần bổ trợ postgres) với cùng giá trị với số CLEARDB_DATABASE_URL var (mysql one). Điều này dường như không tạo ra bất kỳ sự khác biệt nào.
  • Tôi đã thêm ruby '2.0.0' vào Gemfile của tôi và thêm mysql2unicorn đá quý. Và tôi đã sử dụng config/unicorn.rb đề nghị tại https://devcenter.heroku.com/articles/rails-unicorn
  • My Procfile chỉ chứa: web: bundle exec unicorn -p $PORT -E $RACK_ENV
  • Nó hoạt động tốt tại địa phương với foreman start.
  • Khác với các sửa đổi được mô tả ở trên, về cơ bản nó là một ứng dụng ngoài hộp được tạo với rails new.
+3

Dường như bạn không có 4 đường đá quý. Xem https://devcenter.heroku.com/articles/rails4 –

Trả lời

34

Bạn cần thêm gem 'rails_12factor' vào Gemfile của mình. Đó là số tạm thời sửa từ Heroku để làm cho Rails 4+ hoạt động với dịch vụ của họ.

Xem Getting Started with Rails 4.x on Heroku hoặc Getting Started with Rails 5.x on Heroku.

+1

Bạn nên chấp nhận câu trả lời này vì đây có thể là chìa khóa để giải quyết vấn đề của bạn. – MoMolog

+1

Đảm bảo thay đổi 'config.log_level =: debug' trong tệp production.rb của bạn để biết nhật ký gỡ lỗi đầy đủ. –

+0

Tác phẩm này dành cho tôi! Trước tiên, tôi thêm đá quý đó và sau đó tôi gặp lỗi nhật ký chi tiết hơn. Sau đó tôi chạy 'heroku run rake db: migrate' và sau khi ứng dụng này hoạt động! – adripanico

1

Những câu trả lời này cho bạn biết cách bật nhật ký để bạn có thể tìm lỗi, nhưng không thực sự trả lời câu hỏi, 'Điều gì có thể sẽ bị lỗi?'

Ngoài những gợi ý trong câu trả lời của @Lauren để this question, đây là một khả năng khác - nếu bạn cố gắng truy cập vào ENV liên tục trong môi trường sản xuất của bạn và đã không thiết lập nó qua heroku config:set, đó cũng sẽ gây ra 500 lỗi rất im lặng .

Các vấn đề liên quan