見出し画像

Androidスマホ上でRailsアプリ開発タイムアタック6時間

 通勤時間を活用できる趣味を作ろうと思い、「スマホ上でwebアプリ開発のプログラミング」をするようになった。仲間が増えれば嬉しいので、web公開までの流れをまとめて公開する。
 全体で約6時間のタイムアタックとなっている。前段の環境構築がメインであり、その後のアプリ開発は削除前提の練習である。


環境構築①|UserLAndの設定(5min)

□UserLAndをAndroidにインストール
□Ubuntuを選択
□service typeはsshとする
 ※以下2つはどちらもGUIなので、
  スマホでは使いづらい
  ・vnc:
   スクリーンをキャプチャし続けて、
   変化点を伝送する方式
  ・xsdl:
   画面をどのように描画するかを記述した、
   描画コマンドを伝送する方式
Q.全く入力を受け付けなくなったときどうする?
 ※UserLAnd起動したままAndroidを再起動
  した場合などで発生するバグ
 A.android上部メニューを引き下げてEXIT

環境構築②|Ubuntuの設定(20min)

□CPUアーキテクチャを確認
 →$ uname -m
  ※Unix NAMEの略
  ※-mはマシン(ハード)のタイプのみ表示
  ※aarch64はArm ARCHitecture 64の略で、
   一般的にARM64と呼ばれていて、
   スマホによく使われる
   ※一般的なサーバで使われるx86とは
    様々な面で互換性が乏しいので要注意
□OSのバージョンの不具合を修正
 →①$ sudo apt update
   ※これでまず最新の修正情報を取得する 
  ②$ sudo apt upgrade
   ※①で取得した最新修正情報を反映する
   ※最初はここで15minくらいかかる
   ※Setting up systemdの途中で
    UserLAnd特有の問題により
    symlink failedエラーが出るかも
  ③$ cat /etc/os-release
   ※末尾の番号が修正前から変わっている
   ※執筆時はUbuntu 22.04.4 LTS

環境構築③|vimのインストール(1min)

□vimをインストールする
 →$ sudo apt install vim
  ※viもvimも起動するアプリは同じ
  ※vimはVi IMprovedの略
□vimのバージョン確認
 →$ vim --version
  ※オプション-vは別の意味があるため注意
   →Ex実行ファイルも強制的にviで開く
□vimのエンコーディングをutf-8に変更
 →①$ vim ~/.vimrc
  ②iを押してINSERTモードを起動
  ③:set encoding=utf-8を入力
  ④Escを押してINSERTモードを解除
  ⑤:wq→Entrで保存して終了
   ※「:」はExモードに入るコマンド
   ※EntrはExモードを完了させるコマンド
   ※保存せず終了は:q!→Entr
    ※「!」が強制実行のコマンド
  ⑥$ exitで再起動

環境構築④|OpenSSHのインストール(3min)

□OpenSSHをインストール
 →$ sudo apt install openssh-server
  ※SSHはSecure SHellの略
  ※linuxにリモートでログインする機能
  ※SSH鍵はGitホスティングでも使う
   ※ホスティング:
    サーバ運営しサービスを提供すること
□OpenSSHのバージョン確認
 →$ ssh -V
  ※なぜか大文字の「V」なので注意
  ※ユーザがインストールする前から、
   userlandが使っているsshが反応してしまう
   →インストールしたかの確認には使えない
□OpenSSHの初期設定を確認
 →$ cat /etc/ssh/sshd_config
  ※Port 22と出る
 Q.なぜポート番号22はすぐ変更すべき?
  A.絶えず不正アクセスを受けて、
   サーバに負荷がかかるので、
   1024以上の2022に設定したい
□SSHのポート番号を2022に変える
 →①$ sudo vim /etc/ssh/sshd_config
  ②iを押してINSERTモードを起動
  ③#Port 22を#Port 2022に変更
  ④Escを押してINSERTモードを解除
  ⑤:wq→Entrで保存して終了
   ※「:」はExモードに入るコマンド
   ※EntrはExモードを完了させるコマンド
   ※保存せず終了は:q!→Entr
    ※「!」が強制実行のコマンド
  ⑥$ sudo service ssh restart
   ※一般的にUbuntu 15.04以降は
    sudo systemctl restart sshとすべきだが、
    UserLAnd特有の問題でsystemctlが使えない
    →Ubuntu 14.10 以前に使われていた
     serviceコマンドを使うしかない

環境構築⑤|cURLのインストール(1min)

□cURLのインストール
 ※HTTPリクエストができる
 ※シェルスクリプト取得にも使われる
 →①$ sudo apt install -y curl
  ②$ curl -version
  ③$ curl -I http://www.google.com
   ※-Iオプションは、
    HTTPレスポンスヘッダー情報を取得
   ※200(正常応答の意味)と出ればOK
    ※HTTPレスポンスステータスコード
    ※404(ページが見つからない)が有名

環境構築⑥| Githubの設定(30min)

□Githubアカウントがなければブラウザで作成
□ダミーメールアドレスの取得
 →①右上のプロフィール画像を押して
   出てくるメニューからSettingsを選択
  ②Emailsを開く
  ③Keep my email addresses privateを選択
  ④表示されるダミーアドレスをメモしておく
□Github用のSSH鍵を作成
 →①$ ssh-keygen -t rsa -f ~/.ssh/id_rsa_github
   ※-tで暗号のアルゴリズムを指定
    ※最近はrsaよりed25519が良いらしい
   ※-fがないと、途中でEnter file...と出る
    →デフォルトファイル名が()内に
     ~/.ssh/id_rsaと記載されているので、
     Enterだけ入力するとデフォルトの通り
     鍵ファイルが出力される
  ②Enter passphrase…と出たら何か入力する
   ※あとで使うから覚えておくこと
   ※同じのを2回入力する
  ③$ ls ~/.ssh
   ※id_rsa_githubとid_rsa_github.pubがある
□SSH秘密鍵のパーミッションを確認
 →①$ ls -l ~/.ssh
   ※-rw------(つまり600)なら以下②は不要
  ②$ chmod 600 id_rsa_github
   ※CHange MODeの略
□GithubにsshのPort22を開放する
 →①$ vim ~/.ssh/config
   ※無ければ新規作成
  ②以下6行を追記
   Host github.com
   HostName github.com
   User git
   Port 22
   IdentityFile ~/.ssh/id_rsa_github
   IdentitiesOnly yes
□SSH公開鍵をGithubへ登録
 →①$ cat ~/.ssh/id_rsa_github.pub
  ②公開鍵をクリップボードへコピー
   ※冒頭ssh-rsaから末尾@localhostまで
  ③GithubのSettings内の
   SSH & GPG keysを開いて
   Add New SSH key登録
   ※Titleは「userland」等、識別できるように
   ※公開鍵をクリップボードから貼付け
   ※Authentication Keyを選択すればよい
    ※Signing Keyは公開鍵に署名をつける、
     より高度(今は過剰)な鍵
  ④$ ssh -T github.com
   ※-T:PTYの割当てを禁止
    ∵githubの仕様より
    ※PTY:疑似端末(Pseudo teleTYpe)
   ※ed25519のfingerprintが表示されて、
    接続を続けるか聞かれる
    →ひとまず確認せずyesと入力してEntr
   ※途中で鍵作成時のpassphraseを入力
   ※以下が表示されればOK
    You've successfully authenticated,
     but GitHub does not provide shell access.

環境構築⑦|Gitのインストール(5min)

□Gitのインストール
 ※rbenvのインストールやデプロイで使う
 ※分散型バージョン管理システム
 →$ sudo apt install git
□Gitの名前とメアドの設定
 →①$ git config --global user.name "Tellmae R"
   ※氏名間にスペースを入れない場合は
    ダブルクォーテーション無くてもいい
  ②$ git config --global user.email xxx@xxx
   ※Githubで得たダミーアドレスにする
  ③$ git config --global -l
□Gitのデフォルトブランチ名をmainに変更
 →$ git config --global init.defaultBranch main
  ※元はmaster(君主⇔slave)となっているが、
   人権保護からmainとする流れがある

環境構築⑧|rbenvのインストール準備(5min)

□gccのインストール
 ※rbenvやbundlerがコンパイルする際に使う
 →①$ sudo apt install -y build-essential
   ※これは3分くらいかかる
  ②$ gcc --version
□OpenSSLのインストール
 ※rbenvでrubyをビルドする際に使う
 →①$ sudo apt install -y libssl-dev
  ②$ openssl version -a
□YAMLを扱うライブラリをインストール
 ※rbenvでrubyをビルドする際に使う
 ※railsでは各種設定のため、
  .ymlファイルを直接書き換えることが多い
 →$ sudo apt install libyaml-0-2 libyaml-dev
□zlibのインストール
 ※データ圧縮・解凍ツール
 ※rbenvでrubyをビルドする際に使う
 →$ sudo apt install libz-dev
□Foreign-Function Interfaceのインストール
 ※別言語の関数を呼び出すツール
 →$ sudo apt install libffi-dev
□ReadLineのインストール
 ※ruby言語の標準入力に使う
 →$ sudo apt install -y libreadline-dev

環境構築⑨|rbenvのインストール(20min)

□rbenvのインストール
 ※rubyのバージョン管理ツール
 →①$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
   ※apt installは新しいバージョンに未対応
    (公式リポジトリがout of dateと注意)
   ※「~」はホームリディレクトリを示す
  ②$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
   ※環境変数「PATH」(検索パス)に追加し、
    ~/.rbenv/bin内の実行ファイルrbenvを
    コマンドとして使えるようになる
   ※echoはもともと画面出力コマンドだが、
    >>で指定したファイルに追記もできる
   ※頭に$をつけると変数と解釈される
   ※パスは「:」で追加され、
    左側から検索される仕様
   ※右辺に自身の変数$PATHがある再帰構文
   ※公式は.bash_profileと指定してるが、
    Ubuntuの場合.profileを使っているので、
    .bash_profileを新たに作ってしまうと、
    .profileの内容が実行されなくなる
    →.bash_profileを作らないように
     常に注意しつつ、.profileにPATH追記するのが
     これまでの通説だった
    →以下のrbenv initで初期化コマンドが
     .bashrcに書き込まれる仕様となったため
     その前にPATHを通す必要が出てきた
    →重くなるが仕方なく、
     .bashrcにPATHを書くこととなった
   Q.なぜUbuntuは.profileがデフォ?
    A.GUI起動(bash無し)でも読み込まれる
     という利点があるから
  ③$ ~/.rbenv/bin/rbenv init
   ※.bashrcにrbenv初期化コマンドを
    勝手に追記してくれる
    ※以前は.profileに手動で追記するよう
     以下を指示してくる仕様だった
     $ echo 'eval "$(rbenv init -)"' >> ~/.profile
  ④$ source ~/.bashrc
   ※sourceはファイル内のコマンドを実行
  ⑥$ type rbenv
   ※rbenvがコマンドとして認識されたか確認
   ※not foundと出たら失敗
   ※rbenv is 〜と出たら成功
□ruby-buildのインストール
 →①mkdir -p "$(rbenv root)"/plugins
   ※-pは必要により親ディレクトリも作成
  ②git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

環境構築⑩|Rubyのインストール(130min)

□rubyをrbenvからインストール
 ※apt installはバージョン汚染するから非推奨
 →①$ rbenv install -l
   ※安定版の最新x.x.xを確認
   ※執筆当初は3.2.2だったが更新中に3.3.1に
  ②$ rbenv install x.x.x
   ※x.x.xは上で確認したバージョンとする
   ※ここで2時間くらいかかる
  ③$ rbenv global x.x.x
   ※上記のインストール時に指示される
   ※このバージョンをデフォルトにする
  ④$ rbenv version
□ドキュメントのダウンロード時間を短縮
 →$ printf "install: --no-document \nupdate:  --no-document\n" >> ~/.gemrc
□bundlerをインストール
 →$ gem install bundler
  ※rubyで使うライブラリはgemといい、
   gemを管理するコマンドもgem
   (gemは英語で原石の意)
  ※bundlerはgemの1つで、
   Gemfileに従ってgemを管理する
  ※ここで10分くらいかかる
  ※rubygems.orgのサイトは不安定なので、
   443エラーが返ってくることがある
   →日時を改めればOK

環境構築⑪|Node.jsのインストール(10min)

 ※サーバ側でJavaScriptを使うプラットフォーム
 ※Rails 6 以降には同梱されるようになり、
  Railsとしては別途インストール不要だが、
  Heroku CLIインストールのために結局必要
 →①$ sudo apt install -y nodejs npm
   ※npmはNode.jpのバージョン管理ツール
   ※ここで5分ほどかかる
  ②$ sudo npm install n -g
   ※「n」コマンドをインストール
  ③$ sudo n stable
   ※Node.jsの最新安定版をインストール
  ④$ sudo apt purge -y nodejs npm
   ※もう不要となったnodejsとnpmを消す
   ※purgeは環境設定まで全削除するコマンド
  ⑤$ exec $SHELL -l
   ※シェルの再起動
   ※-lでログインシェルとして起動
    →環境変数の設定等の初期化がされる
  ⑥$ sudo npm install yarn -g
   ※npmと似たnodeパッケージ管理ツール
  ⑦$ node -v

環境構築⑫|PostgreSQLのインストール(20min)

※データベースをインストールしていないと
 rails newをするときにエラーが出る
□PostgreSQL本体のインストール
 →①$ sudo apt update
  ②$ sudo apt upgrade
  ③$ sudo apt install postgresql
   ※3分くらいかかる
 □FATAL: data directory
  "/var/lib/postgresql/14/main"
  has wrong ownershipと出たら
  →①そもそもディレクトリが存在しないので
    $ mkdir -p /var/lib/postgresql/14/main
    ※/varはvariable(変動しやすい)の略
   ②$ ls -l /var/lib/postgresql/14
    ※データベース格納領域の所有者が、
     rootでなくuserlandであるのを確認
     ∵セキュリティ上、rootが所有しては
      いけないルールとなっている
□拡張機能のインストール
 →①$ sudo apt install postgresql-contrib
   ※ポスグレ機能の拡張
  ②$ sudo apt install libpq-dev
   ※アプリケーションとデータベースの通信
□クラスタの作成
 ※クラスタとは、ディスク上の
  データベース格納領域のことで、
  複数のデータベースをまとめて
  1つのインスタンスとして管理する
 →インストール時に出力されたとおり従う
  $ pg_createcluster 14 main --start
  ※14はバージョン名
  ※mainはクラスタ名
  ※--startは、クラスタを生成した直後に
   サーバを開始するオプションで、
   これを付けず以下を分けて実行してもよい
   $ pg_ctlcluster 14 main start
 □FATAL: private key file
  "/etc/ssl/private/ssl-cert-snakeoil.key"
  has group or world accessと出たら?
  ※SSL:Secure Sockets Layerの略
  ※cert:証明書certificationの略
  ※snakeoil:SSLのサンプルとして
   ubuntuにプリインストールされている
   証明書の認証サイトの仮の名前
   ※もともと英語で「インチキ薬」の意
  →①$ ls -l /etc/ssl/private/ssl-cert-snakeoil.key
    ※現状を確認(多分-rw-r-----)
   ②$ sudo chmod 600 /etc/ssl/private/ssl-cert-snakeoil.key
    ※-rw-------にする
   ③$ ls -l /etc/ssl/private/ssl-cert-snakeoil.key
    ※変更されたのを確認
   ④もう一度自分で
    $ pg_ctlcluster 14 main start
   ⑤UNIXドメインソケットの生成を確認
    $ ls -a /var/run/postgresql
    ※.s.PGSQL.5432があれば成功
 □Remove stale pid file.と出たら? 
  ※stale:古い
  →①$ ls -a /var/run/postgresql
   ②残っている.pidファイルを
    rmしてからやり直す
    $ rm /var/run/postgresql/14-main.pid
□SQLサーバを停止
 →$ pg_ctlcluster 14 main stop

環境構築⑬|Heroku CLIのインストール(30min)

□ブラウザでHerokuのユーザ登録
 →①Sign-upからメアド等入力して認証
  ②スマホにアプリsalesforce authenticatorをインストール
  ③Heroku多要素認証をsalesforce authenticatorに紐づける
   ※salesforce authenticatorに表示される
    英単語2つをHerokuの画面に入力
   ※以後、Authenticatorアプリを開いた状態で
    ブラウザ上でログインしようとすると
    上部メニューで承認するか通知が出る
  ④ブラウザで右上のプロフィール画像から
   Account Settingを開く
  ⑤Manage Multi-Factor Authenticationをクリック
  ⑥リカバリーコードの追加をクリック
  ⑦リカバリーコードをメモしておく
   ※Authenticatorアプリが入った端末が
    壊れた場合のロックアウトに備える
□クレカ登録しておく
 ※登録しておかないとheroku createのとき
  エラーが出てしまう
 ※住所はクレカの登録情報に合わせて
  日本語なら日本語で入力しないと
  「アドレスがおかしい」と弾かれる
□HerokuのCLIをインストール
 ※Command Line Interfaceの略
 →$ curl https://cli-assets.heroku.com/install.sh | sudo sh
  ※公式の推奨はもともと以下コマンド
   $ curl https://cli-assets.heroku.com/install.sh | sh
   ※頭だけにsudoをつけても、権限無しと出る
  ※縦棒「|」はbashで「パイプ」といい、
   左コマンドの出力を右コマンドの入力とする
  ※10分ほどかかる
  ※以下コマンドがrailsチュートリアルにあるが
   Cloud9環境でしか使えないし、
   環境汚染されるため注意
    $ source <(curl -sL https://cdn.以下略)
  ※「予期せぬEOF」エラーが出たら、
   ネット環境がいい場所でインストールし直す
   ※EOF→End Of Fileを示す値
  ※戻すには以下コマンド
   $ rm -rf /usr/local/heroku
    /usr/local/lib/heroku
    /usr/local/bin/heroku
    ~/.local/share/heroku
    ~/Library/Caches/heroku
□インストールされたことを確認
 →$ heroku --version
  ※Node.jsがインストールされていないと
   ここでエラーが出る

アプリ開発①|Railsのインストール(60min)

□Railsをプロジェクトごとにインストールする
 →①$ mkdir testapp
  ②$ cd testapp
  ③$ bundle init
   ※bundler(gemを管理するgem)が
    Gemfile ファイルを作成
  ④$ vim Gemfile
  ⑤「# gem "rails"」の#を消してコメントイン
   ※シングルクォートとする情報源もある
    →Rubyはどちらも対応(結果は不変)
     ※特殊文字の扱い方が異なるのみ
  ⑥$ bundle config set --local path 'vendor/bundle'
   ※各gemの保存先をプロジェクトごとに分けて
    システム全体への環境汚染を防ぐ
    (プロジェクト削除時に残ってしまう等)
   ※testappの下に、隠しディレクトリ
    .bundleが作成され、その中に
    configファイルが作成され、
    その中に以下が書き込まれる
    BUNDLE_PATH: "vendor/bundle"
   ※昔はinstall時のオプションとしてまとまて
    以下のコマンドが存在していたが、
    非推奨となった
    $ bundle install --path vendor/bundle
  ⑦$ bundle config set --local without 'production'
   ※.bundle /config内に以下が追記される
    BUNDLE_WITHOUT: "production"
   ※install時のオプションで指定する
    以下の記法は禁止された
    $ bundle install --without production
  ⑧$ bundle install
   ※必要なgemをインストールし、
    結果をGemfie.lockに出力する
   ※ここで15分ほどかかる
  ⑨$ bundle exec rails new . --database=postgresql
   ※途中のピリオドを忘れないよう注意!
    ※ピリオドは現在ディレクトリを指す
   ※「bundle exec」を付けたコマンドは、
    bundlerの監視下で実行される
   ※ここで最初は40分ほどかかる
   ※途中Y+EntrでGemfileの上書きを許可
    ※表示される[Ynaqdhm]は以下の略
     Yes, no, all-yes, quit, diff, help, merge
   ※Render.comでは以下オプションも推奨
    (1)-j esbuild
     ※JavaScript approachを
      importmapからesbuildへ変更
    (2)--css bootstrap
     ※CSS processorにbootstrapを選択
  ⑩$ cat Gemfile
   ※Gemfileに各gemが追記されたのを確認
□本番環境のCPUアーキテクチャを想定して追加
 →$ bundle lock --add-platform x86_64-linux
  ※Gemfile.lockに追記される
□作り直されたGemfile.lockに基づき全gemを更新
 →$ bundle update

アプリ開発②|初期動作確認(10min)

□データベースのリセット
 →$ bundle exec rails db:migrate:reset
  ※testapp_developmentとtestapp_testの
   2つのデータベースを初期化する
 □ソケット.s.PGSQL.5432上での
  Connectionがrefusedされたと出たら?
  →clusterをrunさせてからやり直す
   $ pg_ctlcluster 14 main start
  □Remove stale pid file.と出たら?
   ※stale:古い
   →①$ ls -a /var/run/postgresql 
    ②残っている.pidファイルを
     rmしてからやり直す
     $ rm /var/run/postgresql/14-main.pid
 □new encoding (UTF8) is incompatible 
  with the encoding of the template 
  database (SQL_ASCII)と出たら?
  →config/database.yml内の
   encoding: unicodeの上に
   template: template0を追記してやり直す
   ※デフォルトtemplateはtemplate1たが、
    initdb時に文字コードが指定され、
    それ以外が使えなくなっている
   ※template0は文字コード指定前なので
    どんな文字コードでも使える
□Pumaサーバ起動確認
 ※「ピューマ」と呼ぶ
 ※アプリケーションサーバソフトだが、
  webサーバソフトも兼ねることができる
  ※実運用上はwebサーバを分けるべき
 →①$ bundle exec rails s -b 0.0.0.0
   ※sはserverの略
   ※-bはバインドするオプション
    ※bind:サーバのアドレスを指定すること
   ※androidでは-b以下がないとエラーとなる
    ∵getifaddrsが許可されずerrorとなる
    ∵androidは仕様上MACアドレス取得不可
  ②ブラウザからサーバ起動を確認
   →http://0.0.0.0:3000
  ③pumaサーバを停止
   →Ctrl + c
  ④SQLサーバを停止
   →$ pg_ctlcluster 14 main stop
ブラウザhttp://0.0.0.0:3000で表示される画面

アプリ開発③|リモートリポジトリの設定(3min)

 →①Githubホーム画面左上のNewをクリック
  ②Create a new repositoryページで初期設定
   ・リポジトリ名はひとまずtestapp
   ・Privateを選択
   ・Add a README fileは選択しない
   ・Add .gitignoreはNoneのまま
   ・LicenceもNoneのまま
   ※以上のように空にしておかないと、
    pushしたときfetch firstエラーが出る

アプリ開発④|ローカルリポジトリの設定(3min)

□ディレクトリをリポジトリにする
 →①プロジェクトのルートディレクトリへ移動
  ②$ git init
   ※隠しディレクトリ「.git」ができるp
   ※場所を間違えた場合は「.git」を消せばいい
    →$ rm -rf .git
□vendor/bundleを.gitignoreに追加する
 →プロジェクト直下にあるので、
  $ vim .gitignoreで開いて、
  最後に/vendor/bundleを追記すればよい
□コミット
 ※ローカルリポジトリに反映させること
 →①プロジェクトのルートディレクトリへ移動
  ②プロジェクトファイルをステージングに追加
   →$ git add -A
    ※間違えたら以下で取消
     →$ git reset
  ③ステージングを確認
   →$ git status
  ④ステージングの変更をリポジトリに反映
   →$ git commit -m "Initialize repository"
    ※-mでコミットメッセージを直接指定
  ⑤ステージングが無くなったことを確認
   →$ git status
  ※stagingは英語で、(動名詞ではなく)
   足場を示す一般名詞
□ブランチ名を確認
 →$ git branch
  ※「* main」と出ればよい
  ※「* master」の場合は以下のとおり修正する
   $ git branch -m master main
    ※-mはブランチ名変更オプション

アプリ開発⑤|ローカルとリモートの連携(3min)

□リモートリポジトリURLをメモ
 →Githubページ右上の
  「Code▼」を開いて確認できる
  ※リモートリポジトリURLはSSHの方にする
   ∵HTTPSの方は2021年から廃止された
□remoteの登録
 ※remoteはリモートリポジトリの略称
 →$ git remote add origin git@github.com:Tellmae_R/testapp.git
  ※remote名を"origin"と定義しておくと、
   今後origin入力を省略できる仕様となっている
  ※エラーremote origin already existsが出たら
   以下コマンドで削除してからやり直せば良い
   →$ git remote rm origin
□登録したremoteの確認
 →$ git remote -v
  ※各remoteとURLを一覧で確認
□remoteへpush
 →$ git push -u origin main
  ※リモートリポジトリ"origin"へ
   ローカルブランチ"main"を反映させる
  ※-u:pushと同時に、
   ローカルブランチ"main"の上流ブランチを
   リモートブランチ"main"に設定する
 □上流ブランチとは?
  →リモートブランチ名の引数を省略して
   mergeした場合に対象となるブランチ
   ※主にリモートブランチが対象となる

アプリ開発⑥|Hello Rails World!(3min)

□ルートのルーティングを設定
 →①$ vim config/routes.rb
  ②Rails.application.routes.draw do内に
   root "application#hello"を追記
   ※applicationコントローラのhelloアクションを実行
   ※applicationコントローラはデフォルトで存在
□helloアクションを設定
 →①$ vim app/controllers/application_controller.rb
  ②ApplicationControllerクラス内に、
   以下のとおりhelloアクションを追加
   def hello 
    render html: "hello Rails world!"
   end

デプロイ①|最後の更新(3min)

$ bundle install
$ bundle update
$ git add -A
$ git commit -m "Finalize repository"
$ git push origin main

デプロイ②|Herokuにデプロイ(3min)

□CLI上でHerokuにログイン
 →①$ heroku login
  ②Press any keyに従う
  ③出てくるURLをブラウザにコピペして開く
  ④ブラウザ上でのログインがCLI上に反映される
  ※--interactiveのオプションを付けると、
   not supportedエラーが出る
□Herokuサーバにサブドメインを作成
 →$ heroku apps:create
  ※$ heroku createと略してもいい
  ※後に続けてアプリ名を引数にできるが、
   他の誰とも重複が許されず、
   その確認と修正が大変なので、
   一旦自動でアプリ名を作成してもらって
   後から変更する方法が賢明
□リモートリポジトリが追加されたのを確認
 →$ git remote -v
  ※herokuが追加されている
□デプロイ
 →$ git push heroku main
 □gnutls_handshake() failedと出たら?
  →通信異常なのでやり直すだけで
   解決する可能性あり
□表示されたURLにブラウザでアクセス
 ※https://〇〇.herokuapp.com/
 →Hello Rails World!と表示されれば成功

後始末(3min)

□ブラウザ上でHeroku内のデプロイを消す
 →①当該アプリ名を選択
  ②歯車のタグを選択
  ③Delete Appを選択
□アプリのフォルダを消す
 →$ rm -rf ~/testapp
  ※fオプションをつけないと
   write-protected regular fileで
   毎回確認が必要になる
□Githubのリモートリポジトリを消す
 →①ブラウザでGithubを開く
  ②当該アプリ名を選択
  ③右上の「…」からSettingsを選択
  ④Delete this repositoryを選択

いいなと思ったら応援しよう!