Status: 500 Internal Server Error Content-Type: text/html

Witam,
Po wpisaniu adresu strony http://www.square.webfactional.com/test/index pokazuje się pusta strona z komunikatem:

Status: 500 Internal Server Error Content-Type: text/html
500 Internal Server Error

Rails 2.1.0
W logach jest taki zapis

Status: 500 Internal Server Error
No route matches “/test/index” with {:method=>:get}
/home/square/webapps/prawnicy_prawoity/vendor/rails/actionpack/lib/action_controller/routing/recognition_optimisation.rb:67:in recognize_path' /home/square/webapps/prawnicy_prawoity/vendor/rails/actionpack/lib/action_controller/routing/route_set.rb:384:inrecognize’
/home/square/webapps/prawnicy_prawoity/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:148:in handle_request' /home/square/webapps/prawnicy_prawoity/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:107:indispatch’
/home/square/webapps/prawnicy_prawoity/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:104:in synchronize' /home/square/webapps/prawnicy_prawoity/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:104:indispatch’
/home/square/webapps/prawnicy_prawoity/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:120:in dispatch_cgi' /home/square/webapps/prawnicy_prawoity/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:35:indispatch’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/rails.rb:78:in process' /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/rails.rb:76:insynchronize’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/rails.rb:76:in process' /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:618:inprocess_client’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:617:in each' /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:617:inprocess_client’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in run' /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:ininitialize’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in new' /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:inrun’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:720:in initialize' /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:720:innew’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:720:in run' /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/configurator.rb:271:inrun’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/configurator.rb:270:in each' /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/configurator.rb:270:inrun’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/bin/mongrel_rails:127:in run' /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/command.rb:211:inrun’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/bin/mongrel_rails:243
/usr/local/bin/mongrel_rails:16:in `load’
/usr/local/bin/mongrel_rails:16

Dlaczego nie mogę uruchomić tej strony ?

w config/routes.rb nie masz odpowiedniej ścieżki.

routes.rb wygląda tak :

ActionController::Routing::Routes.draw do |map|
map.connect ‘’, :controller => ‘test’, :action => ‘index’

map.connect ‘:controller/:action/:id’
map.connect ‘:controller/:action/:id.:format’
end

Najsampierw zamień pierwszą z linijek z map.connect na map.root – tak się mapuje główną ścieżkę :slight_smile:

zrobione, ale nie pomogło.

Masz kontroler TestController czy TestsController?
Masz w nim akcję index?
Masz widok do tej akcji?

mam kontroler: test_controller.erb

class TestController < ApplicationController

def index
end

end

views/test/index.html.erb

Nazwa ‘test’ jest nazwą “zastrzeżoną” :), wybierz jakiś “normalny” rzeczownik w liczbie mnogiej, mało ich.

http://wiki.rubyonrails.org/rails/pages/ReservedWords

może nie zastrzeżoną ale może stwarzać problemy, z tym że nie wydaje mi się że tutaj to może być błędem, sam używam gęsto i często jako nazwy kontrolera

ja proponuje zamienić:

  map.connect '', :controller => 'test', :action => 'index'

na :

  map.root :controller => 'test', :action => 'index'

Tak jak Tomash mówi, ale sprawdź czy napewno masz bez apostrofów, chociaż tez mi się nie wydaje :stuck_out_tongue:

Masz błąd nawet tutaj: http://www.square.webfactional.com/rails/info/properties, sprawdziłaś logi serwera czy wszystko gra?
Jakiego serwera używasz, jeśli passenger sprawdź vhost.

Uzasadnienie: Jeśli byłby to tylko błąd routingu dostałabyś błąd: “Routing Error”, ten błąd też występuje, ale wydaje mi się jest drugoplanowy, masz jakiś błąd w konfiguracji aplikacji/serwera.

sprawdziłam w routes.rb mam
map.root :controller => ‘test’, :action => ‘index’

a zapis w logach tak się prezentuje np. production.log

/!\ FAILSAFE /!\ Tue Apr 07 13:27:09 -0500 2009
Status: 500 Internal Server Error
No route matches “/test/index” with {:method=>:get}
/home/square/webapps/prawnicy_prawoity/vendor/rails/actionpack/lib/action_controller/routing/recognition_optimisation.rb:67:in recognize_path' /home/square/webapps/prawnicy_prawoity/vendor/rails/actionpack/lib/action_controller/routing/route_set.rb:384:inrecognize’
/home/square/webapps/prawnicy_prawoity/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:148:in handle_request' /home/square/webapps/prawnicy_prawoity/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:107:indispatch’
/home/square/webapps/prawnicy_prawoity/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:104:in synchronize' /home/square/webapps/prawnicy_prawoity/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:104:indispatch’
/home/square/webapps/prawnicy_prawoity/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:120:in dispatch_cgi' /home/square/webapps/prawnicy_prawoity/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:35:indispatch’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/rails.rb:78:in process' /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/rails.rb:76:insynchronize’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/rails.rb:76:in process' /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:618:inprocess_client’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:617:in each' /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:617:inprocess_client’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in run' /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:ininitialize’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in new' /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:inrun’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:720:in initialize' /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:720:innew’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:720:in run' /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/configurator.rb:271:inrun’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/configurator.rb:270:in each' /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/configurator.rb:270:inrun’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/bin/mongrel_rails:127:in run' /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/command.rb:211:inrun’
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.0.1/bin/mongrel_rails:243
/usr/local/bin/mongrel_rails:16:in `load’
/usr/local/bin/mongrel_rails:16

w środowisku development też taki błąd wyskakuje?

nie

przepraszam napisałam że nie a jednak występuje.

FAILSAFE już mówi więcej :slight_smile: a błąd 500 może wiele czynników powodować:

http://mattwindsurfs.wordpress.com/2007/12/15/failsafe-in-my-rails-production-log/

http://www.hostingrails.com/1204/Updating-Doesnt-Work

z tego co zauważyłem to dużo ludzi skarży się na dispatchera

http://dev.rubyonrails.org/ticket/9630

ale mi zdarzyło się z różnych powodów, nawet złego kodowania pliku, niewłaściwej wersji gema czy railsów, niekompletnej instalacji. Najczęściej pojawiał się przy złym przekierowaniu przez apacha na katalog.

Chodziło mi o zapis błędu z loga server.log

spróbuj uruchomić mongrela z opcją “-B”

i zajrzyj do twoich logów głównego serwera (jesli posiadasz), np wspomnianego apache, nginx

wydaje mi się że w logach jest wszystko OK. Zastanawiam się jeszcze nad plikiem environment.rb.
jak powinny być ustawione :session_key i :secret ?

[code=ruby] # Your secret key for verifying cookie session data integrity.

If you change this key, all old sessions will become invalid!

Make sure the secret is at least 30 characters and all random,

no regular words or you’ll be exposed to dictionary attacks.

config.action_controller.session = {
:session_key => ‘_test_session’,
:secret => ‘7e2044bed14acc10e94a8180192a1dd99a0f5306a5484bd4620a3d535e29e5fa0c50bcf346d4a316305aa5429a367173f737b10bcbb8768c7fb31e4cee48a5c7’
}[/code]
ale to jest z 2.2.2 nie wiem czy tak samo jest w 2.1.0

Może to przez tragicznie starego Mongrela?..

ja mam tak ustawione

config.action_controller.session = {
:session_key => ‘_<%= app_name %>_session’,
:secret => ‘<%= app_secret %>’
}

ale nie wiem czy to dobrze czy źle.

Sprawdź :slight_smile: użyj kodu który podałem.

W ogóle to erb w envorment.rb ? Wydaje mi się że nie.