初心者がRuby on Railsでなにかつくる(自分メモ)〜rails-tutorial（1章まで）


独学でweb開発初心者がプログラミングを身につけるまでを記録していきます。

プログラミングの勉強はやはり、教科書どおりにやっていても、続きません。
なので、いきなりruby on railsを使って、メモ帳か掲示板アプリのようなものを作ってみます。


### ドットインストールを参考にします。
[Ruby on Rails 5入門 (全28回)](https://dotinstall.com/lessons/basic_rails_v3)

railsのインストール
`gem install rails --no-document`
rails のバージョン確認
`rails -v`

railsインストールができたら、早速、railsでアプリケーションを作成します。
`rails new [アプリ名]`

作成したら、railsのwebサーバを立ち上げます。
`rails server -b [サーバのIPアドレス] -d`

```
-bオプションでipアドレスを指定
-dオプションでバックグランドで実行
```



これでブラウザから接続が可能になります。
[※ポート番号について](https://qiita.com/Tocyuki/items/de66987ead2183e4fcae)

http:/[ipアドレス]:3000 で接続できました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/213554/27df6066-ac9d-2ecc-13ef-95ae6b2d389e.png)


webサーバを停止させる時は、  プロセスIDを調べてプロセスをkillする必要があります。
 
プロセスIDは
`cat [アプリ名フォルダ]/tmp/pids/server.pid`
か
`ps x` (ｘ・・・端末操作以外のプロセスを表示する。 )
`19496 ?        Sl     0:00 puma 3.12.0 (tcp://[IPアドレス]:3000) [/] `
で調べます。

killコマンドでプロセスを落とします。
`kill -9 [pid]`

### ここまででまずはrailsをインストールして、アプリ作成してみました。

# ②メモアプリの作成
railsの機能でmemoのアプリを作成します。

`rails g scaffold Memo title:string body:text`
g・・・generateの略 

>アプリケーションに必要なコントローラ、モデル、ビューをまとめて生成(rails generate scaffold)

>説明
アプリケーションの基本的な機能の一覧(index)、詳細(show)、新規作成(new/create)、編集(edit/update)、削除(destroy)を行うために必要なコントローラ、モデル、ビューをまとめて生成

>使い方
`$ rails generate scaffold 名前 [カラム名:型]`

railsコマンドのリファレンスです <http://railsdoc.com/rails>

MVCモデルを一気に作成してくれるコマンドです。
MだけやVだけCだけを個別に作成することもできます。

DBへ判定をします。
`$ rails db:migrate`

webサーバを立ち上げて、ブラウザ接続し
`pアドレス:3000/memos`
へでメモアプリへ接続ができます。


## ③blogアプリの作成 ＋ MVCモデルについて
続いては、別アプリでmyblogを作成してみます。

`rails new myblog`
myblog配下のディレクトリ構成を確認しておきます。
まずは
app,db,configあたりを押させておけば良さそうです。

# ここで路線変更をします。ドットインストールからrailsチュートリアルへ
2018/10/12
<https://railstutorial.jp/chapters/beginning?version=5.1#cha-beginning>

railsチュートリアルといわれる、無料で利用できるサービスです。
１章から14章まであり、Git や GitHub、Heroku 等のツールも使いながらwebサービスについて学ぶ事ができます。
量は決してすくなくないため、挫折しないように、毎日コツコツ型でやっていく必要があると考えています。


# １章
>Ruby on RailsチュートリアルはWeb開発者やIT起業家を目指す方向けの優れた入門書として書かれており、Rubyの基礎、HTMLとCSS、データベース、バージョン管理、開発技法などWeb開発のすべてが網羅されています。本チュートリアルは初心者のみならず、Web開発のベテランにとっても有用です。MVCやREST、ジェネレータ、マイグレーション、ルーティング、ERBなど、Railsフレームワークのコア技術を本チュートリアルでまとめて学ぶことができます。

## gemとは
gemってよく聞きますが、なんのこと？パッケージ管理システムって何？

**gemとは・・・・**
いろんな人達がつくったプログラムがインターネット上に公開（[Rubygems.org](https://rubygems.org/)）されており、そこにあるプログラムを簡単に自分のプログラムに取り込めたりする便利なしくみです。

例えば、なにかファイルを読み込んで、 表形式で出力させたいなぁって考えた時に、ゼロからプログラムを書こうとすると、すこし面倒です（たぶん）

そこで `gem 表出力`とググってみます。
・・・・ヒットしました。
下記Qiitaのページですが、あるようです。
*Ruby | Command Line Interface 用 表フォーマットテキスト整形ツール 格子( kosi ) gem version 1.0.0 リリース #ruby]*（https://qiita.com/tbpgr/items/4b6dc39eb18a46013267）

このgemはrubygemsに公開されていますので、インストールして使う事ができます。




といった感じで、なにかこういうことしたいなって考えたときにすでに先人たちが作っているプログラムを利用できる超絶便利なしくみです。
ちなみにrailsもgemのひとつかと思います


また、gemにはそのプログラム集のインストールするコマンドやインストールしたgemを管理するコマンドが用意されています。

（詳しくはまた別途）


いったんはgemというキーワードが出てきたときに、イメージが持てるレベルにはなるのではないでしょうか。



### 1.3 Bundler
・アプリに必要なgemをインストールしてくれる
・`/Gemfile` に必要なインストールするgemファイルが書かれています。バージョン指定もできる。
・`$ bundle install`と実行すれば、再度gemfileの内容が反映されます。
・`$ rails server`でwebサーバを起動して、接続が可能です。

1.3.3まで完了。2018/10/14

#### Hello woｒld を返す
MVCモデルのうち
Contorollerとrouterをつかう。

helloworldを返すアクションをコントローラに定義し、ブラウザからのリクエスト処理を振り分けコントローラに渡す
routerにデフォルトをhelooアクションに渡すように定義します。

contorollerは下記ファイル
`app/controllers/application_controller.rb`
routerは下記ファイル
`config/routes.rb`


【対応状況】
・gitの導入
・bitbacketの登録〜pushまで
・herokuCLIのインストール、アカウント登録まで

herokuにpushしようとしたら、できないの。
git remote add あたりを調べとこあとで。


1章は飛ばし飛ばしで一旦終了します。
gitやherokuでのデプロイは今後どこかのタイミングで実施予定です。