Railsアプリを作成してHerokuにDeployしたりBitbucketで管理・自動Deployしたりしてみる

# はじめに
エンジニアだけど流行りのRailsもHerokuも触ったことないのでお勉強しました。その記録です。

Herokuにデプロイするだけ、とかRailsのDockerコンテナ立ち上げるだけ、の記事は山ほどあるけど、一連の流れをまとめた記事は少ないと思うので誰かの参考になればと思います。

# 対象読者
- Railsをこれから頑張りたい人
- どうせならHerokuとはPaaS使ってみたい人
- どうせならBitbucketとかでソースコード管理もしたい人
- 自動Deployとかやってみたい人
- Dockerへの理解が最低限ある人

# こんな感じで進められたらいいな
- rubyやrailsとは何ぞやを知る
- rubyとrailsをdocker-composeでインストール
- ローカルでお試しアプリを実行（Hello World!的な）
- herokuにデプロイ、heroku上でお試しアプリを実行
- bitbucketでソースコード管理
- bitbucketへのpush⇒heroku deployを自動化
- rubyとrailsのお勉強

# Railsがどんなもんか知る
侍エンジニア塾の記事だけど参考になりました。
[Ruby on Railsで何ができるの？特徴と使われているサービスを紹介](https://www.sejuku.net/blog/105791)

# Stable Versionの確認
- Rubyは2.7.0が最新安定版だそうです。
    - [Ruby ダウンロード](https://www.ruby-lang.org/ja/downloads/)
- Railsは安定版がググってもわからなかったからとりあえず最新版の6.0.2を使用(^q^)
    - [railsの全バージョン履歴](https://rubygems.org/gems/rails/versions)

# RubyとRailsをDockerでインストール（失敗）
以下の記事のうち、RubyとRailsのバージョンを変えて実行しましたが、上手くrailsがインストールされずに詰みました。
バージョン変えないでやってもダメだったけど、そもそも自分はWindows。

[丁寧すぎるDocker-composeによるrails5 + MySQL on Dockerの環境構築(Docker for Mac)](https://qiita.com/azul915/items/5b7063cbc80192343fc0)

# RubyとRailsをDockerでインストール（成功）
別記事にまとめました。

[Dockerを使ってRuby2.7&Rails6を構築](https://qiita.com/yagi_eng/items/1368fb2a234629a0c8e7)

# Herokuにデプロイ
以下の記事を参考にしました。

[Dockerで作成したRailsアプリをHerokuにデプロイ](https://qiita.com/NA_simple/items/57ad10717568fea2160b)

## routing設定が必要っぽい
上記の記事だけではHerokuアプリをopenしても「The page you were looking for doesn't exist.」というエラーがページに表示されてしまいました。

`heroku logs`コマンドを実行してみると、以下のようなエラーが出ていました。
ちゃんとrouting設定しないとダメなのね。

```
2020-01-07T12:06:43.026134+00:00 app[web.1]: F, [2020-01-07T12:06:43.026075 #4] FATAL -- : [0a6f4dbc-17ef-4603-a238-07ae198739cb] ActionController::RoutingError (No route matches [HEAD] "/"):
```

参考：[Herokuへデプロイした時に「The page you were looking for doesn't exist. 」エラーが出る](https://qiita.com/tukinasikotonoha/items/1c487f08365ef864490b)

というわけで、`config/routes.rb`を以下のように記述。

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

そしたら無事に「Yay! You’re on Rails!」が表示されました。

# BitbucketにpushしたらHerokuへ自動デプロイ
## Bitbucketでリポジトリ作成
以下の記事が参考になりました。

[Bitbucketに新規リポジトリを作成後、既存の作業ディレクトリと紐付ける](https://qiita.com/outerbridge/items/1a966eddb26e48d5f84c)

手動デプロイの記事ですが、Bitbucketで自動デプロイするように設定するのであれば、「コンテナをHerokuにプッシュ」以降の手順は不要です。

Bitbucketのアカウントは適宜作成。
Bitbucketで新規レポジトリを作成する場合は、「READMEを含めますか？」で「いいえ」を選択しましょう。既存ディレクトリをpushする場合はREADME.mdがあるとpushできません。

<img width="472" alt="bitbucket.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113263/85e794e8-de62-6b53-56d9-9fad6c39819a.png">

## Herokuへ自動デプロイ
以下の記事が参考になりました。

[【令和元年版】BitBucket PipelinesでHerokuに自動デプロイ試してみた！](https://qiita.com/tsumasakky/items/30f61b9bf1e3f969c680)

# RubyとRailsの勉強
~~あとは文法とか最低限の知識を身につけて晴れてRailsエンジニアデビュー！~~
https://prog-8.com/
⇒少しProgate触ってみたけど実務経験のあるエンジニアにはだるいです。
　以下の記事を読めばもう書き始められると思います。

- [他言語からのRuby入門](https://www.ruby-lang.org/ja/documentation/ruby-from-other-languages/)（公式）
- [Ruby基礎文法](https://qiita.com/Fendo181/items/eb2cb17f32d99aa01f59#each%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89)
- [Rubyコーディング規約](https://qiita.com/pipi_taro/items/209969040b597ff024ca)

# 補足
## herokuでの独自ドメインの設定
以下の記事が参考になりそう。

[初めてHerokuで独自ドメインを公開するあなたへ](https://qiita.com/kenjikatooo/items/07c3d911210a4ca96781)