Ruby on Rails チュートリアル　第一章

#はじめに
自分がRailsを勉強するときに、簡単にまとめたやつがあったらいいのにと思ったので学習しながら編集しました。
自分の勉強用です。
<br>
AWSでのCloud9の設定はとばします。

##1.2.2 Railsをインストールする

```linux:ターミナル
$ echo "gem: --no-document" >> ~/.gemrc
```
**Rubyドキュメントをインストールしないよう.gemrcファイルを設定する**
.gemrcって言うのはgemの設定ファイル
設定は「gemのインストールやアップデートの際にドキュメントファイル生成しない」的な感じ
ドキュメントとは、説明書のこと。
Gemを使うに当たって絶対必要ではなく、サイズも大きくなるし時間もかかるからスルーしますというやつ。
<br>

```linux:ターミナル
$ gem install rails -v 6.0.3

$ rails -v　

$ ruby -v 
```
Railsのインストールとバージョン確認をする。
<br>

```linux:ターミナル
$ source <(curl -sL https://cdn.learnenough.com/yarn_install)
```
JavaScriptの依存関係を管理するYarnというプログラムをインストールする。

##1.3 最初のアプリケーション

```linux:ターミナル
$ cd ~/environment
$ rails _6.0.3_ new hello_app　
```
rais&nbsp;newを実行する(バージョン番号を指定)
並び順は rails バージョン指定 new アプリ名
<br>

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

gem 'rails',      '6.0.3'
gem 'puma',       '4.3.4'
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]
```
Gemfileを書き換える。
<br>

```linux:ターミナル
$ cd hello_app/
$ bundle install
```
gemをインストールする。
ここでエラーが出てしまったのでbundle uddateする。

```linux:ターミナル
$ bundle uddate
```
再度bundle installする。

```linux:ターミナル
$ bundle install
```

### 1.3.2 rails server

```Ruby:config/environments/development.rb
Rails.application.configure do
  .
  .
  .
  # Cloud9 への接続を許可する
  config.hosts.clear
end
```
Webサーバーへの接続を許可が必要らしいので、config/environments/development.rbを開いて2行足す。
<br>

```Linux:ターミナル
$ cd ~/environment/hello_app/
$ rails server
```
実行したままにしたいので、もう1つターミナルを開いてRailsサーバーを実行する。
ブラウザを開いて、ヾ(´∀｀)ノYay! You’re on Rails!ヾ(´∀｀)ノわーい　みたいのが出たらOK。

###1.3.4 Hello, world!
ここからMVCモデルに入る。

```linux:ターミナル
#app/controllers/の中にある〇〇controller.rbと言うファイルは？
$ ls app/controllers/*_controller.rb
#結果
app/controllers/application_controller.rb
```
ファイルを調べる。まずは第一章ではまずコントローラから。

```Ruby:app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
  #helloアクション
  def hello   
    render html: "hello, world!"　#HTMLで表示したい:"表示したい内容"
  end
end
```
3行追加する。これでこの後のルーティングを設定すると"hello, world!"が表示できるようになるらしい

```Ruby:config/routes.rb
Rails.application.routes.draw do
  root 'application#hello'
end
```
 #root（一番上、/）では'application_controller'のhelloアクション'を実行するという意味。
'application_controller'のhelloアクション'というのは1個前に設定したやつ。

ここでエラーが出てしまった。エラーの内容は読み込み中がすごい長いというもの。
Rails sを再起動しようと思ってRails sを実行しているターミナルを見ると、終了できなくなってしまっていた。

```linux:ターミナル
$ ps aux | grep [p]uma

$ kill -9 <出てきたプロセス番号>
```
これでもう一度Rails sを再起動できた。
ブラウザに、Hello,world!と表示されればOK。

##1.4 Gitによるバージョン管理

```linux:ターミナル
$ git config user.name　#登録されていればここに表示される

$ git config user.email　#登録されていればここに表示される

#登録されていなければ下記コマンドで登録
$ git config --global user.name "Your Name"
$ git config --global user.email your.email@example.com
```
git configで設定。

```linux:ターミナル
$ sudo ln -sf `which nano` /usr/bin
$ git config --global alias.co checkout
```
Gitで使うデフォルトのエディタを設定。
git coをcheckoutのエイリアスに設定。これから'git checkout' を'git co'と省略できる。
<br>

```linux:ターミナル
$ cd hello_app　#アプリのルートディレクトリに移動する
$ git init　#リポジトリの初期化
$git add -A　#すべての更新ファイルをステージに移動
$git status　#ステージングの状況を確認　#現状ではすべての更新ファイルがステージングされて緑で表示

$git commit -m "Initialize repository"　#メッセージを追加するcommitのコマンド　メッセージ→"リポジトリを初期化"
$ git log　#ログ表示　「ｑ」で終了

```
git initでセットアップする。

## 1.5.1 Herokuのセットアップ
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.4'
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]
```
Herokuではsqlite3は使えない。PortgreSQLを使う。
本番（production）環境にpg gemをインストールしてRailsがPostgreSQLと通信できるようにする。
sqlite3 gemが本番環境に導入されないようにしておく。

```linux:ターミナル
bundle install --without production
```
本番用以外のgemをインストールする。

```linux:ターミナル
$ heroku --version
```
Herokuがインストールされているか確認する。されていなかった。

```lunux:ターミナル
$ source <(curl -sL https://cdn.learnenough.com/heroku_install)
```
Herokuをインストールする。

```linux:ターミナル
$ heroku --version
```
確認。OK。

```linux:ターミナル
$ heroku login --interactive
```
herokuにログインする。　--interactiveはブラウザを開かないようにするやつ。

```linux:ターミナル
$ heroku create
```
Herokuに新しいアプリケーションを作成する。

```linux:ターミナル
$ git push heroku master
```
HerokuにリポジトリをPUSHする。
heroku createの時に出てきたURLを開くとデプロイ完了が確認できる。

```linux:ターミナル
$ rails webpacker:install 
```
webpackerがないと怒られたとき。