أريد تنفيذ مهام تنظيف تلقائية للمستخدمين من سطر أوامر 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. عند تنفيذ rails c باستخدام الأمر الفرعي launcher app، يفشل الاتصال بقاعدة بيانات 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.
ومع ذلك، عند مقارنة البيئات باستخدام export بين launcher enter app و launcher run app، تبدو متطابقة إلى حد كبير. ما الذي أغفله؟ يبدأ launcher run في / بينما يدخل launcher enter مباشرة إلى /var/www/discourse. استخدام cd قبل تنفيذ rails لا يفيد.