تكامل Heroku وGithub (كيفية هيكلة المشروع)
-
20-09-2019 - |
سؤال
أقوم بإنشاء خدمة ويب وأريد تخزين المصدر على جيثب وتشغيل التطبيق على هيروكو.لم أشاهد السيناريو الدقيق الخاص بي والذي تم تناوله في أي مكان على الشبكة حتى الآن، لذا سأطرحه هنا:
أريد الحصول على بنية الدليل التالية:
/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
).