Railチュートリアルのsample_app作成の流れのみ

1.リスト 1.1:Rubyドキュメントをスキップする設定を.gemrcファイルに追加するコマンド

```
$ echo "gem: --no-document" >> ~/.gemrc
```

2.リスト 1.2:バージョンを指定してRailsをインストールする

```
$ gem install rails -v 6.0.3
```

3.JavaScriptソフトウェアの依存関係を管理するYarnというプログラム

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

または、

```
$ yarn install --check-files
```

4.リスト 1.3:Railsプロジェクト用のenvironmentディレクトリを作る

```
# クラウドIDEではこの手順は不要です
$ cd                    # プロジェクトのホームディレクトリに移動
$ mkdir environment     # environmentディレクトリを作成
$ cd environment/       # 作成したenvironmentディレクトリに移動
```

5.リスト 1.4:rails newを実行する（バージョン番号を指定）

```
$ rails _6.0.3_ new sample_app
```
6.リスト 1.6:Gemfileの内容を一新させ、Rubyのバージョン番号を削除する

```ruby:Gemfile
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

gem 'rails',      '6.0.3'
gem 'puma',       '4.3.6'
gem 'sass-rails', '5.1.0'
gem 'webpacker',  '4.0.7'
gem 'turbolinks', '5.2.0'
gem 'jbuilder',   '2.9.1'
gem 'bootsnap',   '1.4.5', require: false

group :development, :test do
  gem 'sqlite3', '1.4.1'
  gem 'byebug',  '11.0.1', platforms: [:mri, :mingw, :x64_mingw]
end

group :development do
  gem 'web-console',           '4.0.1'
  gem 'listen',                '3.1.5'
  gem 'spring',                '2.1.0'
  gem 'spring-watcher-listen', '2.0.1'
end

group :test do
  gem 'capybara',           '3.28.0'
  gem 'selenium-webdriver', '3.142.4'
  gem 'webdrivers',         '4.1.2'
end

# Windows ではタイムゾーン情報用の tzinfo-data gem を含める必要があります
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
```

7.アプリケーションのGemfileの内容をリスト 1.6で置き換えたら、bundle installを実行してgemをインストールします。

```
ubuntu:~/environment $ cd sample_app
ubuntu:~/environment/sample_app (master) $ bundle install
```

8.リスト 1.7:ローカルWebサーバーへの接続を許可する

```ruby:config/environments/development.rb
Rails.application.configure do
  .
  .
  .
  # Cloud9 への接続を許可する
  config.hosts.clear
end
```

9.リスト 1.8:Railsサーバーを実行する

新しいターミナルを開き下記コードを実行

```
ubuntu:~/environment $ cd sample_app
ubuntu:~/environment/sample_app (master) $ rails server
```

10.リスト 1.9:Applicationコントローラにhelloを追加する

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

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

11.リスト 1.11:ルートルーティングを設定する

```ruby:config/routes.rb
Rails.application.routes.draw do
  root 'application#hello'
end
```

12.初回システムのセットアップ、リスト 

1.12:名前とメールをGitに設定する

```
$ git config --global user.name "自分の名前"
$ git config --global user.email your.email@example.com
```

13.リスト 1.13:クラウドIDEでデフォルトのエディタを設定する

```
$ sudo ln -sf `which nano` /usr/bin
```

14.（必須ではない）リスト 1.14:git coをcheckoutのエイリアスに設定する

```
$ git config --global alias.co checkout
```

15.リスト 1.15:Gitでパスワードを一定時間保持するように設定する

```
$ git config --global credential.helper "cache --timeout=86400"
```

16.初回のリポジトリセットアップ

```
ubuntu:~/environment/sample_app (master) $ git init
```

17.プロジェクトの全ファイルをリポジトリに追加

```
ubuntu:~/environment/sample_app (master) $ git add -A
```

18.変更をリポジトリに反映（コミット）するにはcommitコマンドを使う。

```
$ git commit -m "Initialize repository"
```

19.logコマンドでコミットメッセージの履歴が見られる。

```
ubuntu:~/environment/sample_app (master) $ git logcommit 2a61a502766ca02dca5bff9eb67adb5db292b5c2 (HEAD -> master)
Author: 自分のユーザー名 <自分のメルアド>
Date:   Mon Oct 11 22:45:30 2021 +0000

    Initialize repository
```

`q`を押すと終了できる。

20.GitHubに登録（省略）

21.リスト 1.16:GitHubをリモートoriginに追加してそのリポジトリにpushする

```
ubuntu:~/environment/sample_app (master) $ git remote add origin https://github.com/mizumanjyu/sample_app.git 
ubuntu:~/environment/sample_app (master) $ git push -u origin master
Username for 'https://github.com/mizumanjyu/sample_app.git': mizumanjyu
Password for 'https://mizumanjyu@github.com/mizumanjyu/sample_app.git': 
Counting objects: 104, done.
Compressing objects: 100% (86/86), done.
Writing objects: 100% (104/104), 55.82 KiB | 2.15 MiB/s, done.
Total 104 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), done.
To https://github.com/mizumanjyu/sample_app.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
```

passwordを入力するとき何も表示されてないけど、確かに入力できている。あと、githubのパスワードではなく、トークンを入力すること。

22.ブランチ

```
ubuntu:~/environment/sample_app (master) $ git checkout -b modify-README
Switched to a new branch 'modify-README'
ubuntu:~/environment/sample_app (modify-README) $ git branch
  master
* modify-README
```

23.Edit(編集)
リスト　1.17:新しいREADMEファイル

```ruby:README.md

24.Commit(コミット)

ブランチの状態を確認

```
ubuntu:~/environment/sample_app (modify-README) $ git status
On branch modify-README
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   Gemfile
        modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")
```

コミット

```
ubuntu:~/environment/sample_app (modify-README) $ git commit -a -m "Improve the README file"
[modify-README 326628a] Improve the README file
 2 files changed, 5 insertions(+), 24 deletions(-)
```

Merge(マージ)

masterブランチに変更をマージ(merge)する。

```
ubuntu:~/environment/sample_app (modify-README) $ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
ubuntu:~/environment/sample_app (master) $ git merge modify-README
Updating 2a61a50..326628a
Fast-forward
 Gemfile   |  2 --
 README.md | 27 +++++----------------------
 2 files changed, 5 insertions(+), 24 deletions(-)
```

変更をマージした後は、`git branch -d`を実行してトピックブランチを削除すれば終わり。

```
ubuntu:~/environment/sample_app (master) $ git branch -d modify-README
Deleted branch modify-README (was 326628a).
```

25.Push(プッシュ)

```
ubuntu:~/environment/sample_app (master) $ git push
Username for 'https://github.com/mizumanjyu/sample_app.git': mizumanjyu
Password for 'https://mizumanjyu@github.com/mizumanjyu/sample_app.git': 
Counting objects: 4, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 477 bytes | 477.00 KiB/s, done.
Total 4 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/mizumanjyu/sample_app.git
   2a61a50..326628a  master -> master
```

26.Herokuのセットアップとデプロイ

HerokuではPostgreSQLデータベースを使うので本番(production)環境に`pg`gemをインストールしてRailsがPostgreSQLと通信できるようにする。

Gemfileの追加や並び替えを行ったGemfile

```ruby:Gemfile
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

gem 'rails',      '6.0.3'
gem 'puma',       '4.3.6'
gem 'sass-rails', '5.1.0'
gem 'webpacker',  '4.0.7'
gem 'turbolinks', '5.2.0'
gem 'jbuilder',   '2.9.1'
gem 'bootsnap',   '1.4.5', require: false

group :development, :test do
  gem 'sqlite3', '1.4.1'
  gem 'byebug',  '11.0.1', platforms: [:mri, :mingw, :x64_mingw]
end

group :development do
  gem 'web-console',           '4.0.1'
  gem 'listen',                '3.1.5'
  gem 'spring',                '2.1.0'
  gem 'spring-watcher-listen', '2.0.1'
end

group :test do
  gem 'capybara',           '3.28.0'
  gem 'selenium-webdriver', '3.142.4'
  gem 'webdrivers',         '4.1.2'
end

group :production do
  gem 'pg', '1.1.4'
end

# Windows ではタイムゾーン情報用の tzinfo-data gem を含める必要があります
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
```

27.本番用以外のgemをインストールする(インストールするとupdateするように言われるのでbundle updateをする)

```
ubuntu:~/environment/sample_app (master) $ bundle install --without production
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
Fetching gem metadata from https://rubygems.org/............
Fetching gem metadata from https://rubygems.org/.
You have requested:
  listen = 3.1.5

The bundle currently has listen locked at 3.7.0.
Try running `bundle update listen`

If you are updating multiple gems in your Gemfile
at once,
try passing them all to `bundle update`
ubuntu:~/environment/sample_app (master) $ bundle update
```

28.変更した内容をコミットする

```
ubuntu:~/environment/sample_app (master) $ git commit -a -m "Update Gemfile Heroku"
[master c6e2cb0] Update Gemfile Heroku
 2 files changed, 148 insertions(+), 158 deletions(-)
 rewrite Gemfile (87%)
```

29.Herokuのアカウントを新規作成して設定する、[Herokuのユーザー登録](https://signup.heroku.com/)を行い、つづいて、自分のシステムにHerokuコマンドラインクライアントがインストールされているか確認する

```
ubuntu:~/environment/sample_app (master) $ heroku --version
heroku: command not found
```

「まだインストールできてない」

30.クラウドIDE上でHerokuをインストールするコマンド

```
ubuntu:~/environment/sample_app (master) $ source <(curl -sL https://cdn.learnenough.com/heroku_install)
```

「これ実行したときアラート表示されたが、インストール完了してた。」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1933665/c2416fcc-d8f3-d97d-7f99-e91dc6df7593.png)

```
heroku update
```

「をしろって意味？なのかheroku --versionで確認したらエラーなくなった。」

31.herokuにログインする、--interactiveオプションをつけるとブラウザを開かない

```
ubuntu:~/environment/sample_app (master) $ heroku login --interactive
heroku: Enter your login credentials
Email: **************
Password: *********
Logged in as *******************
```

32.Herokuに新しいアプリケーションを作成する

```
ubuntu:~/environment/sample_app (master) $ heroku create
Creating app... done, ⬢ evening-ravine-43128
https://evening-ravine-43128.herokuapp.com/ | https://git.heroku.com/evening-ravine-43128.git
```

33.Herokuにデプロイする(1)

まずはGitを使ってHerokuにリポジトリをプッシュする。

```
ubuntu:~/environment/sample_app (master) $ git push heroku master
```

34.Herokuコマンド

アプリケーションの名前を変更する

```
ubuntu:~/environment/sample_app (master) $ heroku rename rails-tutorial-sample_app
Renaming evening-ravine-43128 to rails-tutorial-sample_app... !
 ▸    Name must start with a letter, end with a
 ▸    letter or digit and can only contain lowercase
 ▸    letters, digits, and dashes.
```

「条件にあった名前でないと当然リネームできない。ので下記の通り変更。」

```
ubuntu:~/environment/sample_app (master) $ heroku rename tuttakatutta
Renaming evening-ravine-43128 to tuttakatutta... done
https://tuttakatutta.herokuapp.com/ | https://git.heroku.com/tuttakatutta.git
 ▸    Don't forget to update git remotes for all
 ▸    other local checkouts of the app.
Git remote heroku updated
```

35.第3章　ほぼ静的なページの作成へ飛び、サンプリアプリケーションを作成するってすでにsample_appで作成開始してる

Gemfileをサンプルアプリケーション用に編集する

```ruby:Gemfile
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

gem 'rails',      '6.0.3'
gem 'puma',       '4.3.6'
gem 'sass-rails', '5.1.0'
gem 'webpacker',  '4.0.7'
gem 'turbolinks', '5.2.0'
gem 'jbuilder',   '2.9.1'
gem 'bootsnap',   '1.4.5', require: false

group :development, :test do
  gem 'sqlite3', '1.4.1'
  gem 'byebug',  '11.0.1', platforms: [:mri, :mingw, :x64_mingw]
end

group :development do
  gem 'web-console',           '4.0.1'
  gem 'listen',                '3.1.5'
  gem 'spring',                '2.1.0'
  gem 'spring-watcher-listen', '2.0.1'
end

group :test do
  gem 'capybara',                 '3.28.0'
  gem 'selenium-webdriver',       '3.142.4'
  gem 'webdrivers',               '4.1.2'
  gem 'rails-controller-testing', '1.0.4'
  gem 'minitest',                 '5.11.3'
  gem 'minitest-reporters',       '1.3.8'
  gem 'guard',                    '2.16.2'
  gem 'guard-minitest',           '2.4.6'
end

group :production do
  gem 'pg', '1.1.4'
end

# Windows ではタイムゾーン情報用の tzinfo-data gem を含める必要があります
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
```

36.前の章と同じように`bundle install`を実行してGemfileで指定したgemのインストールをする。`--without production`オプションを使って、production環境でしか使わないgemはインストールしないようにしておく。

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

```
$ bundle update
```

37.Gitリポジトリの初期化

```
ubuntu:~/environment/sample_app (master) $ git init
Reinitialized existing Git repository in /home/ubuntu/environment/sample_app/.git/
ubuntu:~/environment/sample_app (master) $ git add -A
ubuntu:~/environment/sample_app (master) $ git commit -m "Initialeze repository"
[master 81e6fd0] Initialeze repository
 2 files changed, 49 insertions(+), 4 deletions(-)
```

38.サンプルアプリケーション向けに書き換えたREADME

```ruby:README.md
# Ruby on Rails チュートリアルのサンプルアプリケーション

これは、次の教材で作られたサンプルアプリケーションです。
[*Ruby on Rails チュートリアル*](https://railstutorial.jp/)
（第6版）
[Michael Hartl](https://www.michaelhartl.com/) 著

## ライセンス

[Ruby on Rails チュートリアル](https://railstutorial.jp/)内にある
ソースコードはMITライセンスとBeerwareライセンスのもとで公開されています。
詳細は [LICENSE.md](LICENSE.md) をご覧ください。

## 使い方

このアプリケーションを動かす場合は、まずはリポジトリを手元にクローンしてください。
その後、次のコマンドで必要になる RubyGems をインストールします。

$ bundle install --without production

その後、データベースへのマイグレーションを実行します。

$ rails db:migrate

最後に、テストを実行してうまく動いているかどうか確認してください。

$ rails test

テストが無事に通ったら、Railsサーバーを立ち上げる準備が整っているはずです。

$ rails server

詳しくは、[*Ruby on Rails チュートリアル*](https://railstutorial.jp/)
を参考にしてください。
```