RailsによるアジャイルWebアプリケーション開発第二版を勉強するの巻(第1回:1〜4章)

これは何?

RailsによるアジャイルWebアプリケーション開発 第2版

RailsによるアジャイルWebアプリケーション開発 第2版

RailsによるアジャイルWebアプリケーション開発第二版を読みながら、そこで勉強したことを書くエントリです
分厚い上、27章まであるので、数回に分けて書きます

第1章 はじめに

Railsについて説明

  • Ruby on Railsは、Webアプリケーションの開発、配置、保守を容易にするフレームワーク
  • あらゆるRailsアプリケーションはMVCアーキテクチャに基づいて実装される
  • コードのピース(部品)ごとにプログラムを各場所が決まっていて、
    しかもそれらすべてのピースを対話させる方法も標準で用意されている
  • Railsの設計は、DRYと、設計より規約という基本概念に基づいている
  • DRY(Don't Repeat Yourself):繰り返しを避けよ
    • システムのあらゆる部品は、一箇所に記述され、設定を変えたからといって複数箇所を修正しなくてよい
    • 記述すべき箇所は、MVCアーキテクチャの規約で指定されている
  • 設計より規約
    • 規約に従って書けば、後はRailsがよろしくやってくれる

第2章 Railsアプリケーションのアーキテクチャ

MVCモデルについて説明
MVCについては、Strutsやって理解してるので省略

  • ORM(Object-Relational-Mapping)
    • テーブルをクラスに、行をオブジェクトに、列をオブジェクトの属性にマッピングさせる
    • クラスメソッドでテーブルを操作、インスタンスメソッドで行を操作
  • ActiveRecode
    • Railsが提供するORMモデル
    • 規約に従い、適切に設定されたデフォルトを使うことで、開発者が設定する内容を最小限に
      • ややこしいXMLの設定とか覚えなくても良いよ!
  • ActionPack
    • MVCの内、ビューとコントローラをサポート

第3章 Railsのインストール

OS毎のインストール方法を解説
後、開発環境について

第4章 Hello,Rails

Railsアプリの作り方、起動方法の解説
コントローラ、ビューの作り方

Railsアプリの作り方
C:\InstantRails-2.0-win\rails_apps>rails test

C:\InstantRails-2.0-win\rails_apps\testにRailsアプリが生成される

起動方法(Instant Railsの場合)

こちらを参照
InstantRails で 簡単 Ruby on Rails 体験

コントローラ生成

Sayというコントローラの生成

C:\InstantRails-2.0-win\rails_apps\test>ruby script/generate controller Say

C:\InstantRails-2.0-win\rails_apps\test\app\controllers\say_controller.rb
が生成される

RailsとリクエストURL

例:http://pragprog.com/online/demo/say/hello


アプリケーションのURLがhttp://pragprog.com/online/demoならば、
sayコントローラのインスタンスを生成し、
helloメソッドが呼び出される

最初のアクション

先ほどのsay_controller.rbにhelloメソッドを追記

class SayController < ApplicationController
	def hello
		
	end
end


http://localhost:3000/say/helloを実行すると、テンプレートが無いと怒られる

Template is missing
Missing template say/hello.html.erb in view path C:/INSTAN~1.0-W/rails_apps/test/app/views


テンプレートは、views/コントローラ名/アクション名.rhtmlに作られる


今回の場合、以下にテンプレートを作る
\test\app\views\say\hello.rhtml

<html>
	<head>
		<title>はろー</title>
	</head>
	<body>
		はろー!
	</body>
<html>


もっかいhttp://localhost:3000/say/helloを実行

  • UTF-8で作らないと文字化けするので注意!
動的な表示

ERd(Enbedded Ruby)を使用して、テンプレートファイル上のRubyコードを展開する

<html>
	<head>
		<title>はろー</title>
	</head>
	<body>
		はろー!<br>
		<!-- <%= %>で、中のrubyコードが実行された戻り値が出力 -->
		<%= 1+2 %><br>
		<!-- <% %>で、中のrubyコードが実行される(戻り値は出力されない) -->
		<% 3.times do |cnt| %>
			<%= cnt %>かい<br>
		<% end %>
		<!-- hメソッドでHTMLエンティティとしてエスケープ -->
		<%= h("<かっこ>") %>
	</body>
<html>


コントローラ内の変数を、テンプレートで読み込む

コントローラ内と、テンプレート内で、@がつく変数が共有される

class SayController < ApplicationController
	def hello
		@time = Time.now
	end
end
<html>
	<head>
		<title>はろー</title>
	</head>
	<body>
		現在時刻は:<%= @time %>
	</body>
<html>


リンクによる複数ページの連携

<html>
	<head>
		<title>はろー</title>
	</head>
	<body>
		現在時刻は:<%= @time %><br>
		<!-- sayコントローラのgoodbyeに移動 -->
		<%= link_to "帰る", :action=> "goodbye" %>
	</body>
<html>


今日はここまでー