أواجه صعوبة في تثبيت gem `eth` في إضافة في بيئة الإنتاج

أواجه صعوبة في تثبيت gem eth في إضافة، حيث يعتمد على العديد من الـ gems الأخرى، بعضها يحتوي على امتدادات أصلية. إليك قائمة التبعيات إذا أردت تجربتها.

gem 'pkg-config', '1.4.7', require: false
gem 'mkmfmf', '0.4', require: false
gem 'keccak', '1.3.0', require: false
gem 'zip', '2.0.2', require: false
gem 'mini_portile2', '2.7.0', require: false
gem 'rbsecp256k1', '5.1.0', require: false
gem 'konstructor', '1.0.2', require: false
gem 'ffi', '1.15.5', require: false
gem 'ffi-compiler', '1.0.1', require: false
gem 'scrypt', '3.0.7', require: false
gem 'eth', '0.5.1', require: false
gem 'siwe', '1.0.0', require: false

المشكلة تكمن في rbsecp256k1. يحاول استدعاء mini_portile2 لبناء امتداداته الأصلية ولكنه لا يجده على الرغم من تثبيته واستدعائه. لقد بذلت جهودًا كبيرة، مثل عمل fork للـ gem واستدعاء المسار المطلق يدويًا، وحاولت أيضًا استنساخ mini_portile2 حرفيًا داخل rbsecp256k1 واستدعائه من هناك، ولكن لم ينجح أي شيء حتى الآن.

أي مساعدة ستكون محل تقدير كبير.

إعجابَين (2)

تمكنت أخيرًا من إيجاد حل بديل. سأشاركه بعد قليل.

3 إعجابات

إليك ما فعلته. سجلت الدخول إلى الخادم وأدخلت حاوية دوكر.

  • إنشاء مجلد باسم gems

  • إنشاء مجلد فرعي 2.7.5 (إصدار روبي المستخدم بواسطة إنتاج ديسكورس على tests-passed)

  • العودة إلى مجلد gems

  • تشغيل الأوامر بهذه الطريقة

    RUBY_VERSION=2.7.5
    gem install pkg-config -v 1.4.7 -i $RUBY_VERSION --no-document --ignore-
    dependencies --no-user-install
    gem install mkmfmf -v 0.4 -i $RUBY_VERSION --no-document --ignore-dependencies
    --no-user-install
    ...
    

    ملاحظة: هذه هي نفس الأوامر بالضبط التي يقوم ديسكورس بتشغيلها (يحاول تشغيلها، لكنه يفشل) لتثبيت الجيمز.

  • الآن قم بضغط هذا المجلد.

  • اخرج من حاوية دوكر وانسخ الملف المضغوط إلى خارج حاوية دوكر باستخدام أمر docker cp.

  • اتصل بالخادم الخاص بك عبر filezilla أو vscode وقم بتنزيل الملف المضغوط.

  • قم بفك ضغطه إلى المجلد الجذر للمكون الإضافي الخاص بك. لذلك سيحتوي مجلد المكون الإضافي الخاص بك الآن على دليل الجيمز.

  • الآن قم بدفع مجلد الجيمز مع المكون الإضافي إلى جيت هاب.

الآن عندما تقوم بإعادة بناء ديسكورس باستخدام هذا المكون الإضافي، سيستخدم ديسكورس التبعيات التي قدمتها له ولن يحاول تثبيتها. هذا حل مؤقت وسيحتاج إلى إعادة القيام به بمجرد أن يقوم ديسكورس بترقية إصدار روبي.

ولكن هنا السؤال الكبير، لماذا تفشل نفس الأوامر التي تعمل عند تشغيلها من الطرفية عندما يحاول ديسكورس تشغيلها. سيكون من المفيد حقًا النظر في الأمر وآمل أن يكون هناك حل بسيط.

3 إعجابات

لقد قمت بإصلاح هذا مؤخرًا في

3 إعجابات

رائع، شكرًا لك. :clap:

هل يمكنك انتقاء هذه الإصلاحات إلى stable @tgxworld ؟

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

لقد تم ذلك في

3 إعجابات