Есть ли способ для приложения ruby ​​on rails для поддержки сетевых обновлений, как это делает Wordpress? - PullRequest
4 голосов
/ 16 сентября 2010

Я уже некоторое время использую Wordpress, он установлен на моем собственном сервере, и одна из функций, которые мне больше всего нравятся, это то, как каждый раз, когда появляется новая версия, он предупреждает вас внутри веб-администратора приложения и с помощьюодним щелчком мыши я могу обновить приложение.Мне не нужно находиться рядом с консолью.

Лично я не возражаю против обновления вручную, но я вижу, как это может существенно повлиять на принятие части программного обеспечения.Я работаю над созданием полнофункционального программного обеспечения ruby ​​на форуме rails, и мне очень хотелось бы выяснить, как включить эту функцию.Есть идеи, если это можно сделать с помощью rails?

Может ли приложение rails изменить свои собственные файлы?Если это произойдет, потребуется ли перезапуск сервера?

Чтобы еще больше усложнить ситуацию, что делать, если приложение было развернуто из репозитория.Может ли приложение rails регистрировать коммит после обновления?

Может быть проще упаковать ядро ​​приложения в самоцвет?Тогда, возможно, обновление фактически не изменило бы стек MVC rails (приложение rails было бы просто суперосновным), вместо этого, если бы форум содержал весь гем, все, что ему нужно было сделать, это вызвать обновление gem [имя].,Если это произошло, я не думаю, что Gemfile даже нужно будет обновлять.Требуется ли перезагрузка сервера для загрузки обновленного гема?

Идеи или отзывы по этому поводу?

1 Ответ

2 голосов
/ 16 сентября 2010

Файлы Rails могут быть изменены и даже удалены на производстве - в моем случае приложение все еще работает без изменений, поскольку все классы кэшируются в памяти. Это означает, что экземпляры Rails должны быть перезапущены, чтобы принять новое изменение.

Я предполагаю, что WordPress - это Perl через CGI, и вы просто помещаете приложение в веб-каталог, чтобы оно работало немедленно - так же, как и с обновлениями - просто перезаписываете файлы, и Apache сразу же забирает их.

В случае с Rails вы не знаете целевой архитектуры развертывания, поэтому перезапуск приложения может быть не тривиальным. Например. с пассажиром я могу просто сделать touch tmp\restart.txt, и тогда все экземпляры будут убиты и начаты снова. В некоторых развертываниях может потребоваться запуск перезапуска сценария init.d.

Возможно, вы могли бы порекомендовать или подготовить готовую к использованию модель развертывания, которая поддерживает автообновление. В других случаях пользователи могут делать обновления вручную.

...