====== ダイレクトアプローチによる「Hello World」アプリケーション ====== webブラウザでアクセスすると「Hello World」と表示されるシンプルなwebアプリケーションを開発してみます。 ===== ダイレクトアプローチ版「Hello World」アプリケーションの開発 ===== ==== 1. 作業用ディレクトリの作成 ==== 「Hello World」アプリケーションの開発作業を行うためのディレクトリを作成します。 mkdir hello_world ==== 2. Aloneを構成するファイルをコピー ==== Aloneの配布ファイルのうちlibディレクトリを前項の手順で作成したhello_worldディレクトリにコピーします。 cp -r alone/lib hello_world/ ==== 3. プログラムファイルの記述 ==== hello_worldディレクトリの中にindex.rbというファイルを以下の内容で作成します。このファイルがアプリケーションのプログラム本体です。 #!/usr/bin/env ruby # encoding: utf-8 require "lib/alone" Alone::main { @message = "Hello, World." AlTemplate.run "index.rhtml" } ==== 4. テンプレートファイルの記述 ==== 開発しようとしている「Hello World」アプリケーションはwebアプリケーションです。最終的な結果はブラウザで表示されますので、アプリケーションは通常はHTMLを生成してクライアントに返します。 テンプレートファイルは、生成するHTMLの雛形となるものです。index.rhtmlというファイルを以下の内容で作成してください。 <%= header_section %> Test <%= body_section %>

<%=h @message %>

<%= footer_section %>
以上で完成です。hello_worldディレクトリの中には以下のファイル・ディレクトリが存在するはずです。 | index.rb | アプリケーション本体 | | index.rhtml | アプリケーションからHTTPレスポンスとして返される画面を生成するための雛形です。HTML内に一部Rubyのコードが埋め込まれたERBで記述します。 | | lib/ | Aloneのライブラリ群が格納されたディレクトリです。アプリケーションから呼び出されます。開発環境で使用する簡易webサーバal_server.rbも含まれています。 | それでは、作成したアプリケーションを実行してみましょう。 ===== 簡易webサーバ al_server.rb による「Hello World」アプリケーションの実行 ===== 作成したアプリケーションはApacheなどCGIアプリケーションを実行できる環境に配置すれば実行可能ですが、Aloneにはal_server.rbという簡易webサーバが付属しており、作成したアプリケーションを手軽に実行できます。al_server.rbを利用すればwebサーバのインストールや設定を行うことなくアプリケーションのテストができますので、開発時には便利です。 al_server.rbを使ってアプリケーションを利用するには、hello_worldディレクトリ内で以下のコマンドを実行してください。簡易webサーバがポート10080で待ち受ける状態で起動し、カレントディレクトリ(.)のアプリケーションやファイルにwebブラウザでアクセスできる状態になります。 ruby lib/al_server.rb . webブラウザでhttp://localhost:10080/にアクセスしてみてください。「Hello World」アプリケーションによって生成された画面が表示されます。 {{:handbook:hello_world_otuput.png|}} ===== Hello Worldアプリケーションの解説 ===== ダイレクトアプローチよるHello Worldアプリケーションのユーザーコードは、アプリケーション本体であるindex.rb、そしてレスポンスとしてクライアントに送出するHTMLを生成するためのテンプレートであるindex.rhtmlの二つからなります。 index.rbはwebブラウザからアクセスされ、CGIアプリケーションとして実行されます。つまり、このファイルがアプリケーション実行の起点となります。 index.rbのソースコードを以下に示します。 #!/usr/bin/env ruby # encoding: utf-8 require "lib/alone" Alone::main { @message = "Hello, World." AlTemplate.run "index.rhtml" } Aloneを使ってCGIアプリケーションを開発するためには、スクリプトの冒頭でrequireメソッドを呼び出してAloneのライブラリを読み込みます。 require "lib/alone" ダイレクトアプローチでは、アプリケーションのコードはAlone::mainメソッドの引数にブロックとして渡します。 Alone::main { @message = "Hello, World." AlTemplate.run "index.rhtml" } ブロックの内部では画面に表示させたい文字をインスタンス変数@messageに格納した後にAlTemplate.runを実行しています。 AlTemplate.runはERBで記述したテンプレート名を指定して実行すると、そのテンプレートの解析・処理を行い結果を標準出力に出力します。出力された内容はHTTPレスポンスとしてwebサーバからクライアントに送信されます。 Hello Worldアプリケーションで使用しているテンプレートindex.rhtmlのソースコードを示します。 <%= header_section %> Test <%= body_section %>

<%=h @message %>

<%= footer_section %>
テンプレートはクライアントに返すHTMLの雛形を記述するものです。 Hello worldアプリケーションでは使用していませんが、Rubyのコードを<% %>に記述することができます。<%= %>で囲んだ場合は、内部のRubyコードで最後に評価された値が挿入されます。例えば、Hello Worldアプリケーションのindex.rbの場合は、header_section、body_section、footer_sectionなどAloneで定義済みのメソッドを呼び出してHTMLのヘッダ部、bodyタグ、フッタ部など固定的な記述を挿入しています。また、アプリケーションコード内で値をセットしたインスタンス変数@messageの内容も挿入しています。@messageのように、インスタンス変数を介してアプリケーションコードからテンプレートにオブジェクトを渡すことができます。 Hello Worldアプリケーションで実際に出力されるHTMLは次のようなものになります。 Test

Hello, World.