خطأ عند تنفيذ "bundle exec rake s3:upload_assets" - لم يمكن تحديد Gemfile أو دليل .bundle/

أحاول تشغيل "bundle exec rake s3:upload_assets" بصلاحيات الجذر (root) ويظهر الخطأ التالي: Could not locate Gemfile or .bundle/ directory.

لقد جربت أيضًا تشغيله بدون صلاحيات الجذر، باستخدام "sudo -E -u discourse bundle exec rake s3:upload_assets" وظهر الخطأ التالي: sudo: unknown user discourse\nsudo: error initializing audit plugin sudoers_audit

  • قمت بتنفيذ كلا الأمرين في الدليل التالي: /var/discourse
  • هذا تثبيت عادي، لا يستخدم دوكر (docker) أو أي شيء آخر.

كيف يمكنني إصلاح هذا لأتمكن من تشغيل الأمر؟

شكراً لكم.

تحتاج إلى تشغيله داخل الحاوية.

cd /var/discourse
./launcher enter app

ثم قم بتشغيل هذا الأمر

إعجاب واحد (1)

[اقتباس=“joshhabka، المنشور:1، الموضوع:361173”]
sudo -E -u discourse bundle exec rake s3:upload_assets
[/اقتباس]

شكرًا لك! ساعدتني على التقدم، الآن أنا أواجه هذا الخطأ:

root@redacted:/var/www/discourse# sudo -E -u discourse bundle exec rake s3:upload_assets
/root غير مكتوب بإذن
Bundler سيستخدم "/tmp/bundler20250409-510203-w6snye510203" كدليل المنزل مؤقتًا.
خطأ: تأكد من تكوين S3 في ملف config/discourse.conf أو متغيرات البيئة

لدي كل شيء مُكوَّن في إعدادات موقع Discourse. أنا لا أستخدم Docker، هل يعني ذلك أنني لست بحاجة إلى متغيرات البيئة؟

لقد حاولت إضافة متغيرات البيئة في app.yml، وأعدت البناء، وأعدت إدخال التطبيق وتشغيل الأمر، ويظهر هذا:

`/root` غير قابل للكتابة.
سيستخدم Bundler `/tmp/bundler20250409-1393-48ek5u1393' كدليل المنزل الخاص بك مؤقتًا.
جارٍ تثبيت قواعد CORS...
محاولة تطبيق مجموعة قواعد CORS للأصول S3 في الدلو biohacking-forum.
تم إلغاء أمر rake!
Seahorse::Client::NetworkingError: جسم استجابة فارغ أو غير مكتمل (Seahorse::Client::NetworkingError)
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/raise_response_errors.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/dualstack.rb:21:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/accelerate.rb:43:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/checksum_algorithm.rb:169:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/invocation_id.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/param_converter.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/request_callback.rb:89:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/response_paging.rb:12:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/response_target.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in `block in call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/telemetry/no_op.rb:29:in `in_span'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:53:in `span_wrapper'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/request.rb:72:in `send_request'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/client.rb:6359:in `get_bucket_cors'
/var/www/discourse/lib/s3_helper.rb:401:in `fetch_bucket_cors_rules'
/var/www/discourse/lib/s3_helper.rb:168:in `ensure_cors!'
/var/www/discourse/lib/s3_cors_rulesets.rb:60:in `sync'
/var/www/discourse/lib/tasks/s3.rake:183:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => s3:upload_assets => s3:ensure_cors_rules
(انظر التتبع الكامل عن طريق تشغيل المهمة مع --trace)

ما زلت غير قادر على حل هذا الأمر :frowning:

أنت بحاجة إلى متغيرات البيئة، لهذا السبب تم توثيقها بهذه الطريقة في Configure an S3 compatible object storage provider for uploads ولماذا تخبرك رسالة الخطأ بذلك.

يجب نقل جميع متغيرات S3 إلى الإعدادات المخفية، حيث لا يمكن أن يأتي الكثير من الخير من تكوينها في الإعدادات.

آسف، ولقد نسيت أنك لا تستخدم Docker. ولكن نعم، لا يزال يتعين عليك تعيينها في متغيرات البيئة. أقوم بذلك في بيئة التطوير الخاصة بي لاستعادة قواعد البيانات من S3.

إذا لم تكن تفعل هذا لبيئة تطوير، فمن المحتمل جدًا أنك ترتكب خطأً كبيرًا.

@Eviepayne

تم إصلاحه عن طريق القيام بما يلي - كان هناك خطأان.

أولاً، قمت بإصلاح الخطأ الثاني عن طريق القيام بما يلي:

rails c
Upload.find(386).destroy!
exit

هذا أصلح المنشور التالف (نص غير منسق أو شيء من هذا القبيل)

ثم كانت الأخطاء الحمراء على الشاشة ناتجة عن استخدام النطاق الفرعي العشوائي (المقدم من cloudflare) وتحميل الملفات إليه. اضطررت إلى تحميل الملفات إلى النطاق الجديد (الذي يتضمن النطاق المتصل الخاص بي)

باستخدام:

sudo -E -u discourse bundle exec rake s3:upload_assets

ثم:

sudo -E -u discourse bundle exec rake uploads:migrate_to_s3

ثم تم تحميل المنتدى بشكل صحيح والنقر بزر الماوس الأيمن وفتح الصور في علامة تبويب جديدة يظهر أنها مستضافة على R2. ثم قمت بعمل نسخة احتياطية.

أخيرًا، قمت بتنظيف كل شيء باستخدام:

sudo -E -u discourse bundle exec rake uploads:clean_up

مما أدى إلى تحرير مساحة التخزين الخاصة بالملفات (لاحظ أنني لا أزال أحتفظ بنسخة احتياطية محلية لكل من الملفات (على مستوى نظام التشغيل) ومستوى discourse قبل الترحيل).

الآن كل شيء يعمل بشكل مثالي!

3 إعجابات

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.