【Rails:1】Ruby on Railsの概要と導入
Ruby on Railsについて
- 『Ruby on Rails』とは
RubyでWEBアプリケーションを開発するためのフレームワークのひとつ。
デンマーク人のプログラマ、David Heinemeier Hansson(デビット・ハイネマイヤ・ハンソン)氏がオープンソースソフトウェアとして開発しました。- フレームワーク
アプリケーションを効率よく開発するためのツール・ライブラリ・設定ファイル等をセットにしたもの。 - オープンソース
ソフトウェアのソースコードが公開されており、再頒布が自由であること。
オープンソース - Wikipedia - WEBアプリケーション
WEBサイトの中でも、データの読み書き(掲示板への書き込み・商品の注文etc.)を要するサービスを提供するもの。
通常のWEBサイトはサーバ上のファイルをブラウザに送り出すだけですが、WEBアプリケーションの背後にはデータが保持されていまず。
- フレームワーク
- MVCアーキテクチャ
Railsが採用している、アプリケーションを見通しよく構築するための設計法。
アプリケーションの構成要素を次の3つに分類しています。- Model(モデル)
データ(=アプリケーションの状態)の管理の部分。
データの出し入れをしたり、読み書きする際に不正なデータが紛れ込まないよう監視したりと、データベースに関わる動作をすべて担当します。
データに関する命令はコントローラから渡されますが、その実現方法はモデルだけが知っています。 - View(ビュー)
ユーザーに見せるインターフェイスの部分。
データを直接扱うのではなく、あくまでその表示や見せ方を担当します。
原則として、ビューでデータを準備することはしません。 - Controller(コントローラ)
データベースとインターフェースの橋渡しをするプログラムの部分。
ビューからの入力を受け取る・モデルにデータの呼出や変更を指示する・データをビューに渡す等、様々な役割を果たします。
コントローラが実行するそれぞれの仕事を『アクション』と呼びます。
- Model(モデル)
- コンポーネント
Railsの実態は、コンポーネント(Rubyで書かれたライブラリ=汎用性の高い機能群)の集合体です。
Railsは次のようなコンポーネントで構成されています。- Active Record::モデル
- Action Pack
- Action View::ビュー
- Action Controller::コントローラ
- Active Support::共有ライブラリ集
- Action Mailer::電子メールの送受信(デフォルトでは組み込まれません)
- Action Web Service::ウェブサービス(デフォルトでは組み込まれません)
- 設計哲学
- DRY(Don't Repeat Yourself=繰り返しを避けよ)
同じことを何度も記述するのは避けるべきだという原則です。
DRYを意識することで、次のようなメリットが得られます。- 開発効率が上がる
- 仕様変更等での修正精度が上がる
- DRY(Don't Repeat Yourself=繰り返しを避けよ)
-
- COC(Convention over Configuration=設定より規約)
規約(=デフォルトの設定)に従って開発することで、余計な設定の手間を省き、コードの記述に専念することができます。- 例: データベースでメンバー情報を扱いたい場合
テーブル名をmembers(複数形)と命名すると・・・
⇒モデルのクラス名はMember、ファイル名はmember.rbと決まります。
- 例: データベースでメンバー情報を扱いたい場合
- COC(Convention over Configuration=設定より規約)
Railsのインストール
- gemからのインストール(Version 1.2.3)
$ gem install rails --version 1.2.3 --include-dependencies
- バージョンの確認
$ rails -v # Rails 1.2.3 が返ってくればインストール成功
-
- バージョンのアップデート
次のコマンドでrailsのバージョンを最新にアップデートできます。
- バージョンのアップデート
$ gem update rails
ただし、バージョンを変更するとアプリケーションが動かなくなることがありますので、1つのアプリケーションの開発中にバージョンアップするのは、基本的には避けるべきです。
-
- バージョンによるデフォルトデータベースの違い
Rails2.0.2より、デフォルトデータベースがMySQLからSQLite3に変更されたため、注意が必要です。
Ruby on RailsデフォルトDB変更:MySQLからSQLite3へ - builder by ZDNet Japan
- バージョンによるデフォルトデータベースの違い
Railsアプリケーションの作成
- アプリケーションの作成(アプリケーション名:"app_name")
$ rails app_name
- アプリケーションの起動
$ cd app_name
$ ruby script\server
- アプリケーションの確認
http://localhost:3000/(または http://127.0.0.1:3000/)
- コントローラの作成(コントローラ名:"ctr_name")
$ ruby script\generate controller ctr_name
- アクションの作成(アクション名:"index")
- app_name\app\views\ctr_name.rb
class CtrNameController < ApplicationController def index end end
- アクションの確認
http://localhost:3000/ctr_name/index
(ビューが作成されていない場合、"Template is missing"というエラーが表示されます。)
- ビューの作成
app_name\app\views\ctr_name 内に index.rhtml というテキストファイルを作成- 拡張子
Railsアプリケーションのテンプレートファイルでは、.rhtml という拡張子を使います。- railsのバージョンによる拡張子の違い
Rails2.0以降では、.html.erb が使われています。
script/generateで作られるビューファイルの拡張子が、Rails2.0では".html.erb"になる件 - ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)
- railsのバージョンによる拡張子の違い
- 文字コード
Railsのデフォルト文字コードはUTF-8です。
従って、Railsで使用するRubyソースファイル(.rb)やテンプレートファイル(.rhtml)は、すべてUTF-8形式で保存します。
Rubyソースファイル(.rb)では、コード冒頭に以下を記入すると、必ずUTF-8で読み込まれるようになり便利です。
- 拡張子
# -*- coding: utf-8 -*-
- コントローラ&アクション&ビューの同時作成
$ ruby script\generate controller ctr_name index
- 変数の表示
- app_name\app\controller\ctr_name.rb
def index @message = 'メッセージ' end
-
- app_name\app\view\controller\index.rhtml
<html> <body> <%= @message %> </body> </html>
⇒http://localhost:3000/ctr_name/indexをリロードするだけで確認できます。