Ruby: 改良版Makefile
このドキュメントは高度な使用法ガイドの一部です。完全なガイドはこちらからご覧いただけます:Rubyデプロイメントをさらに進める。
👋 Stackheroのドキュメントへようこそ!
Stackheroは、数多くの利点を提供する、すぐに使えるRubyクラウドソリューションを提供しています。
- シンプルな
git pushでアプリケーションを数秒でデプロイ。- 独自のドメイン名を使用し、HTTPS証明書の自動設定による強化されたセキュリティを享受。
- 自動バックアップ、ワンクリック更新、そしてシンプルで透明性があり、予測可能な価格設定で安心を提供。
- プライベートで専用のVMによる最適なパフォーマンスと強固なセキュリティを実現。
時間を節約し、生活を簡素化:StackheroのRubyクラウドホスティングソリューションを試すのに5分しかかかりません!
以下は、一般的なタスクのための複数のルールをサポートする改良されたMakefileです。
make dev(または単にmake):開発モードでアプリケーションを開始します。make deploy:stackheroという名前のリモートにアプリケーションをデプロイします(Stackheroインスタンスが1つだけの場合に最適)。make deploy-production:stackhero-productionという名前のリモートにアプリケーションをデプロイします。make deploy-staging:stackhero-stagingという名前のリモートにアプリケーションをデプロイします。
この
Makefileは、コードがすでにデプロイされている場合に"Everything up-to-date"エラーを回避するように設計されています。
以下の内容を新しいMakefileにコピーして貼り付けてください。
# 引数なしで"make"を呼び出したときにデフォルトで実行されるルール
.DEFAULT_GOAL := dev
# Stackhero for Rubyは、インスタンスで"run"ルールを実行します。
# これは、本番およびステージングプラットフォームで実行するコマンドです。
run:
rake assets:precompile
rake db:migrate RAILS_ENV=production
RAILS_ENV=production bundle exec puma -C config/puma.rb
# 開発環境で実行するコマンド
dev:
RAILS_ENV=development rails server -b 0.0.0.0
# "deploy"ルールは、"stackhero"インスタンスにデプロイします。
# インスタンスが1つだけの場合に適しています。
deploy:
@$(MAKE) -s deploy-script DEPLOY_REMOTE=stackhero DEPLOY_BRANCH=main
# "deploy-*"ルールは、"stackhero-*"インスタンスにデプロイします。
# 例えば、"make deploy-production"を実行して"stackhero-production"にデプロイするか、
# "make deploy-staging"を実行して"stackhero-staging"にデプロイします。
deploy-%:
@$(MAKE) -s deploy-script DEPLOY_REMOTE=stackhero-$* DEPLOY_BRANCH=main
# 内部デプロイルール。変更しないでください。
deploy-script:
@echo "ブランチ\"${DEPLOY_BRANCH}\"を\"${DEPLOY_REMOTE}\"にデプロイ中..."
@echo
@if [ -n "$$(git status --porcelain)" ]; then \
echo "コミットされていない変更があるため、デプロイできません:"; \
echo "\e[0m"; \
git status -s; \
echo ""; \
echo "\e[0;31m"; \
echo "このコマンドを使用して変更をコミットできます:"; \
echo "git add -A . && git commit -m \"Your message\""; \
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 "新しいものはありません... 強制デプロイしますか(これにより新しいコミットが作成されます)? (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 "デプロイするものはありません!"; \
exit 1; \
;; \
esac \
fi
git push ${DEPLOY_REMOTE} ${DEPLOY_BRANCH}