Cloud9用のEC2インスタンスを’’終了’’した話(Railsチュートリアルの環境再構築)


はじめに

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いいね。