You are on page 1of 21

Ruby on Rails

入門編 #01
2008/12/13
Net Solution Team
KENJIRO
Agenda
 環境構築

 Ruby on Rails とは?


 Ruby on Rails の特徴

 Ruby on Rails 概要
 ディレクトリ構成
 命名規約
 実行環境

 scaffold
 CRUD

【 #01 】
入門編 #01 では、 #02 に向けデモアプリケーションを作成する上での最低限必要な
知識を中心にやります。

【 #02 】
デモアプリケーション「 BLOG 」を構築します。
環境構築
 環境
 Ruby 1.8.6
 Ruby on Rails 2.2.2
 MySQL 4.1 or 5.1 系

 MySQL インストール
 MySQL サイトから「 MySQL Community Server 」インストール

 Ruby インストール
 RUBYFORGE から「 One-Click Installer - Windows 」インストール

 Ruby on Rails インストール


 コマンドプロンプトから実行
gem install rails

 Ruby on Rails を最新版へ更新


 コマンドプロンプトから実行
gem update rails –include-dependecies
Ruby on Rails とは・・・
 Ruby on Rails とは?

Ruby により構築された Web アプリケーション開発のためのフレームワークです。


デンマークの DHH ( David Heinemeier Hansson )によって開発され、オープンソースとして公開し
ている。
データベースを利用した Web アプリケーション開発において、コードを大幅減らし開発期間を短縮が可
能である。
Rails を MVC アーキテクチャをサポートしており、データベース処理のモデル、データ表示処理のビュー

それらを制御するコントローラの雛形を自動生成する仕組みを持っている。
また動作テストのための Web サーバや、テストコードの自動生成機能、 Web アプリケーションの配置を
自動化するツールなどのツールキットも同時に提供している。

 Ruby on Rails の特徴


 フルスタック
 MVC フレームワーク
 Convention over Configuration
 DRY
 すぐに動く
 豊富なプラグイン
フルスタック
 ActionPack
 ActionController ( MVC )
 ActionView ( MVC )

 ActiveRecord ( MVC ) O/R マッパー

 ActiveSupport ( Ruby 拡張)

 ActionMailer (メール処理)

 ActiveResource ( REST Web ) 非推奨

 Webrick 、 Scaffold 、 script/console 、 Rake 、 etc…


MVC フレームワーク
 MVC フレームワークアプリケーション
① ②
Browser Controller Model

④ ③

View Database

①  リクエスト URL をルーティングファイルで解析し、コントローラアクションを呼び出す


②  コントローラとモデル間でデータをやり取りする
③  モデルとデータベース間でデータの CRUD を行う( ActiveRecord )
④  コントローラがデータを制御してビュー側で表示しブラウザにリクエストを返答する

 URL
Class HogeController

http://localhost:3000/hoge/list def list



end
end
Convention over Configuration
 設定より規約

 XML 不要
 Java ではユーザが XML でアプリケーションの環境設定をしている
 Ruby on Rails ではフレームワークがアプリケーション規約を決め、ユーザは設定するだけ
 重複するコードを削減できる

 YAML ファイルに設定情報管理
 database.yml
DRY
 Don’t Repeat Yourself

 重複したコードを排除する

 ActionView
 テンプレートエンジンを利用し、共通レイアウト部分を定義する

 ActionController
 application.rb ・ライブラリなどを利用し、共通機能を定義する

 ActiveRecord
 テーブル名単数形クラスで ActiveRecord::Base を継承
すぐに動く
 プロジェクト作成から動かすまで時間がかからない

 scaffold

 生成されたコードは勉強にもなる
豊富なプラグイン
 認証
 権限
 カレンダー
 国際化
 モバイル対応
 画像アップロード
 タグ
 OpenID

なんでもある・・・
Ruby がすばらしい言語!
ダメなところも・・・
 大規模アプリケーションの事例が少ない

 Ruby on Rails は難しいので、 PHP に戻ってしまう人も・・・

 サーバ設定が統一されていない
 FastCGI 、 mongrel 、 Litehttpd 、 mod_rails

 レンタルサーバが少ない

 運用面で悩むことが多い
Ruby on Rails 概要
 ディレクトリ構成

 命名規約

 実行環境
ディレクトリ構成
Application プロジェクト名
  app モデル、ビュー、コントローラのファイルが置かれる
   controllers
   helpers
   models
   views
  components 再利用可能なコンポーネント
  config 設定とデータベース接続のパラメータ
   environments
   initializers
  db スキーマとマイグレーション情報
   migrate
  doc 自動生成されるドキュメント
  lib 共有ライブラリ
  log アプリケーション生成ログファイル
  public Web からアクセス可能なディレクトリ
   images
   javascripts
   stylesheets
  scripts ユーティリティスクリプト
  test ユニットテスト、機能テスト、結合テスト、フィクスチャ、モック
   functional
   integration
   mocks
   unit
  tmp セッションファイル、キャッシュコンテンツ、ソケットファイル格納
  vendor 外部コード、プラグイン
命名規約
 変数
 変数名は小文字だけを利用し、各単語はアンダースコアで区切る

 クラス名 / モジュール名
 アンダースコアは利用せず、各単語の頭文字を大文字にする

 テーブル名
 変数名と同様の規約で、複数形にする

 ファイル名
 変数名と同様の規約

 単数形 / 複数形を調べる
 food.singularize # => foods
 foods.pluralize # => food

命名規約により Rails が自動的にテーブルとモデルのマッピングを行う


テーブル モデル
users
id
User
name
password
実行環境
 実行環境には 3 つのモードある

 development
 log ファイルに SQL 、エラー情報など詳細な情報が出力
 開発者が開発しやすいような情報が出力
 データベース切替
 controller 、 model を変更すると即反映

 test
 development 同様、詳細なログ出力
 テストデータの流し込みなどが容易
 データベース切替
 UnitTest 実行
 controller 、 model を変更すると即反映

 production
 log ファイルにはアクセスされたログのみ出力
 システムエラー画面を表示しない

 実行環境の切替
 Webrick
# ruby script/server –e production
 Apache 、 mongrel など
 config で定義する
実行環境(データベース)
 実行環境にあわせたデータベース設定
 config/database.yml ファイルに定義する
 MySQL 以外の RDBMS ( PostgreSQL 、 Oracle 、 sqlite )の指定も可能

development:
adapter: mysql
database: skip_development
username: root
password:
encoding: UTF8

test:
adapter: mysql
database: skip_test
username: root
password:
encoding: UTF8

production:
adapter: mysql
database: skip_production
username: root
password:
encoding: UTF8
実行環境(フレームワーク)
 environment.rb
 Rails のロードパスを設定。モデル、コントローラ、ビューなどを読み込む
 アプリケーションで利用される設定を読み込む
 Rails バージョン( RAILS_GEM_VERSION = ‘2.1.2’ )
 セッション管理方法(ファイル、データベース、 memchach など)
 その他アプリケーションで定義している設定ファイルなど
scaffold

 足場

 scaffold
 Create 生成
 Read 表示
 Update 更新
 Destroy 削除

モデルに対する CRUD を生成 モデル コントローラ

# ruby script/generate scaffold todo todo


 Todo モデルを CRUD する。 Todo コントローラ

 scaffold の前にデータベース設計が必要

 http://localhost:3000/todo/へアクセスすると自動生成されたページが表示さ
れる

 index 、 new 、 create 、 edit 、 destroy など作成される


次回、 Todo アプリケーション作成
ご静聴ありがとうございました。

You might also like