2

I keep seeing errors in my logs similar to the below.

Can anyone suggest why I could be getting such an error intermittently? Is it a caching issue?

Every time I attempt to load the about-us page it loads perfectly but every few days there's an error like this in my logs but it's not confined to a single page. Sometimes it's the homepage, some times it's other pages.

Started GET "/about-us" for xxx.xxx.xxx.xxx at 2014-08-16 07:54:06 +0100
Processing by PagesController#about as */*;q=0.6
Geokit is using the domain: mydomain.com
[1m[35mPage Load (0.2ms)[0m  SELECT `pages`.* FROM `pages` WHERE `pages`.`name` = 'About Us' LIMIT 1
Completed 500 Internal Server Error in 2ms

ActionView::MissingTemplate (Missing template pages/about, application/about with {:handlers=>[:erb, :builder, :arb], :formats=>["*/*;q=0.6"], :locale=>[:en, :en]}. Searched in:
* "/var/www/myapp/releases/201408150651/app/views"
* "/var/lib/ruby-rvm/gems/ruby-1.9.2-p320/gems/activeadmin-0.3.2/app/views"
* "/var/lib/ruby-rvm/gems/ruby-1.9.2-p320/gems/kaminari-0.12.4/app/views"
* "/var/lib/ruby-rvm/gems/ruby-1.9.2-p320/gems/devise-1.4.7/app/views"
):

This question is similar to: Random rails ActionView::MissingTemplate errors so this is happening to other people but there's no defined answer there either.

Community
  • 1
  • 1
Akiba
  • 47
  • 1
  • 11

2 Answers2

2

You can't prevent this error as there are load reasons(like you mentioned missing cache, unknown request format and etc)

You can try to restrict the number of predefined formats like:

get '/about-us' => 'controller#about', :format => /(?:|html|json)/

Also you can suppress this exception. Create a new file(for example exception_handler.rb) in the directory config/initializers and Add this line into created file:

ActionDispatch::ExceptionWrapper.rescue_responses.merge! 'ActionView::MissingTemplate' => :not_found

Hope it helps.

ProblemSlover
  • 2,538
  • 2
  • 23
  • 33
0

@ProblemSolvers is a possible solution. However, I added the following method in my application_controller.rb file so that such errors will render a 404 page rather failing with a error message on screen

rescue_from ActionView::MissingTemplate, :with => :rescue_not_found
protected
def rescue_not_found
  Rails.logger.warn "Redirect to 404, Error: ActionView::MissingTemplate"
  redirect_to '/404' #or your 404 page
end

you can wrap this code in a if statement, something like this if Rails.env.production? given that the env is setup so your dev environment wont be affected

shakirthow
  • 1,356
  • 14
  • 15