Rails7構築 -その1- Welcomeページまで


# 環境
- macOS 12.6 Monterey 
- rbenv 1.1.2

## 方針
- rbenvでローカルのruby:最新Ver 3.1.2
- データベース:MySQL Server(version: 8.0.31 Homebrew)
## 参考
https://qiita.com/ryohashimoto/items/f5382478c78f296d8291

### 何が無くともディレクトリ作成
「abc」というアプリを作成する前提とする。
「abc」ディレクトリを作成し、ローカルのrubyのヴァージョンを指定する
※事前にrbenvでruby3.1.2は入れておく。

```sh
$ mkdir abc
$ cd abc
$ rbenv versions
* system
  2.7.2
  3.0.2
  3.1.2
$ rbenv local 3.1.2
$ rbenv versions
  system
  2.7.2
  3.0.1
  3.0.2
* 3.1.2 (set by /Users/hoge/Develop/rails7/abc/.ruby-version)
$ ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-darwin21]
```

### bundle initの前にやっておくこと
ローカルのGemにインストールするための
「--path vendor/bundle」は非推奨[DEPRECATED]になったため「bundle config set path 'vendor/bundle'」とする

```sh:
$ bundle config set path 'vendor/bundle'
```
これは一回だけやっとくとconfigでデフォルトがvendor/bundleになる。
```sh:~/.bundle/config
$ cat ~/.bundle/config
---
BUNDLE_PATH: "vendor/bundle"
```
↓参考

https://qiita.com/devzooiiooz/items/8babd82f780f01812f9d

## Gemfileを作成(bundle init)

```sh:abc
$ bundle init
Writing new Gemfile to /Users/hoge/Develop/rails7/abc/Gemfile
```
gemでrailsをインストールする前にインストール可能なバージョンを調べる。
指定しないと最新バージョン。rails7を入れる。
railsのバージョンを調べる。

```sh
#gem queryは非推奨になった
$ gem search -ra "^rails$"
```
2023/01/09時点では7.0.4が最新。

### Gemfile

```rb:Gemfile
# A sample Gemfile
source "https://rubygems.org"

gem "rails"
gem "mysql2"
```


### 一旦bundle install
```sh
$ bundle install
```


```sh:
Bundle complete! 2 Gemfile dependencies, 46 gems now installed.
Bundled gems are installed into `./vendor/bundle`
```


## rails newする
rails new でカレントディレクトリ指定「.」とデータベース指定「-d mysql」を忘れないこと

↓良記事

https://qiita.com/kyntk/items/0936598a903ac74e607d

###### その他オプション
-c: css processorを指定
-j: javascriptのアプローチ方法を選択（defaultはimportmap)
※cssでbootstrapを使用する「-c bootstrap」オプションを指定するとimportmapがインストールされない。（正確にはjavascriptアプローチがjsbundling-rails+esbuildになる）

##### ※参考

https://zenn.dev/yukito0616/articles/7cd2dde18c90d4

データベースオプションのみ指定
```sh
$ rails new . -d mysql
```
例えばaction-mailerを無効にするのであれば
```sh
$ rails new . -d mysql --skip-action-mailer
```

最小限の設定にしたい場合(skip_javascriptなので注意!!)
```sh
$ rails new . -d mysql --minimal
```
参考：

https://techracho.bpsinc.jp/hachi8833/2020_11_05/99914

```
ずらずらずら。途中でGemfileを上書きするか聞いてくるので「y」

```rb
    conflict  Gemfile
Overwrite /home/hogehoge/Develop/rails7/abc/Gemfile? (enter "h" for help) [Ynaqdh] y
```

##### ※nodeのエラーが出たら(Macの場合）
```sh:
Library not loaded: '/usr/local/opt/icu4c/lib/libicui18n.**.dylib
```
```sh:
$ brew install node
```
で解決。

#### .gitignoreに追記
vendor/bundle以下を除外
```sh:./gitignore
# Ignore vendor/bundle/*
/vendor/bundle/*
```
## データベースの設定
データベースにアクセスできるユーザーとパスワードを設定
(ここに生のパスワードを書くのはホントはよろしくないのでcredentials.yml.encを使いましょう)

https://qiita.com/NaokiIshimura/items/2a179f2ab910992c4d39

```yml:config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: railsuser
  password: ********
  socket: /tmp/mysql.sock
development:
  <<: *default
  database: abc_development
```
### データベースを作成
```sh:
$ rails db:create
```

### 一旦サーバ起動
```sh:
$ rails s
```


# 初期画面確認
http://localhost:3000/
でWelcomeページになっているか確認する。
![スクリーンショット 2022-10-25 1.24.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82975/705d1d50-4a13-8751-ea4a-41a3046dbca9.png)

### 続き　その２ bootstrap5をimportmapで
https://qiita.com/devzooiiooz/items/262f71e737f94738debf