Ошибка входа в Rails: «Ошибка при отказоустойчивом ответе: ошибка при перемещении». ... есть ли элегантное решение для этого? - PullRequest
2 голосов
/ 03 августа 2010

Я настроил мой регистратор Rails 2.3.8 в среде environment.rb на ежедневное вращение:

config.logger = Logger.new("#{RAILS_ROOT}/logs/#{RAILS_ENV}.log", 'daily')

, и каждый день утром я получаю обычное значение:

Error during failsafe response: Shifting failed.

Есть ли приличное / элегантное / лучшее решение для этого?

То, что я делал в прошлом, просто настроил работу cron, чтобы замечать, когда это происходит, и сбрасывал Пассажира restart.txt файл в каталоге приложения tmp /.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 03 августа 2010

В UNIX / Linux довольно распространено использовать программу с именем logrotate для ротации файлов журнала. У Slicehost есть пара хороших статей о том, как его использовать.

Для развертывания Phusion Passenger вы можете использовать конфигурацию, подобную приведенной ниже. Очевидно, отрегулируйте каталоги и частоту вращения соответствующим образом.

/home/deploy/public_html/railsapp/shared/log/*.log {
  weekly
  missingok
  rotate 30
  compress
  delaycompress
  notifempty
  sharedscripts
  postrotate
    touch /home/deploy/public_html/railsapp/current/tmp/restart.txt
  endscript
}
1 голос
/ 02 февраля 2012

Если у вас много запросов, приходящих одновременно, и Rails пора чередовать журналы.Если поток пытается записать в файл (в коде logger.rb есть строка с текстом: @ dev.stat.size), а когда файл не существует (потому что он вращается), он создает фатальное исключениеи в основном сервер перестает отвечать на запросы (он не обязательно выключается, но бомбит запросы).

...