moxt

Just another Blog site

意識低いRuby on Rails再入門1

      2015/07/03

整理がてらメモ。

Ruby on Railsとは何か

ウェブアプリケーションを作るためのフレームワーク。

必要そうなモノ全部持ってる。

  • ルーティング
  • DB管理
  • アセット管理
  • ジョブキュー
  • メール送信
  • テスト
  • デバッグ機能(webconsole,irb,pry…)

ほぼ事足りちゃうと思うが、足りなかったら豊富なgemを落としてくれば良い。

慣れればウェブアプリが短期間でつくれてしまう。

はじめかた

rubyをインストール

rbenvを使う。

railsをインストール

バージョン4.2.1がインストールされた。

railsアプリを新規作成

アプリを起動

localhost:3000にアクセスして何か表示されたらおk。

Modelを作る

ティザーサイトでもない限りウェブアプリを作るなら何かしらデータベースを使ってデータを永続化する必要があるだろう。
まあ、テキストファイルでも良いんだけど。

localhost:3000にアクセスしたら日記のリストを表示したい、とか。ログイン画面を表示してユーザにログインさせたい、とか。何かやりたい事があるはず。

日記を例にすれば、日記のデータ一覧をデータベースから取得して、そのデータをもとにhtmlを生成して表示する必要がある。

RailsではMVCというフレームワークを採用している。

それぞれ

M:Model
V:View
C:Controller

という単語の頭文字を連結させたもの。

日記のデータはModelに該当する。
Modelのデータをもとにhtmlを生成している部分はViewに該当する。
Controllerはユーザから受けたリクエスト(localhost:3000に対してアクセスがきた、といった外部からの状況を監視してる)をもとに適切なModel、Viewを呼び出してhtmlなデータを返却する。いわば調整役である。

Modelはアプリの核。
これがないと何も始まらない。

というわけで、適当にModelを作ってみる。

たったこれだけ。
ItemというModelができあがった。
Itemはtitleとbodyを持っている。
日記であればタイトルと本文といったところ。

何やら色々なファイルが生成されているようだ。

app/models/item.rb

これがModel。

db/migrate/20150330124730_create_items.rb

Migrateファイルとよばれるもの。
あとで書くmigrateコマンドを実行することでデータベース上にテーブルを作ったり消したり、カラムを追加してくれたりする。

test/models/item_test.rb

テストファイル
Itemクラスの中になんかしらのメソッドを追加したとき、そのメソッドが期待通りに動くかどうか確認するために使う。
メソッドを追加してわざわざその動作を確認するなんて面倒だ。
仕様変更によって今までまともに動作していたメソッドが正しく動かなくなった=バグを検知するためにも有用だったりする。バグは早く検知できたほうが良いよね。

test/fixtures/items.yml

フィクスチャーファイル
Itemクラスのテストをするとき実際DBに入ってる値に対して破壊的操作(値をアップデートしたり、消したりとか)してたらDBの状態がテストを実行するたびに変化してしまう。
何が困るって、ソースコード変更してないのにテストが成功したり失敗したりと不安定な状態になることだ。
これではテストの意味が全くない。
なので、テスト用に偽物のデータを使い開発環境のDBの状態を変化させないようにする。
この偽物のデータがフィクスチャーファイル。

Migrationする

generateコマンドでModelを作成した。
この状態ではまだDB上にテーブルが存在しない。
アプリケーション上にModelが存在しても、永続化するDBにそのModelを受ける皿が無い。
migirateコマンドを実行してDB上にテーブルを作成する。

実行結果はこんな感じ。

Itemクラスのデータを作ってみる

これでDB上にテーブルができた。
まだデータが存在しない。

直接DBのクライアントを起動してINSERTナントカしても良い。
railsにはconsoleという機能がある。

Item.connectionを実行して。。。

これでItemのデータが1つ作成された。

次はこのデータをブラウザ上で表示させてみたい。

 - プログラミング

336px




336px




  • このエントリーをはてなブックマークに追加
  • follow us in feedly

  関連記事