vscodeでRails の開発環境構築


ご指摘くだされ
### VsCode
Windows、Linux、macOS上で動作するコードエディタである
[Visual Studio Codeのページ]
(https://code.visualstudio.com/)

# mkdir　ディレクトリ名
railsの作業ディレクトリ作成
(スペースを開けるならば半角スペース。全角ではエラー)

```ターミナル.
    $ mkdir TestApp
    $ cd TestApp
    #実行後
    C:\Users\ユーザー名\TestApp>
```

# bundle exec rails new kuzunoApp -B
railsのプロジェクトを作成する

```ターミナル.
    $ bundle init
```

```Gemfile.
    # gem "rails"
        ↓
    gem "rails"
```

```ターミナル.
    $ bundle exec rails new ??? -B 
```
### [補].(どっと)の場合cdで階層を移動する必要はない
???の部分を.（ドット）にすると現在のディレクトリにRailsプロジェクトが生成されます。（この場合はcdの必要なし。
インストール実行時にターミナルの中で「Gemfileを上書きしていいか？」と聞かれますが、yで続行します）

```
Overwrite /Users/なまえ/ディレクトリ名/Gemfile? (enter "h" for help) [Ynaqdhm] 
```

###　[補]Bundlerのインストール

```ターミナル.
    $ gem install bundler
```

### 【エラー】Could not find gem 'mysql2 (< 0.6.0, >= 0.4.4) x86-mingw32' in any of the gem sources listed in your Gemfile.
mysqlをインストールする

```macの場合.
    $ brew install mysql
```
[windowsの場合]
(https://dev.mysql.com/doc/refman/8.0/en/windows-installation.html)


# bundle install 
初回はパスを指定

```
    $ bundle install --path vendor/bundle
```
これで、railsのコマンド(rails new)を利用することが出来るようになります
この時「Gemfile.lock」というファイルができ、これには、インストールしたgemの名前とバージョンが記載されてます 
gemを加えたい時は、「Gemfile」に記述してもう一度`bundle install`をします

### [補]--path vendor/bundle

一度パス指定をするとその旨がファイルに記述されて次からは、そこに指定されたパスにインストールされるようになる
.bundleディレクトリ内のconfigファイルに設定が追記される

```.bundle/config.
BUNDLE_PATH: "vendor/bundle"
```

システムのgemをできるだけクリーンに保つため作業フォルダ内のvendor/bundleに格納する

### 【エラー】An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue
対処法

根本を直さなきゃいけないんだろけれども毎回参考にしています(自分の環境ではsudoをつけてもエラーが出ます)

[mysql2がインストールできない問題](https://qiita.com/nakki/items/e15c6b024d27edb2b96b)



[RailsプロジェクトでMySQLがbundle installできなかった](https://qiita.com/akito19/items/e1dc54f907987e688cc0
)

```ターミナル.
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
```
コマンドのみ解決

### [補]rails new
???を「.」にすると現在のフォルダ、「todo」や「name」等の名前を付けると今の階層からひとつ下にフォルダが作られる

```ターミナル.
    $ bundle exec rails new ??? -B 
```

--skip-bundleオプションをつけないと、rails newコマンド実行時に、グローバルな場所に、関連gemがインストールされる

```
    -d mysql  　
```
mysqlにデータベースを変更（railsのデフォルトのDBはsqlite3）

```
    ｰB, --skip-bundle
```
システムにbundle installを行わないようにする


# config/database
passwordを設定

今作ったフォルダの中にある
`config/database.yml`の17行目にデーターベースの(Mysqlとかの)パスワードを入れる(エラーが出るようなら空白のままで良い)

```config/database.yml
    password: ぱすわーど
    #（半角スペース空けないとエラー）　
```
### 【エラー】Access denied for user 'root'@'localhost' (using password: YES)

```
Created database 'にゃまえ_development'
Created database 'にゃまえ_test'
```
上のような二行ではなく(using password: YES)と出たら先のdatabase.ymlで設定したpasswordをまっさらに戻して保存してもう一度createすれば通るはず

```database.yml
  password: (消す)
```

# rails db:create
### [補]gemがない
```
bundle install --path vendor/bundle
```
データベースを作成します。rails == rakeらしいです

```
    $ rails db:create
```

これで`bundle exec rails s`をするとブラウザでYay! You’re on Rails!と表示されるはずです！！！

# rails g model
```
    $ rails g model モデル名 フィールド:型 
    $ rails g model User name:string 
```
「モデル名」の一文字目は大文字で単数形として書く

```/db/migrate.
    t.string :name #コマンドで作成した時に作ったもの
    t.integer :age #同じ書き方でここに書き込める
```
# rails db:migrate
モデルの変更を確定するため

```
   $ rails db:migrate
```
### [補]Mysql2::Error: Table 'テーブル名' already exists
mysqlを直接編集する方法が載っています
[Mysql2::Error: Table 'テーブル名' already existsと表示されてしまった時の対処法]
(https://bokunonikki.net/post/2018/0214_rails_mysql_error/)
# [補]bundle exec rails db:rollback
モデルの変更を戻す

```
    # 一つ前のテーブルをmaigrate前に戻す
    $ bundle exec rails db:rollback
    # 複数のテーブルを戻す
    $ bundle exec rails db:rollback STEP=数
```
[リファレンス　rake db:rollback]
(http://railsdoc.com/references/rake%20db:rollback)

# bundle exec rails g controller
コントローラーとビューを作成
「コントローラー名」は複数形で、頭文字は大文字(例：User, Post, Monster)
newアクションを持つUsersコントローラーを作るときは次のように入力します

```ターミナル.
    一例
    $ rails g controller Users new
```
この場合は下記の二つは自動で記述される

```users.controller.rb

    def new
    end
```

```route.rb
    get 'users/new'
```


# bundle exec rails s
ブラウザを起動する

```ターミナル.
    $ bundle exec rails s
```

```route.rb
    get "/" => "users#new"
```
とすると「localhost:3000」で自動生成のuserコントローラーのnewアクションでページが表示される

### 【エラー】A server is already running.
このエラーが出た場合は`/tmp/pids/server.pid.`ファイルを消す
手動もしくは下記コマンド

```ターミナル.
    $ rm tmp/pids/server.pid
```

# .gitignore

`git push `コマンドを打つ前に
.gitignoreの中で

```.gitignore.
    vendor/bundle
```

と追加すると`git push`の時間が短くなる

参考にさせていただきました

[新規Railsプロジェクトの作成手順まとめ]
(https://qiita.com/yuitnnn/items/b45bba658d86eabdbb26)

[Railsのプロジェクトを新規作成する手順]
(http://hinathy.hatenablog.com/entry/2015/08/04/175627)

thank you にゃー

#　なんどもなんども更新を続けています
うまくいかない場合や、おかしい記述があったら教えてください