railsで作ったアプリをとりあえず公開する方法。rails＋GitHub(GitHub Desktop)＋heroku

##やりたいこと
ローカルで初めのページだけ雑に作ったアプリをherokuにデプロイ、全世界に公開する

初期画面だけ表示するので、最終結果はこんなのです。
<img width="1280" alt="スクリーンショット 2018-04-30 19.50.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/145707/22f6fdc6-e686-1731-75ca-9d3ef609284c.png">

###対象
初心者、とりあえずrailsで作って公開（デプロイ）してみたい人

ーーーー
とりあえずネットに公開するまでの備忘録。
個人が作って**公開するまでの過程ってこんなに簡単なんだ**という感動を共有したい。
ーーーー

###参考サイト
rails公式のチュートリアル
ここではgitbucketというサービスを使っていたところをGitHubに変更
https://railstutorial.jp/chapters/beginning?version=5.1

##使用ツール
・Macbook（High Sierra）
・GitHub Desktop（https://desktop.github.com）
GitHubの公式ツール
・atom
・ruby on rails

以下2つのアカウントは作成済
・heroku
・GitHub


#以下、手順

railsはインストール済みという体で進みます。

```terminal:terminal
rails new cafe_app
```
(cafe_appの部分はアプリ名、何か好きな単語を入れてください)

### 初期表示の画面を作成
初期画面を作り、そこへのリンクを貼っておかないと、
本番環境では表示画面が見つかりませんというエラーになります。

```ruby:app/controllers/application_controller.rb
class ApplicationController < ActionController::Base

  def cafe
    render html: "cafe_appへようこそ!"
  end

end
```

```ruby:config/routes.rb
Rails.application.routes.draw do
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
    root 'application#cafe'
end
```

###gemfileをちょっといじる
herokuはsplite3に対応していないため、本番環境にsqliteをインストールしないように改修

```ruby:Gemfile
# この2行を削除
# Use sqlite3 as the database for Active Record
gem 'sqlite3'

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  #ここ1行追加
  gem 'sqlite3', '1.3.13'
end

# この3行を一番下に追加
group :production do
  gem 'pg', '0.18.4'
end
```

ターミナルにてgemをインストール

```terminal:terminal
bundle install --without production
bundle update
```

## GitHub DesktopでGitHubにアップ

以下からダウンロードしてきてインストールしてください。
・GitHub Desktop（https://desktop.github.com）

### GitHubへのアップロード
GitHub Desktopのツールバー 「File > Add Local Repositry > フォルダを選ぶ」でrails newで作成したフォルダを選択する

左下でコミットの名前を付ける
↓
青い「Commit to master」ボタンをクリック
↓
右上の「Publish Repository」ボタンをクリック
<img width="1280" alt="スクリーンショット 2018-04-30 18.28.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/145707/2369f5d5-d016-89e0-837a-78be2f4b2c21.png">

「Keep this code private」のチェックを外して青い「Publish Repositry」ボタンを押す（**ここでブランチの名前が付けられます**）
<img width="1280" alt="スクリーンショット 2018-04-30 18.29.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/145707/3688310b-0537-4051-73a1-69e77f1dd02a.png">

## herokuへのデプロイ＆自動デプロイ設定
herokuのサイトでnew appを作る
以下の画像の右上「Create new app」
<img width="1280" alt="スクリーンショット 2018-04-30 18.39.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/145707/6c4b07c8-9168-9a3c-3185-114516490fe8.png">

### GitHubと繋げる
作ったアプリの中に入って、deployタブを押す
↓
GitHubを選ぶ
↓
先ほどGitHubにアップロードしたブランチの名前で検索、選択する

<img width="1280" alt="スクリーンショット 2018-04-30 18.40.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/145707/b02c8839-bcef-b8e7-1eac-77660db3ccfb.png">

### GitHubからソースをデプロイする
Deployの画面を下にスクロールすると以下の画面が出てくる。

Manual Deployのところにある「Deploy Blanch」ボタンを押すと、ログがガーッと書かれてデプロイされる。
<img width="1280" alt="スクリーンショット 2018-04-30 18.40.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/145707/2154d43d-d322-4d0b-ec39-47e7de70a852.png">

正常に完了すると「view」ボタンが出てくるので、それを押すと
デプロイされたアドレスに飛べる。
<img width="1280" alt="スクリーンショット 2018-04-30 18.43.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/145707/0cffadc1-0e58-78f9-7c67-74678b6e0804.png">

<img width="1280" alt="スクリーンショット 2018-04-30 19.50.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/145707/53286ca7-d6ca-bf82-abc2-40ffca8c38ce.png">

### デプロイ自動化

「Enable Automatic Deploy」を押すとGitHubのmasterが更新された時に、
自動で更新をかけてくれる。


#まとめ
 個人でも、簡単なWEBサービス、プロトタイプを作れる時代なんだと強く感じました。

# 現時点での疑問点
・自動でデプロイした時に、データベースとかはきちんと保存されるのかな？
・デプロイ失敗した場合は前のソースのままかな？
・herokuのデータベースの中身をエクセルみたいにみれるソフトないかな、というかherokuのデータベースはどうやってみるんだ。。。