Ruby on RailsにはWebアプリケーションを迅速に実装するうえで、便利な機能がもりだくさんということで、今回は MySQLを使った場合のRails3系におけるプロジェクト作成方法を記載します。コマンドの実行はすべて各プロジェクトのルート階層で行うようにしましょう。
Ruby on Rails入門 や Ruby on Rails入門 (全46回) の情報ソースを参考に簡単なアプリケーション作成手順を実際に行ってみました。
1. MySQLを使うことを指定したうえでプロジェクトを作成します
sudo rails new sample_view -d mysql
2. /config/database.yml を設定。MySQLのユーザー名とパスワード名を設定します
3. データベースを作成します
sudo rake db:create
うまくいかない場合には
sudo bundle exec rake db:create
も試してみてください。
4. コントローラーを作成します。この場合にはtestsコントローラーを作成しています
sudo rails generate controller tests
5. /app/views/tests/ ができていることを確認してください
6. モデルのひな形を作成します. /app/controllers/tests_controller.rb を以下のように修正します。ファイル名にtestsがついていることを意識しましょう。MVCモデルのフレームワークならではの命名規則ですね。
class TestsController < ApplicationController
def show
end
end
7. /app/views/tests/ というフォルダがtestsコントローラーを作成した時点で作成されています。show.html.erb というファイル名でファイルを作成しましょう。6.のプロセスで先ほどshowアクションを定義しましたね。ファイル名の命名規則にしばりがあることに注意しましょう。
<h1>テスト用テンプレートです</h1>
<p>
テンプレートによって作成された結果を表示させてみましょう。
</p>
8.ルーティングの設定を行います。/config/routes.rb を以下のように修正します
SampleView::Application.routes.draw do
get “tests/show”
end
9. 今回作成したプロジェクトのルート階層で sudo rails server を実行してみましょう。WeBrickが起動します
10. http://localhost:3000/tests/show にアクセスしてみましょう。
testsコントローラーに定義していたshowというアクションを実行することになります。アクションが呼び出され、アクションからテンプレートが呼び出されてHTMLページが作成され、利用者へ返されてブラウザへ表示されています。
11. さらに最後にモデルを作成し、ビュー側でデータベースから取り出したデータを扱う場合の手順を確認しましょう。まずはRailsのマイグレーション機能を使ってサンプルデータを投入してみましょう。
sudo rails new books -d mysql
sudo vi /config/database.yml
sudo rake db:migrate
sudo rails generate model title name:string test_date:date
sudo rake db:migrate
テーブルがきちんと作成されているかを確認してください
mysql> DESC titles;
+————+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————+————–+——+—–+———+—————-+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| test_date | date | YES | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+————+————–+——+—–+———+—————-+
5 rows in set (0.00 sec)
sudo vi /db/seeds.rb
以下のデータをseeds.rbに追記します
# coding: utf-8
Title.create(:name => ‘a’, :test_date => ‘2011-07-18’)
Title.create(:name => ‘b’, :test_date => ‘2011-10-14’)
sudo bundle exec rake db:seed
テーブルにデータが格納されているかを確認してください
mysql> SELECT * FROM titles;
+—-+—————–+————+———————+———————+
| id | name | test_date | created_at | updated_at |
+—-+—————–+————+———————+———————+
| 1 | a | 2011-07-18 | 2013-04-07 13:40:59 | 2013-04-07 13:40:59 |
| 2 | b | 2011-10-14 | 2013-04-07 13:40:59 | 2013-04-07 13:40:59 |
+—-+—————–+————+———————+———————+
2 rows in set (0.01 sec)
12. データベースのデータをモデルを使って取得し、ビューに表示させてみましょう。まずsudo rails generate controller test でtestコントローラーを作成しましょう。/app/controllers/test_controller.rb が出来ていることを確認してください。
以下のような形で test_controller.rb を修正してください。「Title」モデルの「all」メソッドはテーブルに含まれる全てのデータをモデルクラスのオブジェクトの配列として返します。今回は返された配列を変数「titles」に格納しています。
class BooklistController < ApplicationController
def test
@titles = Title.all
end
end
13. /app/views/test/test.html.erb を作成しましょう。 testアクションを定義しているので、test.html.erbという名称のテンプレートファイルである必要があります
<h1>モデルからビューへのデータの受け渡しについて確認してみましょう</h1>
<p>
<% @titles.each do |title| %>
<%= title.name %>,<%= title.test_date %><br />
<% end %>
</p>
14. ルーティングの設定を行います./config/routes.rb に以下のルーティング設定を行います.ただし、今回のルーティング設定はresourcesを用いたルーティング設定を行うこととします。
match ‘test’ => ‘test#hello’
15. sudo rails server を実行して、サーバを起動します。
Ruby on Railsでは簡単にWebアプリケーションを作れるようになっています。ぜひ皆さんも一度試してはいかがでしょうか?Web上の情報ソースでは
Ruby on Rails入門
や
Ruby on Rails入門 (全46回)
が参考になります。書籍に関しても紹介しておきます。
レファレンス本として使うのであればこちら。
Rails3レシピブック 190の技
ストーリー形式になっている本であればこちら。
RailsによるアジャイルWebアプリケーション開発 第4版