سؤال

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

أريد الحصول على بنية الدليل التالية:

/project
  .git
  README <-- project readme file
  TODO.otl <-- project outline
  ... <-- other project-related stuff
  /my_rails_app
     app
     config
     ...
     README <-- rails' readme file 

في ما سبق، يتوافق المشروع مع http://github.com/myuser/project, و my_rails_app هو الكود الذي يجب دفعه إلى Heroku.هل أحتاج إلى فرع منفصل لتطبيق Rails أم أن هناك طريقة أبسط أفتقدها؟

أعتقد أن ملفاتي غير المرتبطة بمشروع Rails يمكن أن تكون موجودة في my_rails_app، لكن README الخاص بـ Rails موجود بالفعل هناك ويبدو من غير المتسق الكتابة فوق ذلك.ومع ذلك، إذا تركتها، فإن صفحة github الخاصة بتطبيق Rails ستحتوي على ملف Rails التمهيدي، وهو أمر غير منطقي.

أيضًا ...لقد حاولت إعداده كما هو موضح أعلاه وتشغيله

git push heroku

من مجلد المشروع الرئيسيبالطبع، لا يعرف Heroku أنني أريد نشر المجلد الفرعي:

-----> Heroku receiving push
 !     Heroku push rejected, no Rails or Rack app detected.
هل كانت مفيدة؟

المحلول

إليك الحل البسيط الذي قد يناسبك وقد لا يناسبك.

  • قم بإنشاء مشروعين على GitHub.يجب أن يكون أحد المشاريع هو تطبيق Rails فقط (أي.كل شيء داخل دليل تطبيق Rails).يجب أن يكون المشروع الآخر هو كل شيء خارج دليل تطبيق Rails.

  • أضف مشروع تطبيق Rails كوحدة git فرعية ضمن مشروع "الحاوية".

  • يمكنك الآن إضافة Heroku كجهاز تحكم عن بعد في مستودع تطبيقات Rails بشكل منفصل ودفعه إلى Heroku.سيقبل Heroku الدفع لأنه مجرد تطبيق Rails يحتوي على الأدلة والملفات المتوقعة.

نصائح أخرى

وهناك حل للوضع Heroku (وليس ملف اقرأني):

إذا كنت تستخدم الجديد Heroku الأرز (وأعتقد أنه لم يكن متاحا عندما عليك أولا طلب سؤالك) ثم العمليات الخاصة بك (مثل القضبان عملية الخادم) البدء باستخدام فورمان . وهكذا، يمكنك وضع Procfile في الدليل جيثب الجذرية التي تبدو مثل هذا:

web:     my_rails_app/script/runserver.sh

وmy_rails_app/script/runserver.sh ثم يمكن أن تكون بسيطة

#!/bin/sh

cd my_rails_app
bundle exec rails server -p $PORT

ومحليا، يجب عليك أيضا إنشاء ملف يسمى .env (لاحظ. في البداية)، الذي يحتوي على

PORT=3000

وهذا الملف للقراءة من قبل فورمان وتستخدم لتعيين متغيرات البيئة بحيث يتم تعيين منفذ عند تنفيذ foreman start على جهازك (من الدليل جيثب الجذر، حيث تقع Procfile). يأخذ الخادم Heroku رعاية الملف .env على داينو الخاص بك. والميزة الكبرى هي أن تتمكن من إنشاء عمليات متعددة على داينو بهذه الطريقة!

وفقط الكتابة فوق القضبان "ملف README الافتراضية. ليس هناك سبب للحفاظ حولها. ضع الأشياء الأخرى المتعلقة بالمشروع والإدارة في الدليل doc. في حين كان لديك بالتأكيد أسباب وجيهة للرغبة في إعداده بالطريقة التي فعلت ذلك، كنت مجرد خلق الصداع لنفسك من خلال الذهاب ضد الاتفاقية، وانها ربما لا يستحق صالح.

وأود أن أضيف كل شيء تحت /my_rails_app إلى بوابة مستودع Heroku. ثم إضافة جيثب كما بعيد وإضافة كل شيء تحت /project إلى المخزون جيثب. ثم يمكنك دفع تطبيق القضبان لHeroku (من /my_rails_app)، ودفع المشروع الكامل لجيثب (من /project).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top