호스트 Bash에서 자동화된 사용자 정리 작업을 실행하려고 합니다. 수동으로 실행할 때는 다음을 사용합니다.
/var/discourse/launcher enter app
rails c
UserDestroyer.new(Discourse.system_user).destroy(User.find_by_username_or_email("user@example.com"), delete_posts: false)
삭제해야 할 사용자 이름이 담긴 텍스트 파일에 긴 목록이 있습니다. 수동으로 이 작업을 수행하는 것은 비현실적입니다. 삭제 명령을 bash 스크립트로 감싸서 실행해 보았지만, launcher app 하위 명령으로 rails c를 실행할 때 Redis 연결이 실패합니다:
/var/discourse/launcher run app "echo \"User.find_by_username_or_email('user@example.com')\" | rails c"
Failed to report error: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL) 2 Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL) subscribe failed, reconnecting in 1 second.
그러나 launcher enter app와 launcher run app 사이의 환경을 export 명령으로 비교해 보면 거의 동일해 보입니다. 제가 놓치고 있는 것이 무엇일까요? launcher run은 / 디렉터리에서 시작되는 반면, launcher enter는 /var/www/discourse로 직접 진입합니다. rails 실행 전에 cd 명령을 사용하여 디렉터리를 변경해도 도움이 되지 않습니다.