Отладка на рабочем сервере в Rails - PullRequest
5 голосов
/ 21 мая 2010

как вы эффективно отлаживаете на живом сервере в рельсах, будь то на бета / производственном сервере?

Я пытался изменить файл непосредственно на сервере и перезапустить приложение, но изменения, похоже, не вступили в силу или занимают много времени (кэширование?)

Я также пытался выполнять «производство скриптов / серверов» локально, но это очень медленно

Другой вариант - кодировать и развертывать, но это очень неэффективно.

У кого-нибудь есть идеи относительно того, как они делают это эффективно?

Ответы [ 2 ]

7 голосов
/ 21 мая 2010

Я отвечу на ваш вопрос, даже если я не согласен с таким способом горячей установки кода сервера:)

Во-первых, вы действительно уверены, что перезапустили сервер? Вы можете проверить это, следя за файлами журнала.

Вид, отображаемый вашим измененным кодом, может быть кэширован. Кэшированные страницы находятся в папке tmp/cache. Вы можете попытаться удалить файл вручную или вы можете rake tmp:cache:clear, и все они будут удалены. В любом случае, вы можете точно увидеть, что происходит, подключив файл log/production.log (он скажет вам что-то вроде «рендеринга в кэше ...»).

Еще один момент: некоторые данные также хранятся в сессии. Вы также можете попытаться удалить ваш сеанс (или удалить все сеансы; например, если вы храните свои сеансы в БД, вы можете запустить rake db:sessions:clear)

2 голосов
/ 21 мая 2010

Чтобы запустить локальный сервер в производственном режиме, попробуйте:

RAILS_ENV=production script/server

или

script/server --environment=production

Проблема заключается в том, что если вы не используете сервер webrick / mongrel вфактическое производство, при этом точно не будет дублировать вашу фактическую конфигурацию производства (предположительно, с использованием Apache или Passenger?).Также могут быть небольшие различия в средах, которые могут вызывать ваши проблемы.

Как вы перезапускаете свою производственную среду, когда там что-то меняете?это зависит от того, как вы развернули, и это может быть так же просто, как сброс файла restart.txt в / tmp вашего приложения, или так же сложно (не совсем), как перезапуск Apache или процессов Mongrel, обслуживающих ваше приложение.Кажется странным, что ваши изменения появляются долго, когда вы делаете это.

Когда возникает проблема в производственном режиме, я просто проверяю production.log, который обычно указывает мне направление исправления.Я внедряю это в разработку, а затем заново внедряю.Это обычно заботится о вещах.При использовании Capistrano требуется всего 3 команды (фиксация, push и развертывание), если ваша установка не намного сложнее, чем моя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...