railsの初心者用備忘録

## はじめに
この記事は、非エンジニアがRuby on Railsデビューする時に書いた初心者用備忘録です。
ところどころ飛ばしている内容も多いですが、同じようにrailsデビューをする人にぜひ読んでいただけたら良いなぁと思っています。
また、記事を書いている本人も初心者であるため、間違っているところなどございましたらコメントをお願いいたします。

### 今回用いた環境
* macOS Sierra 10.12.2
* Homebrew 1.2.4

今回は、Homebrewがインストールされている前提で話を進めていきます。
Homebrewが入っているか確認は`$ brew -v`で確認してください。
もしインストールされていなかったら、下記の記事等にしたがってインストールしてみてください。
( Homebrewインストール参考 : [MacにHomebrewをインストールする](http://mawatari.jp/archives/install-homebrew-on-mac))

また、`$ brew update`でHomebrewをアップデートしておくと良いと思います。

## rbenv・Ruby・Railsのインストール手順
### rbenvのインストール
rbenvとはrubyのバージョンを簡単に変更できるコマンドラインツールです。

* rbenvとrbenvでRubyをインストールするのに必要なruby-buildをインストールします。

    `$ brew install rbenv ruby-build`
<br>
* rbenvの初期化スクリプトをshellへ追加します。<br>自分はbashを使っているため、`.bash_profile`に追記しました。

      `$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile`
<br>
* 先ほどファイルに書いた内容を実行します。

    `$ source ~/.bash_profile`

これで、インストール完了です。
rbenvが入ってるか`$rbenv -v`で確認してみましょう。

### Rubyのインストール
先ほどインストールしたrbenvとruby-buildを用いてRubyをインストールします。
rbenvとruby-buildを使えば、rubyのバージョンの変更も簡易にできるそうです。

`$ rbenv install (Rubyのバージョン)`
(今回は2.4.0をインストールしました。)

これでインストール完了です。
Rubyがしっかり入っているか`$ruby -v`で確認してみましょう。

### Railsのインストール
railsはgemというRuby用のパッケージ管理ツールを使ってインストールします。

`$ gem install rails`
(Permissionエラーがでたらgemの前にsudoをつけましょう。)

これでインストール完了です。
Railsがしっかり入っているか`$rails -v`で確認してみましょう。

### ここまでの参考資料
* [Homebrewでrbenvをインストールする] (http://mawatari.jp/archives/install-rbenv-by-homebrew)
* [rbenv + ruby-build はどうやって動いているのか](http://takatoshiono.hatenablog.com/entry/2015/01/09/012040)

## Railsの新規アプリケーションを作成する
新規アプリケーションを作りたいディレクトリに移動して、下記のコマンドを実行しましょう。
`$ rails new (アプリケーション名)`

すると下のようなファイルが出来上がります。
(記載されているファイルやフォルダは一部です。)

```
（アプリケーション名）  - app      
                    - assets
                    - controllers
                    - models
                    - views
                    - ...etc
 　　　　　　　　　　　　　　　　　　　　　　　　　　 　 - config
                    - routes.rb
 　　　　　　　　　　　　　　　　　　　　　　　　　　 　 - db
 　　　　　　　　　　　　　　　　　　　　　　　　　　 　 - ...etc
 　　　　　　　　　　　　 　
```
### サーバーを立ち上げる
ブラウザの表示を確認するために、サーバーを立ち上げます
`$ rails server`
コマンドを実行すると
`=> Rails 5.1.2 application starting in development on http://localhost:3000`
と出てくるので`http://localhost:3000`をブラウザで表示させます。
### トップページを作成
トップページを作成するには、（アプリケーション名）のディレクトリに移動して、下記コマンドを実行します。
`$rails generate controller home top`
すると、

```
（アプリケーション名）  - app      
                    - assets
                        - stylesheets
                            - home.scss
                    - controllers
                        - home_controller.rb
                    - models
                    - views
                        - home
                            - top.html.erb
                    - ...etc
 　　　　　　　　　　　　　　　　　　　　　　　　　　 　 - config
 　　　　　　　　　　　　　　　　　　　　　　　　　　 　 - db
 　　　　　　　　　　　　　　　　　　　　　　　　　　 　 - ...etc
 　　　　　　　　　　　　 　
```
などなど、新しいファイルが作成されます。

##railsアプリケーションの基本
railsアプリケーションでページが表示される時、**routing→controller→view**という順で処理が行われています。
もう少し具体的に言うと、送信されたURLに対してroutingで適切なcontroller内アクションに割り当て、ブラウザに返すviewをviewsフォルダの中から見つけ出しています。
### routing
configフォルダーの中のroutes.rbを編集してURLを設定していきます。

```routes.rb
Rails.application.routes.draw do
  # 書き方
  # get "URL" => "コントローラー名#アクション名"
  get '/' => home#top

end

```
これで、`http://localhost:3000`でトップページが表示されるように設定ができました。

### controller
appのcontrollersの中に、コントローラーごとにファイルを作成します。
コントローラー内のアクションは、viewsの中にあるコントローラー名と同じ名前のフォルダから、アクション名と同じhtmlファイルを探してブラウザに返す役割をもっています。

```home_controller.rb
class HomeController < ApplicationController
  def top
  end

  # def アクション名 で views/home/アクション名.html.erbを返す。

end
```

### view
ブラウザに表示させるhtmlを書きます。
(アクション名.html.erb　の erbはEmbedded Ruby（埋め込みRuby）の略であり、このファイル形式ではｈｔｍｌの中にrubyのコードを記述することができます。)

## 終わりに
これは、railsアプリを作る初歩にすぎません。
ここからdb(データベース)であったり、Postモデルなども理解してアプリケーションを作っていく必要があります。
これからrailsアプリ開発にあたって何かつまづいたりしたら、この記事に追記するかもしくは新規記事で投稿していこうとおもいます！

### つまづいたこと
#### 新しいアプリを作成時にPermissionエラーが絶えない!
`$ rails new new_app`で新しいアプリを作成したときにPermissionエラーが出ました。

```bash
Errno::EACCES: Permission denied @ dir_s_mkdir -
/Users/YunaKato/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/extensions/x86_64-darwin-16/2.4.0-static/bindex-0.5.0
An error occurred while installing bindex (0.5.0), and Bundler
cannot continue.
Make sure that `gem install bindex -v '0.5.0'` succeeds before bundling.

In Gemfile:
  web-console was resolved to 3.5.1, which depends on
    bindex
         run  bundle exec spring binstub --all
bundler: command not found: spring
Install missing gem executables with `bundle install`
```

このような時は`$sudo rails new new_app`で新規アプリを作りましょう。