Я пишу скрипт, управляемый YAML-файлом, для перестройки сайта Discourse. Это связано с тем, что я планирую масштабную реорганизацию своего крупнейшего сайта, чтобы упростить навигацию, и никогда бы не взялся за это, если бы пытался управлять процессом через интерфейс.
В моём скрипте нет ни одного модульного теста. Хотя я в целом сторонник модульного тестирования и придерживаюсь этого мнения уже давно, у меня нет мотивации писать тесты для этого скрипта.
Скрипт по сути является каркасом, на основе которого можно строить — не всем нужны те же семантики, что и мне. В этом смысле он немного похож на скрипты миграции, которые, как ожидается, пользователи, скорее всего, будут дорабатывать под свои нужды.
Учитывая эти ограничения, стоит ли отправлять этот скрипт в виде pull-запроса (PR)? Или сообщество предпочло бы, чтобы я опубликовал его в виде блока кода, возможно, в канале #documentation:sysadmin?
Моя главная цель — помочь всем остальным, кто пытается сделать что-то подобное. Кроме того, сами функции могут помочь пользователям понять, что делать в консоли Rails.
Я не до конца понимаю аббревиатуру «MSN», но в моём случае я занимаюсь перемещением постов между категориями, добавлением тегов, изменением родительских постов, скрытием категорий, созданием редиректов и так далее. Часть этих задач покрывается функцией «Массовые действия администратора», а часть — нет, но всё это выполняется из одного скрипта.
В данный момент в моём случае это 112 действий. Я не собираюсь вручную вводить их, переключаясь между rails c и rake по несколько раз в час, пока мы с руководством исследуем различные варианты реорганизации сайта.
Вопрос не в том, «как это сделать?» — я уже написал скрипт, хотя планирую продолжать его улучшать (например, вероятно, добавлю возможность ведения полного детального аудита, чего пока нет, но это может понадобиться перед запуском на рабочем сайте).
Вопрос в следующем: как лучше всего поделиться им? В директории scripts/ я ничего подобного не нашёл (хотя, возможно, что-то упустил). Я понимаю, что к PR обычно должны прилагаться автоматические тесты (хотя не уверен, насколько строго это требование применяется к директории scripts/). При этом скрипт уже превышает 150 строк и продолжает расти, что кажется слишком большим для публикации здесь, где он занял бы гораздо больше места, чем стандартное окно кода.
Я думаю, вы должны опубликовать это на GitHub и дать ссылку на него — либо создайте для этого тему, либо добавьте его в массовые операции администратора.
Создание отдельного проекта на GitHub — это лучший путь. Также обязательно создайте тему об этом инструменте здесь, на Meta, чтобы люди могли узнать о нём.
Да, я определённо хочу, чтобы люди могли его найти!
Я начал с:
require_relative "../config/environment"
чтобы он работал при размещении в директории scripts. Существует ли распространённый паттерн для размещения его вне директории discourse? (Я не вижу ничего в .gitignore, похожего на паттерн плагинов для проверки вещей, отличных от плагинов, внутри копии.)
Если нет, я могу просто указать «скопируйте его в scripts/» в инструкциях по установке, но я просто хочу знать, есть ли что-то, что я могу сделать, чтобы лучше вписаться в структуру.