Ruby on Rails Tutorial 1章 メモ

初投稿です。
Ruby on Rails Tutorialを理解しながら進めていくためのメモです。

# 文法
## ルーティングを設定する
```ruby:config/routes.rb
root 'controller_name#action_name'
```

## 表示したい文字列を返すアクションを定義する
```app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

  def hello
    render html: "hello, world!"
  end
end
```

# Gitの操作
## git checkout -f
ファイルなどを削除してしまったとき、現在までの変更を強制的に上書きして元に戻す。

```
git checkout -f
```

## git checkout -b branch_name
トピックブランチを新規作成して、そのブランチへの切り替える。

```
git checkout -b branch_name
```


## git commit -a -m "commit_message"
現存するすべてのファイルへの変更を一括でコミットする。

```
git commit -a -m "commit_message"　# git commit -am "commit_message"でも可
```


## git merge branch_name
masterブランチにマージする。

```
git merge branch_name
```


## git branch -d branch_name
トピックブランチを削除する。

```
git branch -d branch_name
```


## git branch -D branch_name
-dフラグと異なり、-Dフラグは変更をマージしていなくてもブランチを削除してくれる。

```
git branch -D branch_name
```

## git remote -v
リモートサーバーのURLを表示する。

```
git remote -v
```

## ブランチでミスをしたとき
```
# これはあくまで例です。ブランチでミスをしたとき以外は実行しないでください。
git checkout -b topic-branch
<ファイルを作成したり編集したり削除したり...>
git add -A
git commit -a -m "Make major mistake"
git checkout master
git branch -D topic-branch
```

# 開発環境と本番環境
## 本番環境と開発環境のgemを分ける
```
source 'https://rubygems.org'

gem 'rails',        '5.1.4'
gem 'puma',         '3.9.1'
gem 'sass-rails',   '5.0.6'
gem 'uglifier',     '3.2.0'
gem 'coffee-rails', '4.2.2'
gem 'jquery-rails', '4.3.1'
gem 'turbolinks',   '5.0.1'
gem 'jbuilder',     '2.6.4'

# development環境とtest環境のみ使用
group :development, :test do
  gem 'sqlite3', '1.3.13'
  gem 'byebug',  '9.0.6', platform: :mri
end

# development環境のみ使用
group :development do
  gem 'web-console',           '3.5.1'
  gem 'listen',                '3.1.5'
  gem 'spring',                '2.0.2'
  gem 'spring-watcher-listen', '2.0.1'
end

# production環境のみ使用
group :production do
  gem 'pg', '0.20.0' # HerokuではSQLiteではなく、PostgreSQLデータベースを使うため
end

# Windows環境ではtzinfo-dataというgemを含める必要があります
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
```


## 本番用のgem (この場合はpg gem) をローカルの環境にはインストールしないようにする
```
bundle install --without production
```

# Herokuコマンド
## heroku create heroku_name
Herokuアプリの名前を指定して作成する。

```
heroku create heroku_name
```
## heroku rename heroku_new_name
Herokuアプリの名前を変更する

```
heroku rename heroku_new_name
```
## heroku logs
Herokuアプリの最近のログを調べる(本番環境の不具合を見つけるときに役立つ)。

```
heroku logs
```

# 詰まったところ
## 1.4.3 Bitbucket
### リスト 1.10: catコマンドで公開鍵を出力する
```
cat ~/.ssh/id_rsa.pub
```
解決策

```
ssh-keygen
cat ~/.ssh/id_rsa.pub
```
参考にしたサイト：https://teratail.com/questions/50694


### リスト 1.11: Bitbucketへのリポジトリ追加とリポジトリへのプッシュ
```
git push -u origin --all
```
解決策

```
git push --mirror git@bitbucket.org:<account_name>/<repo_name>
```
参考にしたサイト：https://qiita.com/shozzy/items/b46465b2f24f64322dd8



## 1.5.1 Herokuのセットアップ
### リスト 1.14: クラウドIDE上でHerokuをインストールするコマンド
```
source <(curl -sL https://cdn.learnenough.com/heroku_install)
```

解決策

```
sudo yum -y update
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
export NVM_DIR=”/home/ec2-user/.nvm”
[ -s “$NVM_DIR/nvm.sh” ] && \. “$NVM_DIR/nvm.sh”
nvm install node --reinstall-packages-from=node
npm install -g cli-engine-command@8.0.0
npm install -g heroku-cli
nvm install v8.3.0
nvm use --delete-prefix v8.3.0
node -v
heroku -v
```
参考にしたサイト：https://qiita.com/bdogrep/items/8620dbba5e4c3fd859df