@YMC RENTAL SERVER SERVICE お知らせお問い合せ各種申請
YSシリーズ マネージドサーバー カスタムサーバー その他のプラン お問い合せ 各種申請
 カスタムサーバー

Ruby on Rails のサンプルアプリケーション

Ruby on Rails(以下、Rails) は、スクリプト言語「Ruby」で記述されたWebアプリケーション・フレームワークです。従来の開発に比べ、少ない作業でWebアプリケーションを作成することができます。

ここでは Rails を使った簡単なアプリケーション(ToDo リスト)の作成手順を説明します。

作成するアプリケーションについて

サンプルアプリケーションとして、簡単な ToDo リストを作成します。
リストを記録するDBには SQLite を利用し、最終的には Phusion Passenger(以下、mod_rails)を利用して Apache と連携させて動作するようにします。

作成前の準備

1. Rails のインストール

アプリケーションの作成前に、Rails のインストールが完了している必要があります。Ruby Enterprise Edition(以下、REE)を利用すると、mod_rails まで含めてインストールすることができます。
詳しくは、「Ruby on Rails のインストールについて」のコンテンツをご覧下さい。

ここでは、REE を「/usr/ruby/ree-1.8.7」にインストールしたものとして説明します。

2. Rails 用アカウントの作成

セキュリティの向上のため、Rails アプリケーションは専用のアカウントで作成することにします。ここでは「rails」というアカウント名を利用します(mod_rails を利用する場合は、ファイルの所有者が root となっている場合には動作しませんのでご注意ください)。

REE をインストールした場合、OS標準の ruby コマンドより優先して REE 版の ruby コマンドが実行されるようにする必要がありますので、.bash_profile で PATH 環境変数に「/usr/ruby/ree-1.8.7/bin」を追加して優先的に実行されるように設定します。

なお、今後の説明の実行例では、プロンプトが「#」で始まるものは root アカウントでの実行を、「$」で始まるものは rails アカウントでの実行を表しています。

作業内容

  1. rails アカウントを作成する
    アカウント作成後、mod_rails からアクセス可能なようにパーミションの変更も行います。
    useradd rails
    passwd rails
    chmod a+x /home/rails
    
  2. REE 版のコマンドのパスを PATH に追加する
    vi /home/rails/.bash_profile

実行例

[root@www ~]# useradd rails
[root@www ~]# passwd rails
Changing password for user rails
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@www ~]# chmod a+x /home/rails/
[root@www ~]# vi /home/rails/.bash_profile

/home/rails/.bash_profile

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin
PATH=/usr/ruby/ree-1.8.7/bin:$PATH

export PATH

アプリケーションの作成手順

1. プロジェクトを作成する

Rails では、rails コマンドを利用することでプロジェクトの骨組みを作成することが出来ます。アプリケーションは、ここで作成した骨組みを利用して開発することになります。

今回は、TodoList というプロジェクト名で /home/rails(railsアカウントのホームディレクトリ)内にプロジェクトを作成します。DBには SQLite を利用します。SQLite では事前にDBの設定作業等が必要ないため手軽に利用できます。

作業内容

  1. rails アカウントのホームディレクトリに移動する。
    必ず 「rails」 アカウント で作業を行ってください。
    cd /home/rails
  2. rails コマンドでプロジェクトを作成する。
    DBには SQLite を利用するのでオプションの指定は必要ありません。
    rails TodoList

実行例

[rails@www ~]$ cd /home/rails/
[rails@www ~]$ rails TodoList
      create
      create  app/controllers
      create  app/helpers
      create  app/models
・・・中略・・・
      create  log/server.log
      create  log/production.log
      create  log/development.log
      create  log/test.log
[rails@www ~]$

3. アプリケーションの雛形を作成する

Rails では scaffold という機能を使うことで、モデルを操作するのに必要な最低限必要なコードを作成することができます。

作業内容

  1. ganerate 機能でコードを作成する。
    プロジェクトに関するコマンド操作等は、対象のプロジェクトディレクトリに移動して実行してください。
    cd TodoList
    ./script/generate scaffold item level:string action:text
    
  2. migrate 機能を使いDBを作成する。
    rake db:migrate

実行例

[rails@www ~]$ cd TodoList
[rails@www TodoList]$ ./script/generate scaffold item level:string action:text
      exists  app/models/
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/items
      exists  app/views/layouts/
・・・中略・・・
      create    app/models/item.rb
      create    test/unit/item_test.rb
      create    test/fixtures/items.yml
      create    db/migrate
      create    db/migrate/20091123132540_create_items.rb
[rails@www TodoList]$ rake db:migrate
(in /home/rails/TodoList)
==  CreateItems: migrating ====================================================
-- create_table(:items)
   -> 0.0026s
==  CreateItems: migrated (0.0030s) ===========================================

4. 動作テストを行う

Rails は WEBrick を利用したサーバー機能も持っているので、すぐに動作テストを行うことができます。
この状態で、一覧・作成・表示・更新・削除といった基本機能を利用することができます。

作業内容

  1. WEBrick サーバーを起動する。
    ./script/server
  2. サーバーにアクセスして動作確認をする。
    WEBrick サーバーのURLは標準では以下のようになります。サーバー名の部分はご利用のサーバーのドメイン名もしくはIPアドレスを入力してください。
    http://(お客様ドメイン名 または IP アドレス):3000/items
  3. WEBrick サーバーを停止する。
    サーバーを停止するには Ctrl-C([Ctrl] キーを押しながら [C] キーを押す)を押してください。

実行例

[rails@www TodoList]$ ./script/server
=> Booting WEBrick
=> Rails 2.3.4 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2009-11-24 16:39:00] INFO  WEBrick 1.3.1
[2009-11-24 16:39:00] INFO  ruby 1.8.7 (2009-06-12) [i686-linux]
[2009-11-24 16:39:00] INFO  WEBrick::HTTPServer#start: pid=26543 port=3000
・・・中略・・・
[2009-11-24 16:39:09] INFO  going to shutdown ...
[2009-11-24 16:39:10] INFO  WEBrick::HTTPServer#start done.
Exiting

Apache と連携させる

REE は、mod_rails を効率よく利用するために作成された Ruby の改良版ですので、mod_rails を利用して Apache と連携させることにします。

mod_rails は、非常に簡単な手順で Apache との連携が可能です。
Apache と連携させる方法としてバーチャルドメインを設定する方法がありますが、ここでは RailsBaseURI を設定する方法で説明します。
この方法では、新しくバーチャルドメインを作成することなく、複数の Rails アプリケーションを連携させることができます。

作業内容

  1. migrate 機能を使い production 環境用のDBを作成する。
    Rails では特に指定をしない限り development 環境(開発環境)を利用するようになっていますが、Apache と連動させるのにあわせて production 環境(本番環境)で動作するようにDBを作成します。
    rake db:migrate RAILS_ENV=production
  2. ドキュメントルートにリンクを作成する
    Rails アプリケーションの public ディレクトリ(/home/rails/TodoList/public)へのリンクを /var/www/html/TodoList として作成します。なお、リンクの作成は、su コマンドで一時的に root になって作業を行います。
    su
    ln -s /home/rails/TodoList/public /var/www/html/TodoList
    
  3. mod_rails 用の設定ファイルを作成し、Apache を再起動する。
    /etc/httpd/conf.d/mod_rails.conf に Rails アプリケーションと連動させるための設定を記述します。設定内容に関しては、/TodoList で Rails アプリケーションを利用する設定になっています。詳しくは下記設定ファイルのサンプルをご確認ください。
    なお、設定ファイルの編集と Apache の再起動は、su コマンドで一時的に root になって作業を行います。
    su
    vi /etc/httpd/conf.d/mod_rails.conf
    /sbin/service httpd reload
    exit
  4. サーバーにアクセスして動作確認をする。
    mod_rails を利用した場合のURLは以下のようになります。サーバー名の部分はご利用のサーバーのドメイン名もしくはIPアドレスを入力してください。
    http://(お客様ドメイン名 または IP アドレス)/TodoList/items

実行例

[rails@www TodoList]$ rake db:migrate RAILS_ENV=production
(in /home/rails/TodoList)
==  CreateItems: migrating ====================================================
-- create_table(:items)
   -> 0.0025s
==  CreateItems: migrated (0.0029s) ===========================================

[rails@www TodoList]$ su
Password:
[root@www TodoList]# ln -s  /home/rails/TodoList/public /var/www/html/TodoList
[root@www TodoList]# vi /etc/httpd/conf.d/mod_rails.conf
[root@www TodoList]# /sbin/service httpd reload
Reloading httpd:                                           [  OK  ]
[root@www TodoList]# exit
exit
[rails@www TodoList]$

/etc/httpd/conf.d/mod_rails.conf

LoadModule passenger_module /usr/ruby/ree-1.8.7/lib/ruby/gems/1.8/gems/passenger-2.2.7/ext/apache2/mod_passenger.so
PassengerRoot /usr/ruby/ree-1.8.7/lib/ruby/gems/1.8/gems/passenger-2.2.7
PassengerRuby /usr/ruby/ree-1.8.7/bin/ruby

RailsBaseURI /TodoList



Copyright (c) GMO GlobalSign Holdings K.K. All Rights Reserved.