Railsチュートリアルのセットアップ関連だけ要約

Railsチュートリアルをようやく一周しました。
次の段階として、Railsチュートリアルを参考にしながらオリジナルのWebサービスを作ってみるために、セットアップ関連だけまとめています。
開発環境はCloud9です。

##Rails環境の構築
###便利コマンド
普段からドキュメントをインストールしないように指定するコマンド（らしい）。
参考にさせていただきました。
[Railsチュートリアル第1章の「$ printf "install: --no-document \nupdate: --no-document\n" >> ~/.gemrc」を分解](https://qiita.com/nodenanode/items/11a34144533654a5c024)

```
$ printf "install: --no-document \nupdate:  --no-document\n" >> ~/.gemrc
```

###Railsインストール
今回、バージョンはチュートリアルのままとしたが、いずれバージョンアップもやっておかないと。。。

```
$ gem install rails -v 5.1.6
```

###rails newの実行

```
$ rails _5.1.6_ new "タイトル"
```

##GitHub環境の構築
###gitの生成

```
$ cd ~/envronment/"タイトル"
$ git init
$ git add -A
$ git commit -m "Initialize repository" # コメントは定番のもの
```

###リポジトリの作成(GitHub)
GitHub上で 'New repository'してリポジトリを作成後、以下コマンドを実行（URLはリポジトリ作成画面に記載）

```
$ git remote add origin　"URL"
$ git push -u origin master

# uオプションをつけて、origin masterを上流ブランチとして設定
# 次回以降、git pushのみでorigin masterへのpushが可能
```

リポジトリを非公開としたい場合は、Settingの一番下'Danger Zone'内にあるMake privateをクリック

###SSH 公開鍵の設定(GitHub)

```
$ cd ~/.ssh          # 鍵を入れるフォルダに移動
$ ssh-keygen -t rsa  # 鍵を生成
$ cat id_rsa.pub     # 鍵の中身を表示して手動でコピー

# cloud9ではpbcopyが使用できなかったので、手動でコピーしています。
```


https://github.com/settings/ssh で公開鍵を設定
以下コマンドで接続を確認し、以下コメントが出れば接続完了。

```
$ ssh -T git@github.com
```

Hi (account名)! You've successfully authenticated, but GitHub does not provide shell access.

参考にさせていただきました。
[GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~](https://qiita.com/shizuma/items/2b2f873a0034839e47ce)

#####警告がでた場合の対処方法
以下のような警告が出る場合があります（僕は出ました）。
Warning: Permanently added the RSA host key for IP address 'xxx.xxx.xxx.x' to the list of known hosts.

pushができなくなるわけではないので問題はなさそうですが、Worningがでているのは気持ち悪い。。。
以下コマンドでknown_hostsの内容が更新されてWorningがでなくなります。

```
$ ssh-keygen -R "IPアドレス"

# 上記で直らない場合は、以下コマンドも試してみてください

$ ssh-keygen -R github.com
```

#####push時に毎回パスワードを聞かれないための方法
1. GitHubのCode画面の右側"Clone or download"ボタンをクリック
2. 右上の"Use SSH"をクリックし、表示されたURLをコピー
3. ターミナルから以下コマンドを実行

```
$ git remote set-url origin "URL"

# 確認のため以下を実行
$ git remote -v

#以下のように、git@github.comから始まっていれば成功！
origin  git@github.com:reiji012-pg/Tabetter.git (fetch)
origin  git@github.com:reiji012-pg/Tabetter.git (push)
```
###Herokuのセットアップ

ここもひとまずチュートリアルのままで。
本番環境のみにPostgreSQLのgemをインストール

```Gemfile.
group :production do
  gem 'pg', '0.20.0'
end
```

開発環境とテスト環境にSQLiteのgemをインストール

```Gemfile.
group :development, :test do
  gem 'sqlite3', '1.3.13'
  gem 'byebug',  '9.0.6', platform: :mri
end
```

pg gemを本番環境にインストールしないようにオプションを追加してインストール

```
$ bundle install --without production
```

Herokuをインストール

```
$ source <(curl -sL https://cdn.learnenough.com/heroku_install)
```

インストールを確認後、ログインからデプロイまで。

```
$ heroku --version
$ heroku login --interactive
$ heroku keys:add
$ heroku create
$ git push heroku master
```

以下コマンドでアプリケーションの名称を変更可能

```
$ heroku rename "アプリケーション名"
```

####Herokuコマンドが使えなくなっている問題

ターミナルを起動する度にHerokuの設定が消えてしまう
herokuへのパスを書いたファイルを、ターミナルの起動毎に実行するように設定することで解消可能
以下いずれも、viコマンドでファイル内の一番下に挿入する

```~/.bashrc
PATH=/usr/local/heroku/bin:$PATH
```

```~/.bash_profile
source ~/.bashrc
```

###本番環境でのSSL設定

以下ファイルを修正（コメントアウトしているので、コメントを解除するだけ）

```config/environments/production.rb
config.force_ssl = true
```

HerokuのWebサーバを、デフォルトのWEBrickからPumaに置き換える
（著しいトラフィックを扱うことができず、本番環境に適していないため）

こちらもコメントアウトしているものを解除するだけ

```config/puma.rb
on_worker_boot do
  ActiveRecord::Base.establish_connection if defined?(ActiveRecord)
end
```

こちらはファイルを新規作成（./Procfile）

```
web: bundle exec puma -C config/puma.rb
```

とりあえずこれでアプリケーションの作成に入っていける環境が構築できたかと思います。