Я использую скрипты миграции для переноса форума Vanilla 3 на самостоятельно размещённый Discourse.
Скрипт миграции работает корректно:
RAILS_ENV=production ruby script/import_scripts/vanilla.rb /shared/uploads/export.text
Единственная проблема в том, что после экспорта я не могу выполнить повторный импорт. Скрипт импорта успешно запускается во второй раз, но любые изменения данных, внесённые в файл импорта, не применяются. Кроме того, импорттер работает примерно в 50 раз быстрее при втором запуске, что заставляет меня подозревать, что на самом деле ничего не импортируется.
Вопрос: есть ли способ повторно запустить скрипты импорта, расположенные в
/var/www/discourse/script/import_scripts/
после первого запуска?
Конкретно: поскольку я исправляю ошибки в формате моего файла импорта, я хотел бы иметь возможность повторить импорт, чтобы обновлять только посты и обсуждения.
На данный момент единственным найденным решением было полностью удалить установку Discourse и начать заново, что занимает почти час каждый раз.
Есть ли какие-либо советы?
Вот соответствующий код из vanilla.rb:
def import_posts
puts "", "importing posts..."
create_posts(@comments) do |comment|
next unless t = topic_lookup_from_imported_post_id("discussion#" + comment[:discussion_id])
{
id: "comment#" + comment[:comment_id],
user_id:
user_id_from_imported_user_id(comment[:insert_user_id]) || Discourse::SYSTEM_USER_ID,
topic_id: t[:topic_id],
raw: clean_up(comment[:body]),
created_at: parse_date(comment[:date_inserted]),
}
end
end
Я программист, но не специалист по Ruby. Есть ли способ модифицировать этот код, чтобы принудительно заменять содержимое поста при повторном импорте?