В рамках процедур безопасности для нашего приложения Rails мы хотим иметь журнал аудита команд, которые были запущены из консоли rails в нашей производственной среде.
Этот журнал аудита должен где-то храниться, например в базе данных, в файле в корзине S3 и т. п. Если бы это можно было записать в стандартный журнал rails, это тоже было бы нормально, так как у нас уже есть способ сохранить это.
В настоящее время мы размещены на Heroku. Heroku будет регистрировать событие запуска консоли, но (а) Heroku не предоставляет функций для регистрации команд, запускаемых с активной консоли, и (б) нам нужно более универсальное решение.
Существуют ли какие-либо уже существующие решения для этого?
Если его нет, я пытаюсь понять, как исправить IRB или консоль Rails.
Я обнаружил, что нужные мне данные уже находятся в
Readline::HISTORY
но я изо всех сил пытаюсь понять, где/как подключиться к нему.
В идеале я хотел бы захватить каждую запись, когда (до?) она отправляется интерпретатору, и быстро сохранить ее где-нибудь (у нас уже есть Resque, так что это может быть хорошим решением). FWIW, отправка содержимого Readline::HISTORY в Kernel.exit кажется ненадежной. Например, если SIGKILL остановит процесс, содержимое истории не будет сохранено.