VPSでRuby開発をしよう
第3回 MySQLを使った簡単Webアプリ構築(準備編)
2009年6月4日
VPS, Ruby, Webアプリケーション開発, Rails, レンタルサーバ, @YMC
データベース, テーブル, ディレクトリ, MySQL, schedule, Rails
Ruby連載の第3回目にあたる今回は,MySQLを使ったRuby on Rails(以下Rails)でのWebアプリ構築の第一歩として,準備作業を解説します。
本連載では,@YMCのVPSサービスを用いて説明を進めていきます。利用するVPSサービスにより細かな違いはありますが,大きな流れは同じですから,ご利用の環境に合わせて読み替えてください。
スケジューラを作ろう
Railsでのアプリ構築の例として,簡単なWebスケジューラを作成します。件名や日時,概要を入れられる簡易なものです。
では,開発のための準備を進めましょう。作業する内容は以下の通りです。
- Railsスケルトンの作成
- MySQLデータベースの定義
- Railsでのデータベース設定
- MySQLテーブルの作成
Railsスケルトンの作成
最初からコードを書いてアプリを作成することも可能ですが,Railsでは自動生成されるスケルトン(骨組み)を基に手を加えていくのが簡便です。
Railsスケルトンは,「rails ディレクトリ名」とコマンドで作成できます。public_htmlの下など,外部からアクセス可能なディレクトリに移動してから作成しましょう。
今回は「schedule」というディレクトリにしますので,public_htmlディレクトリをカレントにしてから
$ rails -d mysql schedule
と実行します。-dオプションの引数で,データベースをMySQLに指定しています。
カレントディレクトリにscheduleディレクトリが作成され,その中にさまざまなサブディレクトリやファイルが生成されます。
MySQLデータベースの定義
続いて,MySQLデータベースを定義します。データベース名はschedule_development,ユーザ名/パスワードはいずれもscuserとします。
新規ユーザは,下記のようなMySQLコマンドで作成できます。
mysql> grant select,insert,delete,update,create,drop,file,alter,index on schedule_development to scuser identified by 'scuser';
コマンドラインでの操作は敷居が高く感じられるなら,phpMyAdminなどのGUIツールを使ってもかまいません。
続いて,空のデータベースを下記のMySQLコマンドで作成します。
mysql> CREATE DATABASE schedule_development CHARACTER SET utf8;
これも,phpMyAdminなどで作成してもかまいません。その場合は,データベース名を「schedule_development」にすることと,文字コードをUTF-8にすることを忘れないでください。
Railsでのデータベース設定
データベースを作成できたら,Railsにデータベースを設定します。設定するには,先ほど作成したscheduleディレクトリ内のconfigディレクトリにあるdatabase.ymlファイルを変更します。
database.ymlファイルには「development」「test」「production」の3つのセクションがあり,今回は開発用なのでdevelopmentセクションの内容を変更します。具体的な変更箇所は,developmentセクションのusernameとpasswordです(リスト1)。
リスト1 config/database.ymlの変更箇所
development:
adapter: mysql
encoding: utf8
reconnect: false
database: schedule_development
pool: 5
username: scuser
password: scuser
socket: /var/lib/mysql/mysql.sock
これで,RailsでMySQLデータベースを利用する準備が整いました。
MySQLテーブルの作成
次は,スケジュールデータを格納するためのMySQLテーブルを作成しましょう。まず,データを格納するモデルの雛形を作成します。モデル名は単数形,頭文字は大文字にします。
$ ruby script/generate model Schedule
db/migrateディレクトリに,20090602150709_create_schedules.rbのように日付で始まるマイグレーションファイルが作成されます。このファイルを編集してrakeコマンドを実行すると,テーブルを作成できます。
テーブルの構成は,表1のように決めました。この構成に基づいて,先ほどのマイグレーションファイルを変更しましょう(リスト2)。
表1 schedulesテーブルの定義
| フィールド名 | 型 | 説明 |
|---|---|---|
| id | 整数 | (自動生成)連番,主キー |
| subject | 文字列(32文字) | 件名 |
| sdate | 日時(datetime) | 開始日時 |
| edate | 日時(datetime) | 終了日時 |
| description | 文字列 | 概要 |
リスト2 マイグレーションファイルの変更箇所
class CreateSchedules < ActiveRecord::Migration
def self.up
create_table :schedules do |t|
t.string :subject, :limit => 32, :null => false;
t.datetime :sdate, :null => false;
t.datetime :edate, :null => false;
t.string :description
t.timestamps
end
end
def self.down
drop_table :schedules
end
end
以上で,下準備は完了です。
CentOSでのNoMemoryErrorに対処する
RubyやRailsなどのインストールを終えて無事動作していたのに,突然「NoMemoryError」などのエラーが発生したことはないでしょうか。CentOSとRubyでは,このような現象が時折発生するようです。
その場合は/etc/prelink.confに以下の行を追加した後で,prelink -u /usr/bin/ruby を実行してください。
-b /usr/bin/ruby
次回予告
今回は準備だけで終わってしまったので,次回は実際に開発を進めていきます。
VPSでRuby開発をしよう
- 第5回 MySQLを使った簡単Webアプリ構築(完結編)
- 第4回 Railsでの開発は本当に簡単か?
- 第3回 MySQLを使った簡単Webアプリ構築(準備編)
- 第2回 最新Ruby & Ruby on Rails 環境構築
- 第1回 言語に見るVPS活用最新動向


