#はじめに
Railsチュートリアル第2章完了後に失敗した話。
環境を再構築し、ローカルWebサーバ起動を行い、アプリ動作を確認するまで。
#開発環境
- MacOS Catalina 10.15.7
- Safari 13.1.3
- AWS Cloud9
- Rails 5.1.6
- Ruby 2.6.3
- Heroku 7.47.6
#事象
EC2インスタンスを終了してしまった。停止ではなく終了。
特にバックアップ的なものは取っておらず、Cloud9は残っているものの、新規に作成したEC2インスタンスとは紐付けできず。
#解決策
一瞬「やっちまった。全部作り直しか」と思ったが、
よくよく考えるとGithubにコードをコミットしてあるじゃないかと気づく。
そこで以下の手順での再構築を検討。
1.Cloud9の新規作成
Railsチュートリアル第1章で行った手順どおりに新規でCloud9構築。
まずは新規で真っ新なCloud9の環境を作成。
次にinstall、updateコマンドのドキュメント除外設定を追加し、Railsをインストール。
$ printf "install: --no-document \nupdate: --no-document\n" >> ~/.gemrc
$ gem install rails -v 5.1.6
2.Githubよりクローン
Cloud9にRailsチュートリアル第2章で作成したtoy_appのソースコードをクローン。
URLにはGibhubリポジトリのURLを。
$ git clone "URL"
3.Gemインストール
Railsチュートリアル第1章のリスト1.5にある内容でGemfileを書き換え。
その後、bundle installを実行。
$ bundle install
4.DBマイグレーション実行
このままrails serverを行いアプリ起動すると「ActiveRecord::PendingMigrationError」が発生する。rails db:migrateを先に実行しDBを更新しておく。
$ rails db:migrate
5.ローカルWebサーバにてアプリ起動
rails serverでサーバ起動しアプリ動作を確認。無事に動作することを確認。
#まとめ
改めてGitの有り難さを実感することになった。
GitのクローンはSubversionのチェックアウトとはその内容が異なる。
Gitサーバのデータをほぼ全てコピーしてくるため、仮にサーバ側のデータが失われたとしても、クライアントにあるクローンを戻せばほぼ復元できるそうだ。Gitいいね。