Rails講座第一回目東京情報大学河野義広2011/06/08
Rails講座の概要目的Ruby on Rails(Rails)の知識を得るWebアプリケーションの開発に活かすWebアプリ開発の最新動向を知る進め方解説に加え、適宜演習を交える内容第一回目:Railsの概要とRailsアプリの作成第二回目:開発環境と実装、デバッグのポイント第三回目:RailsアプリのApache連携とSSL対応第四回目:Twitter APIを利用した連携アプリの開発第五回目:Railsでのサーバ間通信~RESTfulな開発~
第一回目の概要Railsの概要Ruby on RailsとはMVCアーキテクチャ利用するRails環境Railsアプリの作成(演習)Railsプロジェクトの作成とディレクトリ構成マイグレーションによるDB作成コントローラとビューの作成Railsアプリの実行Rails開発のメリットアジャイル開発プロジェクト管理
Ruby on Railsとは特徴Webアプリケーション開発の「フレームワーク」オブジェクト指向スクリプト言語「Ruby」で記述MVC(Model-View-Controller)アーキテクチャモデル、ビュー、コントローラでの役割分担RubyとRailsRuby:プログラム言語Rails:Rubyで記述されたフレームワークフレームワーク:ツール、ライブラリ、設定ファイル等Ruby on RailsRuby図1. RubyとRailsの関係
MVCアーキテクチャMVCアーキテクチャモデル:DBとの連携(ActiveRecordの利用)ビュー:画面表示コントローラ:ユーザからのデータ入力コントローラモデルDB端末ビューユーザ図2. MVCアーキテクチャの概要
Railsの設計哲学DRY(Don’t Repeat Yourself、繰り返しを避けよ)同じコードの繰り返しを避け、効率・品質の向上を目指す設定より規約(Convention over Configuration)あらかじめ用意された規約に従うことで設定を不要にする例:モデルの命名規則テーブル名:members(複数形にする)モデルのクラス名:Member(単数形となる)クラスを記述するファイル名:member.rb
Railsの主な特徴ルーティング「&」や「=」のないきれいなURLが使える例:http://localhost:3000/members/show/1マイグレーションDBのテーブルを定義するための機能DBの種類に依存しない(SQL文は書かない)対応DB:MySQL, PostgreSQL, SQLite, SQL Server, Oracleモデルの操作モデルの操作がDBの操作に対応(取り出し、保存、削除)値の取り出し:@member.birthday条件指定での検索:@member = Member.find_by_name(‘satou’)コントローラ  アクションパラメータ
Rails環境必須環境Ruby 1.8.5Rails 2.10RubyGems 1.3.1Apache 2.2MySQL 5.0注意事項Ruby 1.8.5は少し古いバージョンyumでは1.8.5が最新だが、1.8系は1.8.7まである1.8系と1.9系は言語仕様がだいぶ違う
今回作るRailsアプリ今回の目標DBと連動したWebアプリケーション
Railsアプリの作成(1)1. プロジェクトを作ってみよう# rails プロジェクト名 –d mysql※-dオプションはDBの指定(今回はmysql)ディレクトリの内容を確認app:アプリ、config:設定ファイル、db:DB定義public:コンテンツ置き場、script:サーバ、ジェネレータ2. マイグレーションでDBを作る# cd rails_test# ruby script/generate migration person
Railsアプリの作成(2)3. マイグレーションファイルを編集する# vi db/migrate/***.rbclass Person < ActiveRecord::Migrationdefself.upcreate_table :people do |t|t.string :namet.integer :aget.timestamps    end  enddefself.downdrop_table :people  endend
Railsアプリの作成(3)4. DBを作成する# vi config/database.yml ※DBの設定を確認する。必要ならスキーマ名を変更する。rakeコマンド:DB操作(作成、削除、マイグレーション)# rake db:create# rake db:migrate5. DBの内容を確認する# mysql –u rootmysql> show databases;mysql> use project1_development;mysql> show talbes;
Railsアプリの作成(4)6. コントローラとビューを作る#ruby script/generate controller people ※controllerの指定でコントローラとビューが作成される7. モデルを作る# ruby script/generate model --no-migration ※オプションでマイグレーションしないを指定
Railsアプリの作成(5)8. コントローラを編集する# vi app/controllers/people_controller.rbDBの登録内容を表示するメソッドを作成class PeopleController < ApplicationControllerdef index    @people = Person.find(:all)respond_to do |format|      format.html # index.html.erb      format.xml  { render :xml => @people }    end  endend
Railsアプリの作成(6)9. ビューを編集する# vi app/views/people/index.html.erbコントローラのindexメソッドに対応する画面表示<h1>Listing people</h1><table>  <tr>    <th>Name</th>    <th>Age</th>  </tr><% for person in @people %>  <tr>    <td><%=h person.name %></td>    <td><%=h person.age %></td>  </tr><% end %></table>
Railsアプリの作成(7)10. サーバを起動する# ruby script/server以下のURLにアクセスして動作を確認http://157.80.83.208:3000/http://157.80.83.208:3000/people/
Railsアプリの作成(8)これまでの手順はscaffoldで簡単にできる#ruby script/generate scaffold person name:stringage:integer# rake db:create# rake db:migrateサーバを起動する# ruby script/server
Rails開発のメリットアジャイル開発迅速かつ適応的なソフトウェア開発簡単にプロトタイプ開発を行い、適宜修正しながら進めるプロジェクト管理プロジェクトのディレクトリにすべてが入っているプログラム、設定ファイル、ログ、DB定義、サーバ機能ディレクトリをSubversionで管理するだけでよいDB管理が容易スキーマのバージョン管理RakeコマンドによるDBのバージョンアップ/ロールバック他のDBへの切り替えが容易
次回予告内容開発環境と実装、デバッグのポイント

Rails講座1