====== ハローワールド ======
===== 概要 =====
webブラウザに "Hello world." と表示されるアプリケーションです。
{{:samples:hello_index.png|}}
===== パス =====
examples_controller
===== 構成ファイル =====
^ ファイル名 ^ 説明 ^
| index.rb | コントローラ使用のためのエントリポイント。 |
| hello/index.rhtml | ビュー。webブラウザに送信するHTMLを生成するための雛形です。 |
| hello/main.rb | コントローラ。webブラウザからの要求に対するアクションが定義されています。 |
===== 使用ライブラリ =====
^ ライブラリ名 ^ 説明 ^
| al_controller | コントローラクラス。コントローラアプローチで開発を行うために必要。|
| al_template | テンプレートマネージャ。レスポンスとしてwebブラウザに送信するためのHTMLを生成します。 |
===== 詳細 =====
Aloneのコントローラアプローチによるプログラムのサンプルです。各種処理を行うコントローラと、webブラウザに送るHTMLの雛形を定義するテンプレートに別れています。
==== hello/main.rb (コントローラ) ====
エントリポイントファイル index.rb と同一ディレクトリにあるディレクトリ hello は、コントローラおよび関連するテンプレートなどを格納するためのディレクトリです。ディレクトリ名がそのままコントローラ名として扱われます。
コントローラは、コントローラ名に対応するディレクトリの中に main.rb というファイル名で作成します。その中でAlControllerクラスにメソッドを追加することでコントローラのアクションを追加することができます。アクションに対応するメソッドは、名前が action_ で始まります。本サンプルでは action_index メソッドをAlControllerクラスに追加することで、indexという名称のアクションを追加しています。
なお、indexという名称のアクションはデフォルトアクションと呼ばれ、URLでアクション名を指定せずにコントローラを呼び出した場合はデフォルトアクションが実行されます。
require 'al_template'
#
#
#
class AlController
#
# デフォルトアクションの定義
#
def action_index()
@my_message = "Hello world."
AlTemplate.run( 'index.rhtml' )
end
end
=== action_indexメソッド ===
AlTemplete.runメソッドを実行することで、あらかじめ定義されたテンプレートindex.rhtmlに従ってHTMLを生成しクライアントに返しています。
インスタンス変数 @my_message にセットした文字列 "Hello world." は、テンプレートファイル index.rhtml 内で参照されます。
==== hello/index.rhtml (テンプレート) ====
アプリケーションからwebブラウザに送信されるHTMLを生成するための雛形です。コントローラ内のアクションでAlTemplate.runを呼び出すと、テンプレートにしたがってHTMLが生成されます。
<%= header_section %>
Test
<%= body_section %>
<%=h @my_message %>
<%= footer_section %>
=== インスタンス変数の参照 ===
コントローラ内で宣言したインスタンス変数の値が参照できます。本サンプルでは main.rb 内の index アクションで値がセットされている @my_message 変数を参照しています。これにより、 @my_message に格納された値がHTMLに埋め込まれます。
=== header_secion, body_section, footer_section ===
これらのメソッドは、HTMLのヘッダ部、ボディ部、フッタ部で使われる汎用的なHTMLを出力するものです。テンプレートの記述を簡単にできます。出力されるHTMLは、 Alone の設定ファイル al_config.rb 内で定義されています。
もちろん、これらのメソッドを使わずに、直接テンプレート内にヘッダ部などのHTMLを記述してもかまいません。