VPSでRuby開発をしよう

第5回MySQLを使った簡単Webアプリ構築(完結編)

Ruby連載の最終回にあたる今回は、Ruby on Rails(以下Rails)でMySQLを使用するWebスケジューラを完成させます。

本連載では、@YMCのVPSサービスを用いて説明を進めていきます。利用するVPSサービスにより細かな違いはありますが、大きな流れは同じですから、ご利用の環境に合わせて読み替えてください。

スケルトンを作る

まず、Railsのスケルトンを作ります。新たに作成しましょう。

$ rails -d mysql scheduler
$ cd scheduler
$ script/generate scaffold scheduler subject:string sdate:datetime edate:datetime description:string

ここまででRailsスケルトンはできました。

続いて、config/database.ymlファイルを編集します。図1のように、第3回で作成したユーザ名とパスワードを設定します。⁠database」にある名前は、次の手順で作成するMySQLのDB名なので、控えておいてください。

図1 config/database.ymlの編集箇所
development:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: scheduler_development
  pool: 5
  username: scuser
  password: scuser
  socket: /var/lib/mysql/mysql.sock

developmentセクションの「username」「password」の定義内容を書き換える。⁠databese」にある名前は後でMySQL上で作成するDB名なので控えておく。

MySQL DBを設定する

続いて、MySQL DBを設定します。ユーザ「scuser」をまだ作成していない場合は、MySQLのコンソールで以下のように実行してください。

mysql> CREATE USER 'scuser'@'%' IDENTIFIED BY 'scuser';

ユーザを作成したら以下のコマンドを実行して、DBを作成しユーザscuserに権限を付与します。

mysql> CREATE DATABASE `scheduler_development` DEFAULT CHARACTER SET utf8;
mysql> GRANT ALL PRIVILEGES ON `scheduler_development` . * TO 'scuser'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> exit

今度はOSのシェルで、以下のコマンドを実行します。

$ rake db:migrate

これで、scheduler_developmentデータベースの中に必要なテーブルが作成されました。

試しに動かしてみる

とりあえず動作するレベルのアプリができましたので、まずは動作を確認してみましょう。シェルで以下のコマンド実行します。

$ script/server

第4回で説明したような、WEBrick(Railsが持つ簡易Webサーバ)の起動画面が表示されます。ブラウザからは「ホスト名:3000/schedulers/」のように、ポート番号3000番とschedulerの複数形schedulersをURLに加えます。たとえばrails.gihyo.jpというホストであれば、URLはhttp://rails.gihyo.jp:3000/schedulers/となります。

図2のような画面が表示されれば、動作チェックは完了です。シェルでCtrl-Cキーを押して、サーバを一旦終了させましょう。

図2
図2

画面周りを日本語化する

このままでも日本語の入力はできるのですが、やはり画面は可能な限り日本語化しましょう。表示を日本語化するには、以下のファイルを編集します。

  • app/views/schedulers/edit.html.erb
  • app/views/schedulers/index.html.erb
  • app/views/schedulers/new.html.erb
  • app/views/schedulers/show.html.erb
  • config/environment.rb

編集箇所は、リスト1のとおりです。なお、Windowsなどで編集する場合は、文字コードをUnicode(UTF-8)で保存してください。

リスト1 編集個所

app/views/schedulers/edit.html.erb

<h1>スケジュールの編集</h1>

(略)

<%= link_to '一覧', @scheduler %> |
< %= link_to '戻る', schedulers_path %>
app/views/schedulers/index.html.erb
<h1>スケジュールの一覧</h1>

(略)

    <th>件名</th>
    <th>開始日時</th>
    <th>終了日時</th>
    <th>内容</th>

(略)

    <td><%= link_to '一覧', scheduler %></td>
    <td><%= link_to '編集', edit_scheduler_path(scheduler) %></td>
    <td><%= link_to '削除', scheduler, :confirm => 'よろしいですか?', :method => :delete %></td>

(略)

<%= link_to '新しいスケジュールの追加', new_scheduler_path %>
app/views/schedulers/new.html.erb
<h1>新しいスケジュールの追加</h1>

(略)

    <%= f.submit '追加' %>

(略)

<%= link_to '戻る', schedulers_path %>
app/views/schedulers/show.html.erb
(略)

  <b>件名:</b>

(略)

  <b>開始日時:</b>

(略)

  <b>終了日時:</b>

(略)

  <b>内容:</b>

(略)

<%= link_to '編集', edit_scheduler_path(@scheduler) %> |
< %= link_to '戻る', schedulers_path %>
config/environment.rb
(略)  

config.time_zone = 'Tokyo'

(略)

編集を終えたら、先ほどと同様にサーバを起動してブラウザからアクセスしてみましょう。まずは画面を日本語化できました図3~6⁠。

このように入力から登録、表示まで、一通り行えています。

図3
図3
図4
図4
図5
図5
図6
図6

今後の方針

追加修正

この後、英語表示が残っている部分も日本語化したり、タイムゾーンをUTC(協定世界時)ではなく日本時間(JST)にしたり、項目の入力欄をもっと使いやすくしたり…といった改善ポイントがあります。

複数ユーザの利用と管理画面

今回の連載では取り上げられませんでしたが、この他、

  • 複数ユーザでの利用
  • 共通の管理画面
  • ファイルの添付

といった機能があると便利でしょう。その場合、RoRのヘルパーを使うと、効率良く開発できます。

まとめ

以上、5回にわたってVPS上でのRuby開発の基礎をお届けしました。Ruby自体は便利な反面、開発環境を整えたり、準備をするときにコツがいります。その場合、今回紹介した@YMCのサービスなど、ホスティングサービスを利用すると便利です。ぜひ皆さまもご活用ください。

おすすめ記事

記事・ニュース一覧