Скрипты для перестройки сайта: какая площадка лучше?

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

В моём скрипте нет ни одного модульного теста. Хотя я в целом сторонник модульного тестирования и придерживаюсь этого мнения уже давно, у меня нет мотивации писать тесты для этого скрипта.

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

Учитывая эти ограничения, стоит ли отправлять этот скрипт в виде pull-запроса (PR)? Или сообщество предпочло бы, чтобы я опубликовал его в виде блока кода, возможно, в канале #documentation:sysadmin?

Моя главная цель — помочь всем остальным, кто пытается сделать что-то подобное. Кроме того, сами функции могут помочь пользователям понять, что делать в консоли Rails.

Я понятия не имею, что означает «перестройка сайта». Может быть, опубликовать сообщения в разделе Массовые административные операции?

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

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

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

Вопрос в следующем: как лучше всего поделиться им? В директории scripts/ я ничего подобного не нашёл (хотя, возможно, что-то упустил). Я понимаю, что к PR обычно должны прилагаться автоматические тесты (хотя не уверен, насколько строго это требование применяется к директории scripts/). При этом скрипт уже превышает 150 строк и продолжает расти, что кажется слишком большим для публикации здесь, где он занял бы гораздо больше места, чем стандартное окно кода.

Ой. Это было «maybe» (возможно), а не «MSN». :person_shrugging:

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

Создание отдельного проекта на GitHub — это лучший путь. Также обязательно создайте тему об этом инструменте здесь, на Meta, чтобы люди могли узнать о нём.

Да, я определённо хочу, чтобы люди могли его найти!

Я начал с:

require_relative "../config/environment"

чтобы он работал при размещении в директории scripts. Существует ли распространённый паттерн для размещения его вне директории discourse? (Я не вижу ничего в .gitignore, похожего на паттерн плагинов для проверки вещей, отличных от плагинов, внутри копии.)

Если нет, я могу просто указать «скопируйте его в scripts/» в инструкциях по установке, но я просто хочу знать, есть ли что-то, что я могу сделать, чтобы лучше вписаться в структуру.

У нас есть проект, в котором используется следующая настройка:

cd /var/www/discourse/script
git clone https://github.com/user/discourse-config-tool.git
cd ..
bundle exec ruby script/discourse-config-tool/app.rb

Подобный пример хорошо подошёл бы для инструкций по установке вашего инструмента.

Спасибо! Это всегда упрощает задачу другим — вписать всё в существующий шаблон!

Я соберу всё воедино и опубликую в канале #documentation:sysadmin с более конкретной информацией, как только всё будет готово.

Возможно, это была неправильная категория; материал ушёл на модерацию.

Мне стоило отправить это сюда, в Development?

Я одобрил это для вас.

Большое спасибо, @Stephen!

Для тех, чей поиск в будущем приведет их сюда, а не туда: