libro
www.tuyano.com
初心者のためのRuby on Rails3入門

Modelを作ろう! (2/7)

作成:2012-02-06 08:11
更新:2012-02-06 08:11

■database.ymlの修正

さて、まず最初に行うのは「データベースの設定」です。Railsでは、どのデータベースを利用するのか、そこにアクセスするのにユーザーやパスワードはどうするか……といったデータベース利用に関する詳細を設定ファイルにまとめてあります。「config」フォルダの中にある「database.yml」というのがそれです。ここに記述されている内容を参照しながらRailsはデータベースにアクセスを試みます。ですから、これが正しく書けていなければ、アクセス自体に失敗します。

Aptana Studioでアプリを生成すると、下のリスト欄のようにdatabase.ymlが生成されます。これは、すべてsqlite3を使ってデータベースアクセスを行うように記述された設定です。このファイルは「YAML」と呼ばれる記述形式で書かれています。これは、ある項目名を記述し、その内容を半角スペースで右に送って記述していく、という形になっています。例えば、
development:
  adapter: sqlite3
  database: db/development.sqlite3
  ……略
これは、「development」という項目の中に、adapterdatabaseといった設定項目が用意されていることを示します。各設定は、「設定名:値」というように名前と値をコロンでつなげて記述します。

database.ymlには、3つの項目が用意されています。「development」「test」「production」で、それぞれにデータベースアクセスのための設定が記述されています。これらはそれぞれ以下のような役割を果たします。


development――開発時の設定です。Railsではローカル環境でアプリをチェックできるサーバー機能がありますが、これを使ってローカルで同左チェックをするときに用いられる設定と考えてください。

test――テスト用の設定です。テスト用は、ユニットテストと呼ばれるテストプログラムでアプリのテストを行うためのものですので、まぁデフォルトのままでいいでしょう。

production――正式稼働用の設定です。実際にHeroku(あるいは自分が使うサーバー)にデプロイしたとき、サーバーで使用するデータベースの設定をここに記述します。

Herokuを利用する場合、実はこの設定は一切修正する必要はありません。HerokuではPostgreSQLが用意されていますが、Railsのアプリがデプロイされると、そのデータベース設定を自動的に修正し独自の形に変更してしまうようです。したがって、
database.yml
はそのまま手を加えないでおきます。(開発用とテスト用はSQLite3を使いますが、これらを別のものにしたい場合は変更してもかまいません)

念のために、Heroku以外の環境で利用することも考え、MySQLとPostgreSQLの設定の書き方をまとめておきましょう。基本的に用意される設定項目はほとんど同じです。

・MySQLの場合
adapter: mysql
database: データベース名
host: アクセスするホストの指定
username: ユーザー名
password:パスワード
encoding: utf8

・PostgreSQL
adapter: postgresql
database: データベース名
host: アクセスするホストの指定
username: ユーザー名
password:パスワード
encoding: utf8

encodingは省略してもかまいませんが、Rails自体がUTF8を基本にしているのでそれにあわせておくのがよいでしょう。adapterというのはデータベースアクセスに使用するプログラムのことです。これがデータベースによって違っているだけで、他はほとんど同じです。この他にも用意できる設定項目はあるのですが、ここであげた必要最低限の項目さえ用意されていればデータベースアクセスはできるようになります。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※database.yml

development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

test:
  adapter: sqlite3
  database: db/test.sqlite3
  pool: 5
  timeout: 5000

production:
  adapter: sqlite3
  database: db/production.sqlite3
  pool: 5
  timeout: 5000
※関連コンテンツ

「初心者のためのRuby on Rails3入門」に戻る