CMS Eleanor - Поиск
Полная версия этой страницы: Официальный форум Eleanor CMS » Автоматическое обновление системы
Официальный форум Eleanor CMS » Проект Eleanor CMS » Обсуждение проекта
Страницы: 1, 2
Alexander
Меня все чаще спрашивают: когда будет реализована функция автоматического обновления системы, чтобы не перекачивать архив, а в админке щелкнуть ссылку и получить новый функционал. Этот вопрос заставляет меня каждый глубоко задуматься над реализацией такой "фишки"... Но есть ряд проблем, которые не позволяют мне даже представить такую функцию. Пока я не вижу способов автообновления системы, поскольку сразу после того, как система установлена на рабочий сайт, она в 90% случаев подвергается изменениям внутри себя: владелец хочет изменить шаблон, подкорректировать работу модуля, базы данных и т.п.

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

  1. Обновить только ядро системы. Так поступать нельзя потому что администратор сайта волен менять и ядро системы, как ему угодно. Но даже и без этого, в ядре могут произойти изменения, которые повлекут за собой изменение и кода модулей.
  2. Заменить только те файлы, которые администратор сайта не менял. А что делать с теми, которые он менял?
  3. Написать код системы так, чтобы изменять содержимое файлов было не нужно, а все можно было сделать путем вкраплений в определенные файлы. И как Вы себе это представляете? Да, я знаю, что можно использовать к примеру это или расставлять свои подобные костыли... Но такой подход неизбежно ведет к усложнению разработки под систему нового функционала, увеличению объема мертвого кода и к замедлению выполнения скриптов, плюс ко всему я не уверен на 100%, что с такими костылями можно серьезно жить.
  4. Сделать эту опцию для тех, кто не изменяет ядро системы. Такой подход не есть решением проблемы. Такие пользователи могут вручную заменить все файлы. Я ищу красивое решение, а не ограниченное и со звездочками.


Поделитесь, пожалуйста, своими соображениями по существу.
lestatbbk
Автообновление как "фишка" очень классная штука!
К примеру, в том же Wordpress присутствует, а вот в ядро мало кто лазит. Если уж и поправил что-то для себя - автообновление является не приемлемым и администратор знает, что могут возникнуть проблемы да и терять свои изменения не очень хочется!

В нашем случае, думаю, что лучше всего сделать уведомление (только админу) о том, что есть обновление и прямую ссылочку/ссылочки на архив/ы
(т.е к примеру у меня utf8 версия).
-------------------------------------------------
"Доступно обновление Eleanor CMS"
"Версия: 1.0 alpha #10"
"Описание: исправление сущ. замечаний
"Рекомендуемое обновление: <a href="{ссылка на utf версию системы}" alt="">utf8 версия</a> (если установлена cp1251 - предлагать соответсвующую версию)
-------------------------------------------------

по поводу 3 пункта, а зачем изобретать велосипед и создавать лишние проблемы?
для этого лучше использовать какую нить систему "версирования" файлов (svn/git), очень удобно.

я к примеру, на живом сайте не обновляюсь, всегда стягиваю рабочие файлы на локальный серв, сверяю версии файлов с оригинальным движком (через svn), произвожу все манипуляции (Merge) и после заливаю обратно
(а как на счет базы? - имею удаленный доступ к базе и обновляю с локального хоста)




Alexander
Сделать всплывающее окошко с информацией о том, что появилась новая версия - не проблема... Сделаем, если желающих много. Но вопрос все-таки был насчет автоматического обновления...
lestatbbk
Цитата (Alexander @ 2012-01-18, 3:25)
Сделать всплывающее окошко с информацией о том, что появилась новая версия - не проблема... Сделаем, если желающих много. Но вопрос все-таки был насчет автоматического обновления...


Как по мне, в нашем случае оно не приемлемо

а вообще, чтобы было всем хорошо

дать пользователю выбор

вывести такое окно или блок в самом лояуте админки, что доступно обновление (описание выше)
В это окно добавить кнопочку [Обновить]
по нажати - вывести уведомление красными буковками, что при обновлении будет произведена замена всех файлов Eleanor CMS кроме ваших шаблонов и ваших модулей

возможно, ввести систему версий для модулей, и как-то пробовать выключить модули не совместимые с текущей версией Eleanor CMS
Xenus
На данный момент автообновление нет смысл прикручивать, почему, обяснено по пунктам в первом сообщении этой темы.

Допустим, сейчас прикрутят автообновление, автоматом проверяется наличие более новой версии на сайте и если она есть, предлогает пользователю обновится. Пользователь дал добро - скачались новые файлы поверх старых (о этом естественно его заранее предупреждали), вроде бы всё нормально. А через день, юзер видит что у него пропала с сайта какая-нибудь сделанная им 100500 лет назад фича, о которой он благополучно забыл. И что ему теперь делать? Что правил и где он не помнит. В голову идут три решения:
  • откат;
  • идти к Alexander' у и просить помочь сделать то что нужно;
  • мучатся вспоминая как и что нужно поправить, чтобы сделать так, как было раньше;



Вот сейчас вышло обновление эльки, а я обновится не могу. Почему? Просто потому что много чего на сайте было изменено под личные нужды. Залить новые файлы поверх старых - нельзя, нужно сначала выяснить какие именно файлы обновились, потом внести в них все те изменения что я ранее вносил на своем сайте, и только после этого можно залить обновленные файлы. Эту задачу мог бы значительно упростить полный список изменений в файлах системы в сравнении с предыдущей версией, но этого нет. Могу сделать это для себя сам (чем скорей всего и займусь в ближайшее время), но это потребует некоторое количество времени.



Alexander
Xenus, запускаем svn сейчас - он решит эту проблему (со списком файлов и изменений в них). Но сейчас скажу так, что изменен в системе почти каждый файл, по крайней мере 80% файлов - точно. Что в таких условиях Вам бы дал список всех изменных файлов? Если я вижу такой список из 30+ пунктов, скорее всего я его закрою с мыслями "проще тупо заменить файлы и выловить ошибки".

Добавлено через 1 минут, 8 секунд:

Цитата (lestatbbk @ 2020-10-28 13:01)
по нажати - вывести уведомление красными буковками, что при обновлении будет произведена замена всех файлов Eleanor CMS кроме ваших шаблонов и ваших модулей

Это не решение. Такие пользователи могут самостоятельно заменить файлы системы.
lestatbbk
Цитата (Alexander @ 2012-01-18, 16:40)
Это не решение. Такие пользователи могут самостоятельно заменить файлы системы.


примерно так поступает Wordpress при обновлении на новую версию + выполняются дополнительные запросы в базу (если что-то добавилось)
Alexander
lestatbbk, скриншот можете сделать, как это происходит в WP?
lestatbbk
Цитата (Alexander @ 2012-01-18, 21:54)
lestatbbk, скриншот можете сделать, как это происходит в WP?

вот видео для наглядности

http://www.youtube.com/watch?feature=player_detailpage&v=Hw93494zxrg#t=12s
Djadka
Я бы представлял это так, что то типо система хранений версий.
То есть как только появляется обновление то скрипт сверяет файлы с текущий версией, которая используется пользователем, если всё тип топ то обновляем если нет, то выводим какие файлы отличаются от текущий версии то есть которые были изменены и тогда админ уже может сам решить обновлять их или нет, а все остальные обновлять. Но в тогда всё таки лучше уже чётко описывать что менялось или хотя бы какая функция изменена. Слияние кода проводить только по разным фрагментов точно приведёт к конкретным проблемам. По сути тот же 3 пункт что и у Александра.

В данном случае что бы всё обновлялось надо делать что бы всё новое капировалось из нового файла в старый, но тогда всё потрётся, что приведёт к весьма печальным последствиям. Поэтому не стоит обновлять файлы которые изменял админ, и к каждому файлу писать какой то минимальный репорт о том что менялось. Что бы админ сам мог поменять потом.
Alexander
Djadka, я так понимаю, наличие svn-а решит проблему автообновлений...
Djadka
ВОобще хотелось бы сделать раздел с примочками где можно было бы быстро ставить блоки и модули, что бы не надо было качать и ставить самому, то есть будет список всех блоков модулей разделёных по категориям может там ещё всякие примочки хаки будут отдельной категорией. А может вообще что бы была возможность отключение каких то модулей и блоков и примочек которые не надо, что бы лишний раз не тормозили систему.
7Azimuth
Цитата
дать пользователю выбор

вывести такое окно или блок в самом лояуте админки, что доступно обновление (описание выше)
В это окно добавить кнопочку [Обновить]
по нажати - вывести уведомление красными буковками, что при обновлении будет произведена замена всех файлов Eleanor CMS кроме ваших шаблонов и ваших модулей

Согласен с этой мыслью!
7Azimuth
В последней Джумле кстати, тоже есть такая возможность. Они вообще там дальше пошли и придумали даже кнопку для проверки обновлений для дополнений :)
Alexander
Красные буквы-преждения - не выход. Нужно более красивое решение, коего пока не предложили. Или все предложения сводятся к:
  • Уведомить пользователя о новой версии.
  • Предложить обновить.
  • Показать красную табличку с предупреждением о том, какие файлы будут заменены.
  • Заменить указанные файлы.

Ладно. Подумаем, как это все реализовать...
Интересный поднят вопрос. С моей точки зрения, необходимо писать систему полностью абстрагировавшись от ядра, чтобы у меня даже мысли не было лезть в ядро и что-то там менять (т.к. это "поле" разработчика системы). Соответственно, если держать такую линию - ядро уже можно обновлять безболезненно. Для того, чтобы не ломались модули и другие пользовательские дополнения, очевидно, что необходимо поддерживать существующий API в следующих версиях. Выходит, Александр, вопрос с системой автоматического обновления поднят слишком рано, т.к. система пока alpha и API, скорее всего, будет изменяться.
LuxCore
Сегодня покрутил в голове, как реализовать автообновление исходя из нынешней ситуации. Конечно же согласен с Александром, что вывод простого сообщения - фигня на постном масле. Вот как я вижу на данный момент эту ситуацию: показывать пользователю, а точнее админу окошко "Diff", наподобие SVN`овского и построчно пользователь сможет анализировать и тут же заменять необходимые ему строки кода (не малина, конечно, но считаю мыслью мозгового штурма :) ).
Тем не менее буду думать со всеми вами дальше об автообновлении.
Djadka
Обновление штука сложная, учитывая, что система может меняться из вне, а не изнутри, то есть сделать систему, которая могла бы только меняться изнутри и не как нельзя было бы править файл из вне, что бы система могла контролировать свои файлы и в случае каких то косяков откатываться, да звучить конечно архи глобально, но всё таки стоит задумываться, орагнизовывать SVN на PHP это не очень, и мергить файлы в админке тоже как то не очень, этим должен заниматься сам СВН. Пока бы стоит сделать инсталлер модулей. На данный момент начал разрабатывать модуль переводов статичных файло системы, что находяться сейчас в виде массивов, что бы можно было бы из админке делать, а не править всё ручками, так как бывают такие ситуации что пользователю это не обходимо. И вообще клиент не должен знать пхп что бы работать с системой, вот в меню модуле это можно встретить, что бы сделать пункт в меню ведущий на какой то модуль не обходимо писать клиенту PHP, а если это блондинкО, то выходит надо уже отказываться от системы, так как тут нужны уже не примитивные знания. Для меня лично кажется, что систему надо строить, так что она будет расчитана, на весьма не образованых и не далёких людей, так организую такую систему мы избавляемся от многих проблем.
LuxCore
Для "блондинок" это вы хорошо и полезно сказали, но иногда и в блондиночных галочках теряешься. Вот у меня, например, постоянная потребность залезть вовнутрь, мне трудно бывает работать, если не знаю как устроено. Даже не зная язык PHP, я всё равно лезу, ищу, меняю. Поэтому делать систему для "блондинок" не есть оптимально.
Djadka
Не есть оптимально, когда тебя дёргают по каждой мелочи. А что там надо вставить где написано PHP код, я не понимаю. И оптимальности должно быть столько, что бы не надо было меня внутрености, что бы можно сказать каждая мелочь была бы настраиваемая без всяких на то лазаний в ядро. Вы же не лезет в виндовс что бы понять как он работает, да и это не возможно, всё решает куча настроек и патчей, да конечно можно залезть в реестр и конкретно всё заточить и переточить, но опять же это только настройки, а не сама реализация.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.