I was facing a strange problem. My application was working fine, but after some time it stopped to respond. It just returned error code 500. No error message on the screen, no error message in the error log, everything seemed to be fine.
I found few hints on the internet – reboot, delete all sessions… One of them recommended to run script/console. It worked fine, until I tried to get any data. Finally I got the error message:
Logger::ShiftingError: Shifting failed. closed stream
from f:/win32app/ruby/lib/ruby/1.8/logger.rb:501:in `write'
from f:/win32app/ruby/lib/ruby/1.8/monitor.rb:238:in `synchronize'
from f:/win32app/ruby/lib/ruby/1.8/logger.rb:496:in `write'
from f:/win32app/ruby/lib/ruby/1.8/logger.rb:326:in `add'
from f:/win32app/ruby/lib/ruby/1.8/logger.rb:348:in `debug'
from f:/win32app/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/abstract_adapter.rb:126:in `log_info'
from f:/win32app/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/abstract_adapter.rb:119:in `log'
from f:/win32app/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/mysql_adapter.rb:184:in `execute'
from f:/win32app/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/mysql_adapter.rb:331:in `connect'
from f:/win32app/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/mysql_adapter.rb:87:in `initialize'
from f:/win32app/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/mysql_adapter.rb:36:in `new'
from f:/win32app/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/mysql_adapter.rb:36:in `mysql_connection'
from f:/win32app/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/abstract/connection_specification.rb:251:in `send'
from f:/win32app/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/abstract/connection_specification.rb:251:in `connection_without_query_cache='
from f:/win32app/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/query_cache.rb:54:in `connection='
from f:/win32app/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/abstract/connection_specification.rb:220:in `retrieve_connection'
from f:/win32app/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/abstract/connection_specification.rb:78:in `connection'
from f:/win32app/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:764:in `sanitize'
from f:/win32app/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:950:in `find_one'
from f:/win32app/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:941:in `find_from_ids'
from f:/win32app/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:382:in `find'
from (irb):1>> exit
And the problem was almost solved – problem with log rotation.
So, if you face the same problem, try to perform few operations in your rails console… and if you are lucky, you will find the bug.