ruby-on-railsurl-routingstatic-pages

Hartl Tutorial 3.1: 500 Runtime Error when navigating to 'home' static page


I'm extremely new to coding in general - so be gentle.

I'm on Chapter 3, 3.1, in the very end after creating the static_pages, home and help, by entering $ rails generate controller StaticPages home help, I cannot then navigate to the page without getting a corresponding 500 Runtime Error, which in turn Killed the running server.

The "hello" app works just fine and I've had no issues up until now.

Notes: I am following the tutorial on a Windows 7 x64, but I'm taking Hartl's recommendation to use the Cloud IDE with Git, Bitbucket, and Heroku. I did have to run Rails 4.2.1 instead of Rails 4.2.2 however due to an issue when first starting out.

What could I be doing wrong? Please let me know if I need to include any more information, this is all very new to me.

EDIT:

I checked my files again what @Rich Peck stated and theyre all the same except the Routes.rb file which only has this (which was generated by the system, I'm also omitting all # comments):

Rails.application.routes.draw do get 'static_pages/home' get 'static_pages/help' root 'application#hello' end

Ive also pulled my logs as stated by a few comments, and this is the result of the last 100 lines:

2015-10-11T21:25:49.589384+00:00 app[web.1]: => Runrails server -hfor more startup options 2015-10-11T21:25:49.589385+00:00 app[web.1]: => Ctrl-C to shutdown server 2015-10-11T21:25:49.589386+00:00 app[web.1]: Started GET "/" for 208.115.151.20 at 2015-10-11 21:25:49 +0000 2015-10-11T21:25:49.646987+00:00 app[web.1]: Processing by ApplicationController#hello as HTML 2015-10-11T21:25:49.656139+00:00 app[web.1]: Completed 200 OK in 9ms (Views: 0.8ms | ActiveRecord: 0.0ms) 2015-10-11T21:25:49.655832+00:00 app[web.1]: Rendered text template (0.0ms) 2015-10-11T21:25:49.786454+00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=mysterious-journey-1439.herokuapp.com request_id=2474855b-e5c5-4db8-8b2a-83f0d6095d2d fwd="208.115.151.20" dyno=web.1 connect=0ms service=3ms status=200 bytes=228 2015-10-11T21:25:49.658965+00:00 heroku[router]: at=info method=GET path="/" host=mysterious-journey-1439.herokuapp.com request_id=e85687fc-6820-42c1-b389-4a6d8e0e2ffa fwd="208.115.151.20" dyno=web.1 connect=0ms service=73ms status=304 bytes=397 2015-10-11T21:59:04.638018+00:00 heroku[web.1]: Idling 2015-10-11T21:59:04.638730+00:00 heroku[web.1]: State changed from up to down 2015-10-11T21:59:04.639573+00:00 heroku[web.1]: State changed from down to starting 2015-10-11T21:59:06.575098+00:00 heroku[web.1]: Stopping all processes with SIGTERM 2015-10-11T21:59:06.991420+00:00 app[web.1]: [2015-10-11 21:59:06] FATAL SignalException: SIGTERM 2015-10-11T21:59:06.991427+00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:170:inselect' 2015-10-11T21:59:06.991429+00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:170:in block in start' 2015-10-11T21:59:06.991431+00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:32:instart' 2015-10-11T21:59:06.991432+00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:160:in start' 2015-10-11T21:59:06.991433+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-1.6.4/lib/rack/handler/webrick.rb:34:inrun' 2015-10-11T21:59:06.991434+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-1.6.4/lib/rack/server.rb:286:in start' 2015-10-11T21:59:06.991436+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands/server.rb:80:instart' 2015-10-11T21:59:06.991438+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:80:in block in server' 2015-10-11T21:59:06.991440+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:75:intap' 2015-10-11T21:59:06.991441+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:75:in server' 2015-10-11T21:59:06.991442+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:39:inrun_command!' 2015-10-11T21:59:06.991443+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands.rb:17:in <top (required)>' 2015-10-11T21:59:06.991445+00:00 app[web.1]: bin/rails:8:inrequire' 2015-10-11T21:59:06.991446+00:00 app[web.1]: bin/rails:8:in <main>' 2015-10-11T21:59:06.991478+00:00 app[web.1]: [2015-10-11 21:59:06] INFO WEBrick::HTTPServer#start done. 2015-10-11T21:59:06.991452+00:00 app[web.1]: [2015-10-11 21:59:06] INFO going to shutdown ... 2015-10-11T21:59:06.991498+00:00 app[web.1]: Exiting 2015-10-11T21:59:07.767999+00:00 heroku[web.1]: Process exited with status 143 2015-10-11T21:59:08.554265+00:00 heroku[web.1]: Starting process with commandbin/rails server -p 21794 -e production 2015-10-11T21:59:12.579369+00:00 app[web.1]: [2015-10-11 21:59:12] INFO WEBrick 1.3.1 2015-10-11T21:59:12.579406+00:00 app[web.1]: [2015-10-11 21:59:12] INFO ruby 2.0.0 (2015-04-13) [x86_64-linux] 2015-10-11T21:59:12.579784+00:00 app[web.1]: [2015-10-11 21:59:12] INFO WEBrick::HTTPServer#start: pid=3 port=21794 2015-10-11T21:59:13.087410+00:00 heroku[web.1]: State changed from starting to up 2015-10-11T22:34:07.204262+00:00 heroku[web.1]: Idling 2015-10-11T22:34:07.204981+00:00 heroku[web.1]: State changed from up to down 2015-10-11T22:34:10.871115+00:00 heroku[web.1]: Stopping all processes with SIGTERM 2015-10-11T22:34:11.813473+00:00 app[web.1]: [2015-10-11 22:34:11] FATAL SignalException: SIGTERM 2015-10-11T22:34:11.813479+00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:170:inselect' 2015-10-11T22:34:11.813483+00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:170:in block in start' 2015-10-11T22:34:11.813484+00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:32:instart' 2015-10-11T22:34:11.813486+00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:160:in start' 2015-10-11T22:34:11.813487+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-1.6.4/lib/rack/handler/webrick.rb:34:inrun' 2015-10-11T22:34:11.813489+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-1.6.4/lib/rack/server.rb:286:in start' 2015-10-11T22:34:11.813490+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands/server.rb:80:instart' 2015-10-11T22:34:11.813492+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:80:in block in server' 2015-10-11T22:34:11.813493+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:75:intap' 2015-10-11T22:34:11.813495+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:75:in server' 2015-10-11T22:34:11.813497+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:39:inrun_command!' 2015-10-11T22:34:11.813498+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands.rb:17:in <top (required)>' 2015-10-11T22:34:11.813500+00:00 app[web.1]: bin/rails:8:inrequire' 2015-10-11T22:34:11.813501+00:00 app[web.1]: bin/rails:8:in <main>' 2015-10-11T22:34:11.813508+00:00 app[web.1]: [2015-10-11 22:34:11] INFO going to shutdown ... 2015-10-11T22:34:11.813551+00:00 app[web.1]: [2015-10-11 22:34:11] INFO WEBrick::HTTPServer#start done. 2015-10-11T22:34:11.813591+00:00 app[web.1]: => Booting WEBrick 2015-10-11T22:34:11.813594+00:00 app[web.1]: => Runrails server -hfor more startup options 2015-10-11T22:34:11.813593+00:00 app[web.1]: => Rails 4.2.1 application starting in production on http://0.0.0.0:21794 2015-10-11T22:34:11.813598+00:00 app[web.1]: Exiting 2015-10-11T22:34:11.813596+00:00 app[web.1]: => Ctrl-C to shutdown server 2015-10-11T22:34:12.863144+00:00 heroku[web.1]: Process exited with status 143 2015-10-11T22:59:27.859347+00:00 heroku[web.1]: Unidling 2015-10-11T22:59:27.859754+00:00 heroku[web.1]: State changed from down to starting 2015-10-11T22:59:31.767799+00:00 heroku[web.1]: Starting process with commandbin/rails server -p 43789 -e production 2015-10-11T22:59:35.850425+00:00 app[web.1]: [2015-10-11 22:59:35] INFO WEBrick 1.3.1 2015-10-11T22:59:35.850445+00:00 app[web.1]: [2015-10-11 22:59:35] INFO ruby 2.0.0 (2015-04-13) [x86_64-linux] 2015-10-11T22:59:35.850845+00:00 app[web.1]: [2015-10-11 22:59:35] INFO WEBrick::HTTPServer#start: pid=3 port=43789 2015-10-11T22:59:36.187808+00:00 heroku[web.1]: State changed from starting to up 2015-10-11T22:59:36.930155+00:00 app[web.1]: => Booting WEBrick 2015-10-11T22:59:36.930162+00:00 app[web.1]: => Rails 4.2.1 application starting in production on http://0.0.0.0:43789 2015-10-11T22:59:36.930163+00:00 app[web.1]: => Runrails server -hfor more startup options 2015-10-11T22:59:36.930165+00:00 app[web.1]: => Ctrl-C to shutdown server 2015-10-11T22:59:36.963421+00:00 app[web.1]: Processing by ApplicationController#hello as HTML 2015-10-11T22:59:36.930166+00:00 app[web.1]: Started GET "/" for 208.115.151.20 at 2015-10-11 22:59:36 +0000 2015-10-11T22:59:36.971478+00:00 app[web.1]: Completed 200 OK in 8ms (Views: 0.6ms | ActiveRecord: 0.0ms) 2015-10-11T22:59:36.974594+00:00 heroku[router]: at=info method=GET path="/" host=mysterious-journey-1439.herokuapp.com request_id=b8fe0c84-e45c-4997-be06-9742f276fb98 fwd="208.115.151.20" dyno=web.1 connect=1ms service=47ms status=304 bytes=397 2015-10-11T22:59:36.971195+00:00 app[web.1]: Rendered text template (0.0ms) 2015-10-11T22:59:37.155800+00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=mysterious-journey-1439.herokuapp.com request_id=ce175e20-0e6c-40e1-9e4e-ec842143c159 fwd="208.115.151.20" dyno=web.1 connect=16ms service=4ms status=200 bytes=228 2015-10-11T23:35:06.014571+00:00 heroku[web.1]: Idling 2015-10-11T23:35:06.015165+00:00 heroku[web.1]: State changed from up to down 2015-10-11T23:35:08.748838+00:00 heroku[web.1]: Stopping all processes with SIGTERM 2015-10-11T23:35:09.396823+00:00 app[web.1]: [2015-10-11 23:35:09] FATAL SignalException: SIGTERM 2015-10-11T23:35:09.396829+00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:170:inselect' 2015-10-11T23:35:09.396831+00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:170:in block in start' 2015-10-11T23:35:09.396833+00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:32:instart' 2015-10-11T23:35:09.396834+00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:160:in start' 2015-10-11T23:35:09.396835+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-1.6.4/lib/rack/handler/webrick.rb:34:inrun' 2015-10-11T23:35:09.396838+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands/server.rb:80:in start' 2015-10-11T23:35:09.396836+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-1.6.4/lib/rack/server.rb:286:instart' 2015-10-11T23:35:09.396843+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:39:in run_command!' 2015-10-11T23:35:09.396840+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:80:inblock in server' 2015-10-11T23:35:09.396846+00:00 app[web.1]: bin/rails:8:in require' 2015-10-11T23:35:09.396847+00:00 app[web.1]: bin/rails:8:in' 2015-10-11T23:35:09.396842+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:75:in server' 2015-10-11T23:35:09.396841+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:75:intap' 2015-10-11T23:35:09.396844+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.1/lib/rails/commands.rb:17:in <top (required)>' 2015-10-11T23:35:09.396853+00:00 app[web.1]: [2015-10-11 23:35:09] INFO going to shutdown ... 2015-10-11T23:35:09.396894+00:00 app[web.1]: Exiting 2015-10-11T23:35:09.396870+00:00 app[web.1]: [2015-10-11 23:35:09] INFO WEBrick::HTTPServer#start done. 2015-10-11T23:35:10.254851+00:00 heroku[web.1]: Process exited with status 143 WARNING: Toolbelt v3.42.17 update available.


Solution

  • I'm extremely new to coding

    Because you're new, I'll give you a breakdown of how I'd debug this. It may not be an answer in itself, but it should at least help you out.


    Firstly, you need to make sure you have the right controller and views set up.

    The main problem for many new coders is they will blindly follow a tutorial and then be unable to understand what is being done. I know what it's like because I do it all the time (when learning something new)..

    Thus, you need to understand what is being added to your app, and how it should behave:


    1. Controller

    Your first port of call is the controller.

    You can read more about this here.

    Rails will have created:

    #app/controllers/static_pages_controller.rb
    class StaticPagesController < ApplicationController
       def hello
       end
    
       def help
       end
    end
    

    This, although not strictly adhering to the CRUD setup you'll use later in Rails, should give you at least the ability to call these two actions.

    You must first check if you have the above file.


    2. Views

    Secondly, you need to look at the views you've had generated.

    These will be located at:

    #app/views/static_pages/hello.html.erb
    #app/views/static_pages/help.html.erb
    

    Both of these will provide functionality to allow you to view your controller action outputs. They're not critical to the debug process at this time.

    They should really have nothing inside them.


    3. Routes

    Finally, you want to look at your routes.

    #config/routes.rb
    resources :static_pages, only: [], path: "" do
       collection do
         get :hello #-> url.com/hello
         get :help #-> url.com/help
       end 
    end
    

    This will give you the ability to access the controller actions, and by virtue, the views that you have just generated.

    All of these should work together, without any data, to provide access to url.com/hello and url.com/help.


    enter image description here
    (source: asciicasts.com)

    500 Errors are basically saying your server has an error.

    What errors on the server might cause the 500 issue?

    Mostly, it's due to calling variables which don't exist...

    #app/views/static_pages/hello.html.erb
    <%= @hello %>
    

    If you're using Heroku, the best way to debug - as with standard Rails - is to look at the console. In standard rails, the console is visible on your screen (most of the time); with Heroku, it's slightly different.

    Heroku logs are strange because they don't format very well in Windows. We tend to use LogEntries with the "live" functionality to see what's going on, and correct it:

    enter image description here

    Browsing through these logs will show you what the error is, and thus give you some perspective on how to fix it.

    --

    Finally, you may wish to use a gem such as better_errors or exception_handler