Ruby on Rails3系におけるアプリケーション作成手順について

engineer_intern_rails

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版

Ruby on Railsでの有給インターンに挑戦したい学生の方はこちら

おすすめの記事