Ruby: Patobulinta Makefile versija
Ši dokumentacija yra Išplėstiniai naudojimo būdai vadovo dalis. Visą vadovą rasite čia: Toliau su jūsų Ruby diegimais.
👋 Sveiki atvykę į Stackhero dokumentaciją!
Stackhero siūlo paruoštą naudoti Ruby cloud sprendimą, kuris suteikia daugybę privalumų, įskaitant:
- Įdiekite savo programą per kelias sekundes su paprastu
git push.- Naudokite savo domeno vardą ir pasinaudokite automatiniu HTTPS sertifikatų konfigūravimu, kad padidintumėte saugumą.
- Mėgaukitės ramybe su automatinėmis atsarginėmis kopijomis, vieno paspaudimo atnaujinimais ir paprasta, skaidria bei prognozuojama kainodara.
- Gaukite optimalią veikimo ir tvirtą saugumą dėka privačios ir dedikuotos VM.
Taupykite laiką ir supaprastinkite savo gyvenimą: išbandyti Stackhero Ruby cloud hosting sprendimą užtrunka tik 5 minutes!
Žemiau pateikiamas patobulintas Makefile, kuris apima kelias taisykles bendroms užduotims:
make dev(arba tiesiogmake): Paleidžia programą vystymo režimu.make deploy: Diegia programą į nuotolinį pavadinimustackhero(idealu, kai turite vieną Stackhero instanciją).make deploy-production: Diegia programą į nuotolinį pavadinimustackhero-production.make deploy-staging: Diegia programą į nuotolinį pavadinimustackhero-staging.
Šis
Makefileyra sukurtas tvarkyti atvejus, kai kodas jau buvo diegtas, išvengiant "Everything up-to-date" klaidos.
Nukopijuokite ir įklijuokite šį turinį į savo naują Makefile:
# Taisyklė, kuri vykdoma pagal nutylėjimą, kai "make" kviečiamas be argumento
.DEFAULT_GOAL := dev
# Stackhero Ruby vykdys "run" taisyklę jūsų instancijoje.
# Tai komanda, kurią reikia vykdyti tiek gamybos, tiek staging platformose.
run:
rake assets:precompile
rake db:migrate RAILS_ENV=production
RAILS_ENV=production bundle exec puma -C config/puma.rb
# Komanda, kurią reikia vykdyti vystymo aplinkoje
dev:
RAILS_ENV=development rails server -b 0.0.0.0
# Taisyklė "deploy" diegia į instanciją "stackhero".
# Tinka, kai turite tik vieną instanciją.
deploy:
@$(MAKE) -s deploy-script DEPLOY_REMOTE=stackhero DEPLOY_BRANCH=main
# Taisyklė "deploy-*" diegia į instanciją "stackhero-*".
# Pavyzdžiui, vykdykite "make deploy-production" diegti į "stackhero-production",
# arba "make deploy-staging" diegti į "stackhero-staging".
deploy-%:
@$(MAKE) -s deploy-script DEPLOY_REMOTE=stackhero-$* DEPLOY_BRANCH=main
# Vidinė diegimo taisyklė. Nemodifikuoti.
deploy-script:
@echo "Diegiama šaka \"${DEPLOY_BRANCH}\" į \"${DEPLOY_REMOTE}\"..."
@echo
@if [ -n "$$(git status --porcelain)" ]; then \
echo "Negalima diegti, nes yra neįsipareigojusių pakeitimų:"; \
echo "\e[0m"; \
git status -s; \
echo ""; \
echo "\e[0;31m"; \
echo "Galite naudoti šią komandą įsipareigoti pakeitimus:"; \
echo "git add -A . && git commit -m \"Jūsų pranešimas\""; \
echo "\e[0m"; \
exit 1; \
fi
@git push --dry-run ${DEPLOY_REMOTE} ${DEPLOY_BRANCH} 2>&1 | grep -q -F "Everything up-to-date"; \
EXIT_CODE=$$?; \
if [ $$EXIT_CODE -eq 0 ]; then \
echo -n "Nieko naujo diegti... Priversti diegti (tai sukurs naują commit'ą)? (y/N) "; \
read answer && \
case $$answer in \
y|Y|yes|YES) \
git commit --allow-empty -m "Force update for deploy purpose to \"${DEPLOY_REMOTE}\"" ; \
;; \
*) \
echo "Nieko diegti!"; \
exit 1; \
;; \
esac \
fi
git push ${DEPLOY_REMOTE} ${DEPLOY_BRANCH}