Я унаследовал проект от разработчика, с которым больше не могу связаться. Это проект Ruby on Rails, размещенный на Linode, с SVN в качестве vcs.
Я могу подключиться к серверу по протоколу SFTP и изменить файлы, но изменения не отображаются на сайте, пока я не войду по ssh и не перезагружу сервер. Это не изменения в файлах конфигурации, а просто изменения в некоторых представлениях erb.html.
В моем предыдущем опыте использования git с Linode я просто нажимал кнопку, и изменения отображались в реальном времени. Может, старый разработчик что-то настраивал с помощью svn-хука?
Вам действительно не нужно перезагружать сервер, особенно с проектом Rails. В худшем случае вы можете захотеть перезагрузить выбранный вами Apache / Nginx / Webserver, но на самом деле вы можете просто перезапустить свой проект изнутри.
Вы можете сделать одно из двух. Предполагая, что ваш проект обслуживается Phusion Passenger, вы можете добавить привязку фиксации к своему репо на сервере, чтобы перезагрузить приложение ...
cd /wherever/your/svn/repository/is/hooks
touch post-commit
chmod 755 post-commit
а потом
#!/bin/sh
#post-commit hook. This will force Phusion to reload your RoR project
echo "Some message. Just letting you know I'm doing my job"
/bin/touch /wherever/your/project/is/tmp/restart.txt
Или перезагрузите веб-сервер (вам нужно убедиться, что у вас есть права sudo-without-password, иначе это не удастся. Это также вызовет обновление, даже если вы не используете Phusion)
#!/bin/sh
#post-commit hook. This will reload the webserver, forcing everything to reload.
echo "Some message. Just letting you know I'm doing my job"
sudo /sbin/service whatever-your-webserver-init-is reload
И привет. Теперь ваш проект перезагружается при фиксации, и вы должны сразу увидеть свои изменения * (после перезагрузки страницы).
* эти хуки предназначены для SVN. Они могут работать в Git, кто знает, пока вы не попробуете. Кто-то может захотеть проверить меня, если я ошибся
Я могу думать о двух возможностях, которые могли вызвать это:
stat
настройка переключена на Off
. Не будучи достаточно знакомым с Ruby, я могу только догадываться, что есть встроенный кеш OpCode и что перезапуск всего сервера очищает кеш. Возможно, вы сможете обойтись простым перезапуском HTTP-демона.Хук после фиксации SVN, безусловно, может использоваться для того, что здесь делается, даже до перезагрузки сервера, но я бы предостерегал от этого. Развертывание кода на производственном сервере - это то, над чем вы должны иметь определенный контроль, и это должно быть отделено от процесса разработки. Мысль о том, что разработчик что-то совершает и автоматически и мгновенно развертывает, вызывает у меня хиби-джиби.