Ruby: Ulepszona wersja Makefile
Ta dokumentacja jest częścią przewodnika Zaawansowane zastosowania. Pełny przewodnik znajdziesz tutaj: Dalsze kroki w wdrażaniu Ruby.
👋 Witamy w dokumentacji Stackhero!
Stackhero oferuje gotowe do użycia rozwiązanie Ruby cloud, które zapewnia wiele korzyści, w tym:
- Wdrażaj swoją aplikację w kilka sekund za pomocą prostego
git push.- Używaj własnej nazwy domeny i korzystaj z automatycznej konfiguracji certyfikatów HTTPS dla zwiększonego bezpieczeństwa.
- Ciesz się spokojem dzięki automatycznym kopiom zapasowym, aktualizacjom jednym kliknięciem oraz prostemu, przejrzystemu i przewidywalnemu cennikowi.
- Uzyskaj optymalną wydajność i solidne zabezpieczenia dzięki prywatnej i dedykowanej VM.
Oszczędzaj czas i upraszczaj sobie życie: wypróbowanie rozwiązania Ruby cloud hosting Stackhero zajmuje tylko 5 minut!
Poniżej znajduje się ulepszony Makefile, który obsługuje wiele reguł dla typowych zadań:
make dev(lub po prostumake): Uruchamia aplikację w trybie deweloperskim.make deploy: Wdraża aplikację do zdalnego o nazwiestackhero(idealne, gdy masz jedną instancję Stackhero).make deploy-production: Wdraża aplikację do zdalnego o nazwiestackhero-production.make deploy-staging: Wdraża aplikację do zdalnego o nazwiestackhero-staging.
Ten
Makefilejest zaprojektowany do obsługi przypadków, gdy kod został już wdrożony, unikając błędu "Everything up-to-date".
Skopiuj i wklej poniższą zawartość do nowego Makefile:
# Domyślna reguła do wykonania przy wywołaniu "make" bez argumentu
.DEFAULT_GOAL := dev
# Stackhero dla Ruby wykona regułę "run" na twojej instancji.
# To jest komenda do uruchomienia na platformach produkcyjnych i staging.
run:
rake assets:precompile
rake db:migrate RAILS_ENV=production
RAILS_ENV=production bundle exec puma -C config/puma.rb
# Komenda do uruchomienia w środowisku deweloperskim
dev:
RAILS_ENV=development rails server -b 0.0.0.0
# Reguła "deploy" wdraża na instancję "stackhero".
# Odpowiednia, gdy masz tylko jedną instancję.
deploy:
@$(MAKE) -s deploy-script DEPLOY_REMOTE=stackhero DEPLOY_BRANCH=main
# Reguła "deploy-*" wdraża na instancję "stackhero-*".
# Na przykład, uruchom "make deploy-production", aby wdrożyć na "stackhero-production",
# lub "make deploy-staging", aby wdrożyć na "stackhero-staging".
deploy-%:
@$(MAKE) -s deploy-script DEPLOY_REMOTE=stackhero-$* DEPLOY_BRANCH=main
# Wewnętrzna reguła wdrażania. Nie modyfikować.
deploy-script:
@echo "Wdrażanie gałęzi \"${DEPLOY_BRANCH}\" do \"${DEPLOY_REMOTE}\"..."
@echo
@if [ -n "$$(git status --porcelain)" ]; then \
echo "Nie można wdrożyć, ponieważ są niezatwierdzone zmiany:"; \
echo "\e[0m"; \
git status -s; \
echo ""; \
echo "\e[0;31m"; \
echo "Możesz użyć tej komendy, aby zatwierdzić zmiany:"; \
echo "git add -A . && git commit -m \"Twoja wiadomość\""; \
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 "Nic nowego do wdrożenia... Wymusić wdrożenie (to stworzy nowy 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 "Nic do wdrożenia!"; \
exit 1; \
;; \
esac \
fi
git push ${DEPLOY_REMOTE} ${DEPLOY_BRANCH}