# A small trick to avoid 404 error when redmine runs on dreamhost

+关注继续查看

I locate my redmine webite on dreamhost shared-host. It works well in the first 8 months. But recently I meet 404 Page not found frequently when I post a topic in the forum, or create new issues. This weekend I decide to dig the bug.

The problem looks like this in redmine/log/production.log

Processing IssuesController#create (for 999.999.999.99 at 2011-07-09 08:38:36) [POST]
Parameters: {"commit"=>"创建""project_id"=>"test""action"=>"create""authenticity_token"=>"JOLhksjiN1Wmpt4iAVrw22Y+9+Pvdn1Kr6RwMQ3xDac=""issue"=>{"start_date"=>"2011-07-09""estimated_hours"=>"""priority_id"=>"4""parent_issue_id"=>"""assigned_to_id"=>"""subject"=>"performance test""tracker_id"=>"1""due_date"=>"""status_id"=>"1""description"=>"12313"}, "controller"=>"issues""attachments"=>{"1"=>{"description"=>""}}}
Redirected to http:
//project.cocos2d-x.com/issues/62
Completed
in 674ms (DB: 408| 302 Found [http://project.cocos2d-x.com/projects/test/issues]

Processing ApplicationController
#index (for 125.77.152.242 at 2011-07-09 08:38:37) [GET]

ActionController::RoutingError (No route matches
"/internal_error.html" with {:method=>:get}):

/dh/passenger/lib/phusion_passenger/rack/request_handler.rb:92:in process_request'
/dh/passenger/lib/phusion_passenger/abstract_request_handler.rb:207:in main_loop'
/dh/passenger/lib/phusion_passenger/railz/application_spawner.rb:400:in start_request_handler'
/dh/passenger/lib/phusion_passenger/railz/application_spawner.rb:351:in handle_spawn_application'
/dh/passenger/lib/phusion_passenger/utils.rb:184:in safe_fork'
/dh/passenger/lib/phusion_passenger/railz/application_spawner.rb:349:in handle_spawn_application'
/dh/passenger/lib/phusion_passenger/abstract_server.rb:352:in __send__'
/dh/passenger/lib/phusion_passenger/abstract_server.rb:352:in main_loop'
/dh/passenger/lib/phusion_passenger/abstract_server.rb:196:in start_synchronously'
/dh/passenger/lib/phusion_passenger/abstract_server.rb:163:in start'
/dh/passenger/lib/phusion_passenger/railz/application_spawner.rb:209:in start'
/dh/passenger/lib/phusion_passenger/spawn_manager.rb:262:in spawn_rails_application'
/dh/passenger/lib/phusion_passenger/abstract_server_collection.rb:126:in lookup_or_add'
/dh/passenger/lib/phusion_passenger/spawn_manager.rb:256:in spawn_rails_application'
/dh/passenger/lib/phusion_passenger/abstract_server_collection.rb:80:in synchronize'
/dh/passenger/lib/phusion_passenger/abstract_server_collection.rb:79:in synchronize'
/dh/passenger/lib/phusion_passenger/spawn_manager.rb:255:in spawn_rails_application'
/dh/passenger/lib/phusion_passenger/spawn_manager.rb:154:in spawn_application'
/dh/passenger/lib/phusion_passenger/spawn_manager.rb:287:in handle_spawn_application'
/dh/passenger/lib/phusion_passenger/abstract_server.rb:352:in __send__'
/dh/passenger/lib/phusion_passenger/abstract_server.rb:352:in main_loop'
/dh/passenger/lib/phusion_passenger/abstract_server.rb:196:in start_synchronously'

Rendering
/home/walzer/project.cocos2d-x.com/public/404.html (404 Not Found)

Processing IssuesController
#show (for 999.999.999.99 at 2011-07-09 08:38:49) [GET]
Parameters: {"action"=>"show""id"=>"62""controller"=>"issues"}
Rendering template within layouts
/base
Rendering issues
/show.rhtml
Completed
in 831ms (View: 312, DB: 484| 200 OK [http://project.cocos2d-x.com/issues/62]

In the first paragraph, I create an issue. After that the passenger raise an "internal_error", and would like to find public/internal_error.html. Of course this file isn't exist, it's redmine/public/500.html instead. So I get a 404 error, public/404.html is rendered. In the 3rd paragraph, I refresh the page, and get the issue detail page correctly.

I contact the tech support of dreamhost, but the guy refuse to support problems of redmine. damn... I google this problem, many others met it but have no solutions given in their topics, such as

http://discussion.dreamhost.com/thread-130022.html  (The tech support of dreamhost is just so so..)

http://railsforum.com/viewtopic.php?id=36826 (not completely the same)

They're the motion of writing this blog :)

OK, I must DIY now. I know almost nothing about rails, haha. So the breaking point is the 404 page.

1. copy 500.html to internal_error.html to avoid 400 error

After this step, the log looks correctly, but I get a internal_error.html rendered. Actually, I wish it still tell me something more about this error.

Processing MessagesController#new (for 999.999.999.99 at 2011-07-10 01:47:29) [POST]
Parameters: {"board_id"=>"11""commit"=>"Create""action"=>"new""authenticity_token"=>"+KpHpWkhr/4pJQ4tyOgkxtV/CE8tq05r8EM605DLiJE=""controller"=>"messages""message"=>{"subject"=>"Another test topic""content"=>"go away 500! damn!""sticky"=>"0""locked"=>"0"}, "attachments"=>{"1"=>{"description"=>""}}}
-x.org, yyyy@tranzda.com, zzz@cocos2d-x.org, aaa@cocos2d-x.org, bbbb@cocos2d-x.org, ccccc@gmail.com
Redirected to http:
//www.cocos2d-x.org/boards/11/topics/2290
Completed
in 2148ms (DB: 38| 302 Found [http://www.cocos2d-x.org/boards/11/topics/new]

Processing MessagesController
#show (for 999.999.999.99 at 2011-07-10 01:47:34) [GET]
Parameters: {"board_id"=>"11""action"=>"show""id"=>"2290""controller"=>"messages"}
Rendering template within layouts
/base
Rendering messages
/show
Completed
in 106ms (View: 72, DB: 20| 200 OK [http://www.cocos2d-x.org/boards/11/topics/2290]

I can simply click refresh to get the right page. Why not do it automatically?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"
>

<META HTTP-EQUIV="refresh" CONTENT="0">
<html>
<title>Redirect</title>
<body>

<h1>I can not wait to refresh...</h1>

<form>

<input type="button" onClick="history.go(0)" value="Refresh">

</form>
</body>

</html>

Oh nice, when the passenger raises 500 error, it will not invoke public/500.html, but call my custom public/internal_error.html, and refresh to the right page immediately.

It's nothing but a small trick. I hope it can help others who meet the same problem :)

UserWarning: Glyph 28857 (\N{CJK UNIFIED IDEOGRAPH-70B9}) missing from current font. FigureCanvasA
UserWarning: Glyph 28857 (\N{CJK UNIFIED IDEOGRAPH-70B9}) missing from current font. FigureCanvasA
73 0
E: Unable to correct problems, you have held broken packages.

215 0
Performance problem during saving - activating big form
Performance problem during saving - activating big form
31 0
Solving environment: failed with initial frozen solve. Retrying with flexible solve的解决方法
Solving environment: failed with initial frozen solve. Retrying with flexible solve的解决方法
3595 0
Common mistakes to avoid while using big data in risk management
Managing risk is a challenging enterprise, and errors are often made which can lead to catastrophic consequences.
1543 0
ECShop出现Strict Standards: Only variables should be passed by reference in的解决方法

936 0
The project was not built due to "Could not delete ''.". Fix the problem, then try refreshing this p

867 0
The project was not built due to "Could not delete ''.". Fix the problem, then try refreshing this p
Eclipse修改完Java类文件保存之后，项目上出现了错误提示，如图： 但是项目的文件都没有提示错误， 打开Problems窗口会看到具体的错误信息： The project was not built due to “Could not delete ”.
961 0
Yes Small Companies Can – and Should – Build Secure Software
"For large software companies or major corporations such as banks or health care firms with lar...
955 0
+关注

Large Data Files, Object Stores,and Deep Learning—Lessons Learned While Looking for Extra-Terrestrial Life

The Leaky Pipeline Problem: Making your Mark as a Woman in Big Data

Protecting-Pentests-Recommendations-For-Performing-More-Secure-Tests