Ошибка import_script vBulletin при импорте дочерних категорий

Уважаемые коллеги,

Прежде всего, огромное спасибо Discourse. Discourse — это произведение искусства и очень впечатляет. После более чем десятилетия работы с vBulletin мы не могли найти другое форумное ПО для миграции (все было «как всегда, как всегда»… скучно), пока не появился Discourse. СПАСИБО

В настоящее время я нахожусь в режиме тестирования, импортирую данные из vB 3.8.X в последнюю версию Discourse в docker-контейнере, и это мой первый опыт с обоими. Фактически, до этой недели я даже не думал, что напишу хоть одну строку на Ruby, но Discourse настолько хорош, что оно того стоит.

Скрипт импорта vbulletin.rb работает уже день или около того, и в основном всё работает отлично. На самом деле, это чрезвычайно впечатляет. Несколько раз возникала ошибка, но после перезапуска скрипта ошибка исчезала.

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


Traceback (most recent call last):

5: from script/import_scripts/vbulletin.rb:942:in `<main>'

4: from /var/www/discourse/script/import_scripts/base.rb:47:in `perform'

3: from script/import_scripts/vbulletin.rb:84:in `execute'

2: from script/import_scripts/vbulletin.rb:287:in `import_categories'

1: from script/import_scripts/vbulletin.rb:287:in `each'

script/import_scripts/vbulletin.rb:289:in `block in import_categories': undefined method `[]' for nil:NilClass (NoMethodError)

root@localhost-app:/var/www/discourse# su discourse -c 'bundle exec ruby script/import_scripts/vbulletin.rb'

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

Есть ли какие-либо предложения по лучшему способу исправления, кроме моей глупой идеи новичка выше?

Если нет, я планирую просто снова сделать дамп, внести изменения вручную в БД и выполнить миграцию заново, что, я уверен, тоже является глупым способом решения проблемы для новичка.

Спасибо!

Возможно, стоит сначала обновиться хотя бы до vB 4… импортер в основном ориентирован на версии 4.x.

Насколько глубоко вложены ваши категории? Если у вас всего один или два уровня, просто закомментируйте код сглаживания в строках 287–291.

Нет. Я этого не сделаю (обновление до vB4).

Я уже закомментировал проблемные строки вчера.

Мой вопрос сводится к тому, чтобы исправить это для vB 3.8, иначе я просто исправлю это сам. Я сообщил об «ошибке» в коде в этом сообщении, и если я не получу ответ с «исправлением ошибки в коде», я сам внесу исправления.

Именно поэтому я опубликовал этот баг здесь :). Это отчёт об «ошибке» в коде. В коде есть «баг», и я сообщил о нём…

Хм. Я пытался быть «общительным» и опубликовать баг здесь, надеясь получить предложения от разработчиков (кода), которые подойдут для моего случая (не для случая vB4); и ещё раз извините, но я не буду обновляться до vB4 ни при каких условиях. Извините за прямоту и за то, что не последовал этой идее. Я модифицирую скрипт миграции по мере необходимости и изменю нашу БД, как потребуется. Пока что я уже добавил код для пользовательских тегов кода и т.д.

Всего наилучшего.

Как один из участников импортера для vBulletin, автор импортера для VB 5 и специалист, выполнивший более 50 конвертаций из vB в Discourse, я просто поделился информацией о том, что импортер в основном тестируется на vB 4, а не на 3.8, который находится в конце жизненного цикла уже более 7,5 лет. Я не пытался вас «произвести впечатление»…

В любом случае. Мне интересно, является ли это ошибкой в импортере, проблемой, связанной с vB 3.x, или поврежденной базой данных. Я подозреваю, что более вероятны последние варианты. Вы можете изменить код, чтобы выбирать категорию по умолчанию в случае, если функция обнаружения не возвращает результат, но (по крайней мере) на vB 4 это указывало бы на «висячую» категорию без правильного родителя, то есть на поврежденную базу данных.

В нашей базе данных ничего не сломано, и это может быть, а может и не быть проблемой vB 3.8.X. Но, конечно, это связано с vB 3.8.X, потому что это обновление с vB 3.8.X, LOL.

С другой стороны, я читал множество постов в интернете на других форумах, где много людей сталкиваются с проблемами при миграции на Discourse, даже с vB 4. (Это нормально) Так что, конечно, я не единственный человек на планете, сообщающий об ошибках миграции. Никто не любит миграцию. Это скучно для всех. Но я в порядке, потому что мне нравится Discourse. Парни, которые его написали, — художники! Они впечатляют.

Как я уже говорил, «слабый подход», который точно сработает, — это просто снова выгрузить нашу БД, вручную изменить все дочерние форумы, которые мы хотим сохранить, на родительские и выполнить миграцию снова. Я не хочу «тему по умолчанию» для важных дочерних форумов, и все наши основные форумы являются дочерними, а не родительскими.

@michaelp, если у вас нет опыта или интереса к обеспечению работы этого скрипта с устаревшими версиями vB 3.8.X, это вполне понятно. Но с другой стороны, у меня также есть десятки лет опыта в написании кода, портировании, миграции, создании и исправлении ошибок, и я опубликовал отчёт об ошибке здесь, в Meta Discourse, касательно этого кода. Я люблю vB 3.8 и до сих пор считаю, что это был более приятный форум, чем vB 4 и vB 5. Именно поэтому я никогда не обновлялся до vB 5 или vB 5. Нам не нравятся vB 4/5. :slight_smile:

Если это превратится в обсуждение «ну, это не vB 4 и не vB 5», то мне лучше не публиковать здесь больше никаких отчётов об ошибках миграции и стать более активным после завершения миграции.

С уважением.

Я буду вести здесь учёт и пока прекращу это обсуждение, просто сделаю это: Under Consideration: Migrate the Forums to Discourse - Migration to Discourse - Unix Linux Community

Нет, это не так. Я просто пытался помочь вам и найти путь миграции с минимальными усилиями для вас. Извините, если моим честным ответом я вас обидел. Видимо, я задел больное место. Не хотел этого.

Удачи с миграцией! Возможно, когда вы закончите, вы сможете создать pull request с вашими улучшениями.

Никаких проблем, @michaeld.

Большое спасибо за написание скрипта миграции vbulletin.rb.

Я понимаю, что вы пытались помочь, и да, ваше предложение «мигрировать на vB4» действительно задело меня; но никаких обид. Иногда я легко могу «застрять в неудобной ситуации», особенно когда сообщаю об ошибке, а получаю ответ, который не помогает (в моей конкретной ситуации / случае).

На самом деле, если этот порт удастся (я всё ещё переносим данные), я буду вам (и всем соавторам) очень благодарен за основной скрипт vbulletin.rb!

Discourse действительно ПРЕВОСХОДЕН!!

Ещё раз спасибо за скрипт миграции. Без него мы бы точно не начали этот трудоёмкий процесс!

Спасибо ещё раз!

PS: Как я уже упоминал, мой план для этого «исправления» — просто выгрузить базу данных, изменить важные дочерние форумы на родительские и «сыграть это снова, Сэм»… :slight_smile:

Для ясности: я не писал весь файл vbulletin.rb, я лишь внёс в него свой вклад. А вот vbulletin5-specific версию я написал сам.

В любом случае, СПАСИБО.

Оба вклада solid и являются подарком для сообщества форумов.

Я буду публиковать любые обновления миграции vB3.8.X “там”, где я веду хроник событий по мере их разворачивания.

С наилучшими пожеланиями


Единственное «предостерегающее» замечание, которое у меня пока есть, заключается в том, что из двух людей со «стороны Discourse», с которыми я пока взаимодействовал, оба «протягивали руки», стремясь заработать на этой миграции. Один парень был наёмным «экспертом по миграции», который хотел денег за помощь мне, а другой человек был из форумов Discourse, третий — провайдер серверов Discourse.

Это меня очень огорчает. Я пытался помочь вам без какой-либо коммерческой выгоды.

Да, это не совсем честно @neounix

@michaeld очень активен в сообществе Discourse и отдаёт много всего всем в духе открытого исходного кода. Это особенно ценно, поскольку они (Communiteq (ранее DiscourseHosting)) размещают множество сайтов на базе Discourse по очень разумным ценам и обладают огромным опытом реального хостинга Discourse. :revolving_hearts:

Привет, Джефф,

Недавно я создал несколько решений на Node-RED и присоединился к форуму Node-RED (который работает на движке Discourse).

На этом форуме все активно помогают друг другу. От новичков до экспертов — каждый с энтузиазмом поддерживает остальных. Иногда это даже кажется немного «тестостероновым»: многие опытные участники соревнуются за звание «лучших помощников» и «первооткрывателей ответов». Это интересно. Я видел подобное в онлайн-сообществах и раньше, включая наше, на протяжении последнего десятилетия (но это уже другая история).

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

Конечно, я очень ценю вклад @michaeld, и скрипт vbulletin.rb стал очень полезной и долгожданной отправной точкой для миграции устаревшей системы к тому «произведению искусства», которое вы создали — Discourse. Discourse действительно великолепен. Я ждал чего-то столь же великого годами, и поэтому мы, к сожалению, застряли на vB3. Я не настолько skilled-программист, чтобы создать что-то вроде Discourse самостоятельно.

Тем не менее, я признаю свою вину (и готов принять любое наказание) за то, что почувствовал себя отвергнутым и неуважаемым, когда отправил отчёт об ошибке во время тестовой миграции, а затем получил, как мне показалось, холодный приём. Ещё больше меня оттолкнуло то, что мой отчёт об ошибке был перемещён из категории «ошибка» в категорию «поддержка», хотя в скрипте vbulletin.rb явно есть баги. Предложение мигрировать с идеально работающего форума vB3 на ужасный vB4 только ради того, чтобы скрипт работал лучше, — это тупиковый путь (и, честно говоря, это меня оттолкнуло). Пока что никто не воспринимал мои отчёты об ошибках всерьёз и не проявлял интереса к их исправлению. Так что, пожалуй, не стоит отправлять отчёты об ошибках, связанных с миграцией с vB3, верно?

Но это не проблема. Например, текущий скрипт миграции vbulletin.rb (в приложении миграции) требует таблицы filedata, которой не существует в vB3. Это не проблема. Я создам обходное решение. Есть ошибки в процессе миграции из forums в categories. Я уже создал для этого обходное решение. Возможно, моё решение не идеально, но это нормально. Я всё ещё тестирую.

Давайте не будем превращать это в обсуждение личностей. Я занимаюсь миграцией. Это большая работа, и идёт она медленно, как сохнет краска; но с другой стороны, это волнующе видеть, как Discourse оживает. Я действительно в долгу перед этим сообществом и обязательно внесу свой вклад, когда пройду через эту «не очень весёлую фазу» и перейду к «весёлой фазе», это точно.

Я очень ценю Discourse — это произведение искусства, отличный продукт с открытым исходным кодом. Это гениально. Спасибо. И скрипт миграции, хоть и с некоторыми багами для vB3, вполне работоспособен; и я очень благодарен за эту отправную точку для миграции.

Мне жаль, что вы считаете мои комментарии несправедливыми. Это моя вина, потому что я только что вышел из нескольких недель интенсивного общения на форуме Node-RED, где сообщество обладает таким замечательным настроем на помощь другим, что мой первоначальный опыт с несколькими участниками Discourse, у которых есть коммерческие интересы, меня оттолкнул. Пока что это моё впечатление. Извините за такое первое впечатление «здесь» по сравнению с «там». Именно Node-RED и их использование Discourse убедили меня перенести наш сайт на Discourse.

Хотя вы можете считать мои первые впечатления несправедливыми, я не называл никаких имён и держу свои впечатления анонимными, что, как мне казалось, было справедливо на тот момент. Кроме того, учитывая, что мой отчёт об ошибке был по сути проигнорирован meta (мол, это ведь только vB3, LOL), что, по-вашему, было бы справедливо? Хотите, чтобы я удалил свой «предупреждающий» комментарий о коммерческих интересах?

Я выполняю работу по миграции, и она движется вперёд, несмотря на баги в скрипте, потому что баги — это просто баги, их нужно исправить и двигаться дальше.

Приношу извинения, если во время этого спонтанного тестового переноса, после такого живого и поддерживающего опыта в Node-RED, я не был так впечатлён, как в сообществе NR на Discourse. Но, как ответил мне @michaeld, ему всё равно, впечатлён я или нет; и это нормально. Каждый имеет право на своё мнение. Я предполагаю, что это касается и моего первоначального мнения/впечатления, верно?

Я очень положительно впечатлён Discourse, и, хотя скрипт vbulletin.rb содержит баги, он работает достаточно хорошо для начала и для того, чтобы получать удовольствие, а это самое главное, не так ли?

Нам должно быть весело!

Мне было бы немного приятнее с meta, если бы вы относились к моим отчётам об ошибках в скрипте vbulletin.rb более серьёзно; но, с другой стороны, я понимаю. Мы на vb3, и послание звучит как «ты сам по себе, приятель», и это вполне понятно. Я понимаю.

Никто больше не считает vB3 весёлым. LOL Особенно Я после более чем десяти лет, и я так счастлив и благодарен за Discourse, чтобы наконец уйти с этого устаревшего, ушедшего в прошлое форума и перейти к этому произведению современного онлайн-искусства, Discourse.

Просто дайте знать, если хотите, чтобы я удалил свой комментарий «просто слово предостережения», и я сделаю это, если вы действительно считаете, что после этого ответа он всё ещё несправедлив. Мне кажется, он был справедливым, но я также приветствую внешнюю точку зрения. Внешние взгляды хороши и обычно очень полезны (и это работает в обе стороны, надеюсь).

Всего доброго.

Поверьте, я полностью за перенос сообществ с устаревшего программного обеспечения. Это одна из основных целей Discourse.

Если результаты будут положительными и вы сможете предоставить доказательства того, что всё работает, мы можем поддержать вашу работу по разработке скрипта миграции VB3 → Discourse финансовой грантовой помощью от Discourse :hugs:

Привет, Джефф,

Спасибо за предложение, но я в порядке, правда; и мне не нужна финансовая поддержка.

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

Наш сайт, согласно моим быстрым подсчётам, за многие годы — от рождения, через пик и до «почтенного возраста» — показал контент в результатах поиска более чем 500 миллионам уникальных незарегистрированных пользователей, возможно, даже больше; я не слежу за этим так пристально.

Этой «хорошей кармы» мне достаточно, зная, что мы помогли стольким нуждающимся за долгие годы в IT-сфере. Именно в этом суть для меня (и, полагаю, для тебя тоже): дело не в деньгах, а в «хорошей карме» помощи другим на техническом форуме. Поэтому, когда мы обновим его до Discourse, это станет лучше для всех, наверняка. Я никогда не смог бы написать такое произведение искусства, как Discourse. Я по профессии универсальный дилетант, специалист по кибербезопасности и инженер систем, и в основном счастливо ушёл из общественной и профессиональной жизни.

Первая тестовая миграция прошла гораздо лучше, чем ожидалось. Я нашёл несколько багов и некоторые вещи, которые являются уникальными проблемами нашего сайта, например, кастомные теги BBCODE. Я справлюсь со всем, это не проблема; затем мне нужно настроить его под наше сообщество, так что впереди будет интересная работа, и я с нетерпением жду момента, когда перейдём от миграции 101.

Что касается vb3, то определённо существует множество устаревших сообществ vb3, и здорово, что ты заинтересован в помощи им. Я согласен, что vbulletin.rb пока недостаточно продвинут для управления миграциями для тех, кто менее технически подкован, чем мы; ведь я считаю ядро vbulletin.rb «достаточно хорошим», и я легко могу его модифицировать (и уже делаю это по мере возникновения ошибок).

Давай вернусь к работе над этим; мне нужно внести ещё несколько изменений в vbulletin.rb, чтобы учесть ошибки, которые я подробно фиксирую на нашем сайте по ходу дела. Мне нужно закончить это, и это будет сделано быстрее, если я просто сделаю это прямо сейчас.

Ещё раз спасибо за любезное предложение. Все заметки об этом, на каждом этапе пути — хорошие, «неидеальные» и отличные — будут по этой ссылке, которую я публиковал ранее:

Я с радостью вернусь к обсуждению в meta, как только завершу этот этап до конца, наши пользователи протестируют его и дадут нам обратную связь. Я уверен, что большинство захочет, чтобы мы перешли на Discourse и оставили наше устаревшее… месиво.

Снова спасибо за Discourse. Я не могу сказать достаточно хороших слов о вашем щедром подарке миру с открытым исходным кодом.

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

Ещё раз снимаю шляпу перед вами и командой Discourse за Discourse, и спасибо вам и вашей команде за базовый скрипт миграции vbulletin.rb. Баги — это вообще не проблема. Если бы всё было слишком легко, это было бы не так интересно!

На самом деле, миграция уже работает отлично, но мне нужно написать больше кастомного кода для наших кастомных тегов BBCODE, исправить несколько багов здесь и там и запустить всё снова!

Спасибо ещё раз!

С другой стороны,

@codinghorror

Если вы хотите, чтобы кто-то из вашей команды работал со мной над исправлением некоторых крупных ошибок, например ошибки filedata из-за отсутствующей таблицы в vb3, я с радостью помогу и даже замедлю процесс, чтобы это принесло пользу другим сообществам vb3 и сделало vbulletin.rb лучше для vb3.

Дайте мне знать. В целом я готов замедлиться и помочь, если подумать еще раз. Конечно, я не хочу казаться эгоистичным и не командным игроком в этой истории.

Честно говоря, я не великий коллаборатор в программировании, но готов попробовать, если это поможет другим пользователям устаревшей версии vb3.

Погодите. Во-первых, я этого не говорил. Я сказал, что не пытался вас «впечатлить», и это было ответом на ваше утверждение о том, что вы «не впечатлены моим ответом», которое вы затем удалили из своего поста. Повторюсь: это меня огорчает.

И неважно, впечатлены вы или нет, чувствуете ли вы холодное отношение или нет: вы за моей спиной заявили, что я «протянул руки, чтобы заработать на этой миграции», что просто не соответствует действительности. При этом вы много писали, но так и не опровергли факт того, что это ложь. Более того, вы это повторили. А фраза «мне жаль, что вы так чувствуете» не является извинением.

Я по-прежнему считаю, что это не баг, и полагаю, что проблема в том, как ваши форумы хранятся в базе данных: либо там есть что-то явно «неправильное», либо то, что было приемлемо в vB3, но не в vB4.

Я никогда не просил вас запускать vB4, я предложил вам перенести базу данных в него, а затем прогнать её через импортер. Это настоящий «юникс-стиль», когда несколько шагов объединяются в конвейер для достижения желаемого результата — на мой взгляд, самый короткий и дешёвый путь миграции.

Это правильный совет. Есть ли какая-то причина, по которой вы не можете обновиться до VB4? Потому что это может быть проще, чем писать новый конвейер миграции для VB3.

Майкл,

Сделайте нам всем одолжение и, пожалуйста, оставьте это.

Я читаю почти так же хорошо, как и любой другой, и вот что вы сказали:

Возможно, стоит сначала обновиться хотя бы до vB 4… импортер в основном ориентирован на версии 4.x.

Это совершенно не то же самое, что:

Я предложил вам перенести вашу базу данных на неё, а затем прогнать её через импортер.

Просто оставьте это, @Micheald.

Пожалуйста, прекратите эту мелкую перепалку. Пожалуйста.

Это совершенно бесперспективно.

Мне искренне жаль, если вы неверно истолковали моё предложение, и ещё больше жаль, что вы посчитали этот комментарий «бесплодным», хотя он был дан с добрыми намерениями.

Честно говоря, я никогда не стал бы советовать кому-либо запускать свой форум на vB4.

Я отпишусь от этой темы, так как считаю, что вы относитесь ко мне несправедливо.

Я не согласен. На самом деле, согласно нашей устаревшей панели управления членами vB, мы вообще не можем обновиться до vB4.

Очевидно, что поскольку наш сайт уже давно использует vB, мы должны иметь представление о том, как это работает на стороне vB.

Я уже упоминал, что обновление до vB4 для нас невозможно.

Это ни к чему не приведет (это как круговая перестрелка, LOL): сначала говорят «мигрируйте на vB4», потом — «давайте вместе поработаем над vB3 и повеселимся»… а потом, ох, подождите, «мы имели в виду «идите и мигрируйте на vB4, как вы сами говорили несколько дней назад, что это невозможно».

Здесь, в meta, это совсем не весело, LOL.

Давайте, пожалуйста, прекратим идеи типа «просто обновите вашу БД до vB4, и жизнь станет замечательной». Я уже четко сказал, что это невозможно и не произойдет.

ОЧЕНЬ ВАМ БЛАГОДАРЮ

Посмотрите сами… нет возможности обновиться до vB4… Это «не вариант», как я уже упоминал.

Это должно быть ясно из этого снимка экрана из панели управления на vB… :