как Вы эффективно отлаживаете на живом сервере в направляющих, ли на бете/рабочем сервере?
Я пытался изменить файл непосредственно на сервере и перезапустить приложение, но изменения, кажется, не вступают в силу или занимают много времени к (кэширование?)
Я также пытался сделать "производство сценария/сервера" локально, но это очень медленно
Другая опция состоит в том, чтобы кодировать и развернуться, но это очень неэффективно.
У кого-либо есть какое-либо понимание относительно того, как они делают это эффективно?
Я отвечу на ваш вопрос, даже если я не согласен с таким способом исправления кода сервера :)
Во-первых, вы действительно уверены, что перезапустили сервер? Вы можете проверить это, просмотрев файлы журнала.
Представление, отображаемое измененным кодом, может быть кэшировано. Кэшированные страницы находятся в папке tmp / cache
. Вы можете попытаться удалить файл вручную или rake tmp: cache: clear
, и все они будут удалены. В любом случае, вы можете точно увидеть, что происходит, следя за своим файлом log / production.log
(он скажет вам что-то вроде «рендеринг кешируется ...»).
Еще один момент: некоторые данные также хранятся в сеансе. Вы также можете попытаться удалить свой сеанс (или удалить все сеансы; например, если вы сохраняете свои сеансы в БД, вы можете запустить rake db: sessions: clear
)
Чтобы запустить локальный сервер в режиме производства, попробуйте:
RAILS_ENV=production script/server
или
script/server --environment=production
Проблема в том, что если вы не используете сервер webrick/mongrel в реальном производстве, это не будет точно дублировать вашу реальную производственную конфигурацию (предположительно использующую Apache или Passenger?). Также могут быть тонкие различия в окружении, которые могут быть причиной ваших проблем.
Как вы перезапускаете производственную среду, когда что-то там меняете? Это зависит от способа развертывания, и это может быть как просто бросить файл restart.txt в /tmp вашего приложения, так и сложно (не совсем) перезапустить Apache или процессы Mongrel, обслуживающие ваше приложение. Кажется странным, что ваши изменения долго не появляются, когда вы это делаете.
Когда проблема возникает в производственном режиме, я просто проверяю production.log, который обычно указывает мне направление исправления. Я реализую его в разработке, а затем перераспределяю. Обычно это помогает решить проблему. При использовании Capistrano требуется всего 3 команды (commit, push и deploy), если только ваша установка не намного сложнее моей.