31日目 Ruby on Rails を起動したい その3

さてさて、Railsのインストール、続きます。

###昨日のふりかえり
[30日目 Ruby on Rails を起動したい その２](https://qiita.com/robamimim/items/073e13c23611d66d626d)

前日シャットダウンしたパソコンを起動して、さて `pg 1.1.4` をインストールしようと思ったら動かない！

なぜか古い方のrubyが起動されていました。前日の作業前の状態です。。。がっかりしていたら`rbenv global 2.5.0`するとよいですよとコメント頂きました。ありがたや！しかしそれでも動かず。

よくみたらパスにRubyが入っておらず、前日のログをみたら`.bash_profile`にRubyのエントリーを入れたのに`rails s`が起動しない原因ととりちがえて外していたのでした。そこで、これを戻して`source ~/.bash_profile`からの`rbenv global 2.5.0`で起動しました！ふう。

`gem install pg -v '1.1.4'` を実行すると、今度は`libpq-fe.h`がないとエラー！
このファイルを探しまくったのですが、みつからず・・・。
他に方法がないか検索したら、なんでもいいので、`postgres`をインストールしてしまえば良いようです。

`brew install postgresql` からの `gem install pg -v '1.1.4'`でOK!

そして`rails s`したところ`puma-3.12.1`がないよとエラーになったのでした。

---
本日はここからっ！

###`rails s`のエラーメッセージを確認

```
$ rails s
Could not find puma-3.12.1 in any of the sources
Run `bundle install` to install missing gems.
```

###`puma-3.12.1`ってなんだろう？

モダンなWebサーバー、というものらしい。
並列処理が得意、らしい。
一番最初にQUICK　STARTのご案内があって親切だなあと思いました。
[A MODERN, CONCURRENT WEB SERVER FOR RUBY](http://puma.io/)
![A MODERN, CONCURRENT WEB SERVER FOR RUBY](http://puma.io/images/logos/puma-logo-large.png)


さっそくやってみましょう。
[QUICKSTART WITH BUNDLER](http://puma.io/)

```
$ gem "puma"
ERROR:  While executing gem ... (Gem::CommandLineError)
    Unknown command puma
```

あら。bundle使えない？なんでかな。
ならば[QUICKSTART WITHOUT BUNDLER](http://puma.io/)です。

```
$ gem install puma
Fetching: puma-3.12.1.gem (100%)
Building native extensions. This could take a while...
Successfully installed puma-3.12.1
Parsing documentation for puma-3.12.1
Installing ri documentation for puma-3.12.1
Done installing documentation for puma after 1 seconds
1 gem installed
```

インストールできたのかな？これでいいのかな？
 
```
$ rails s
Could not find rubyzip-1.2.2 in any of the sources
Run `bundle install` to install missing gems.
```

###`rubyzip-1.2.2`が見つからないって？

うへえ。またか！！！

（所要時間 １時間）

---
###コメント頂きました。
ありがとうございます！

>bundle install すれば必要な gem が一気にインストールされるので，一つ一つ

$ gem install puma
などとする必要はありません。


>「Gemfile にこう書いとけ」という指示

なるほど。Gemfileを見てみます。

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

ruby '2.5.0'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.2.3'
# Use sqlite3 as the database for Active Record
# gem 'sqlite3'
# Use Puma as the app server
gem 'puma', '~> 3.11'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'

（以下略）
```

ははあ・・・なるほど。
動かすのに必要な道具をセットにしているわけですね。
`bundle install` は最寄りのGemfileを見ながら、書いている通りににインストールしていくわけだ。
pumaもpqもある。あら？？？ rubyzipは見当たらない。

```
$ grep rubyzip Gemfile
$
``` 

もやっとしますが、ものは試しです。バックアップをとって。
###`bundle install` してみましょう。(3回目！)

```
$ bundle install
Fetching gem metadata from https://rubygems.org/............

(中略)

Fetching rubyzip 1.2.2
Installing rubyzip 1.2.2 ←ありますね！

(中略)

Bundle complete! 20 Gemfile dependencies, 85 gems now installed. ← complete!
Use `bundle info [gemname]` to see where a bundled gem is installed.
Post-install message from sass:

Ruby Sass has reached end-of-life and should no longer be used.

* If you use Sass as a command-line tool, we recommend using Dart Sass, the new
  primary implementation: https://sass-lang.com/install

* If you use Sass as a plug-in for a Ruby web framework, we recommend using the
  sassc gem: https://github.com/sass/sassc-ruby#readme

* For more details, please refer to the Sass blog:
  https://sass-lang.com/blog/posts/7828841

$ 
```
`Bundle complete! ` きました！！！
最後に `Sass` は使えませんと書いてるような。気になりますが・・・

###`rails s` やってみましょう！

```
$ rails s
=> Booting Puma
=> Rails 5.2.3 application starting in development 
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.5.0-p0), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
Started GET "/" for ::1 at 2019-04-10 14:04:50 +0900
  
ActiveRecord::PendingMigrationError (

Migrations are pending. To resolve this issue, run:

        bin/rails db:migrate RAILS_ENV=development

):
```

###起動したした・・・Errかい！！！
![Err.png](https://qiita-image-store.s3.amazonaws.com/0/356263/14b9be61-8efc-4b89-fafc-825ac79039c2.png)

###次回 `ActiveRecord::PendingMigrationError `の謎。

Railsの道は遠い・・・

（所要時間 1時間）

---

###`rails db:migrate status`でステータスを見る。

エラーメッセージで検索したら、似たようなケースをみつけました。

[「ActiveRecord::PendingMigrationError」と出た時のエラー解決方法【rails】](https://qiita.com/ryota_ueda/items/fcf111ed0b56822408ed)

なるほど。`rails db:migrate status`で見てみます。

```
$ rails db:migrate status
== 20190407044449 DeviseCreateUsers: migrating ================================
-- create_table(:users)
   -> 0.0038s

（中略）
rails aborted!
Don't know how to build task 'status' (See the list of available tasks with `rake --tasks`)
Did you mean?  stats

（以下略）

```

'status' というタスクの作り方がわかんないよ！って事かな？？？
`rake --tasks` で使えるタスクを確認しましょう、でいいのかな？

```
$ rake --tasks
rake about                              # List versions of all Rails framew...
（以下略）
###たくさん出てきたので

$ rake --tasks | grep status
rake db:migrate:status                  # Display status of migrations
```

`status`あります。いいはずなんだけど。

ひとつ戻って、エラーメッセージを見ると

```
ActiveRecord::PendingMigrationError (

Migrations are pending. To resolve this issue, run:

        bin/rails db:migrate RAILS_ENV=development

):
```

だから、`bin/rails db:migrate RAILS_ENV=development`を実行すればいいのかな？？？わからないことだらけです！


###`bin/rails db:migrate RAILS_ENV=development`

[rake db:migrate](http://railsdoc.com/references/rake%20db:migrate)、railsでDBを作ったら、最初にmigrateするものらしい。
RAILS_ENVは開発環境か本番環境かを指定するものらしい。

やってみましょう。

```
$ bin/rails db:migrate RAILS_ENV=development
$ 
```

特になんのメッセージもないけど・・・これでいいのかな？？？
### `rails s` しましょう(７回目)

```
$ rails s
=> Booting Puma
=> Rails 5.2.3 application starting in development 
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.5.0-p0), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
```

なんだかいい感じ！
`http://localhost:3000/` を開くと・・・

![OK.png](https://qiita-image-store.s3.amazonaws.com/0/356263/f2c230fc-7ccd-688c-a286-a6bc1ec23af1.png)

#起動しました！！！
（所要時間 １時間）

[29日目 Railsのインストール](https://qiita.com/robamimim/items/cf3f5b783f3391d88b0c)
[29日目 その２ Ruby on Railsを起動したい！](https://qiita.com/robamimim/items/b087a45c6d0dd3f08c9c)
[30日目 Ruby on Rails を起動したい その２](https://qiita.com/robamimim/items/073e13c23611d66d626d)
[31日目 Ruby on Rails を起動したい その3](https://qiita.com/robamimim/items/298bd04cea115b81bc8c)
（トータル 12時間くらい？）