MerbでMySQLを使う。

MerbでのデフォルトのDBはRailsと同様にsqlite3です。ですが、せっかくなのでMySQLが使いたいという事で、MySQLを使用する場合の設定方法です。

まずはdata_objectsMySQL用driverであるdo_mysqlをインストールしておきます。

$ sudo gem install do_mysql


アプリ作成の流れはsqliteの場合と同じです。

$ merb-gen app myapp
$ cd myapp
$ merb-gen resource article title:string,content:text


ひな形を作成したら、先にDBを作成しておきましょう。

mysql>create database db_development;


DBを作成したらconfig/database.ymlを以下のように編集します。

---
development: &defaults
  adapter: mysql
  database: db_development
  username: root
  password: yourpass
  host: localhost

test:
  <<:       *defaults
  database: db_test

production:
  <<:       *defaults
  database: db_production

rake:
  <<: *defaults


後はrakeでautomigrateを実行して、DBにテーブルを作成するだけです。

$ rake db:automigrate
(in /Users/norizo3/merbapps/myapp)
Loading init file from /Users/norizo3/merbapps/myapp/config/init.rb
Loading /Users/norizo3/merbapps/myapp/config/environments/development.rb
Loading init file from /Users/norizo3/merbapps/myapp/config/init.rb
Loading /Users/norizo3/merbapps/myapp/config/environments/rake.rb
 ~ Connecting to database...
 ~ Loaded slice 'MerbAuthSlicePassword' ...
 ~ Parent pid: 1022
 ~ Compiling routes...
 ~ Activating slice 'MerbAuthSlicePassword' ...


テーブルが作成されたか確認してみましょう。

mysql>show tables;
+--------------------------+
| Tables_in_db_development |
+--------------------------+
| articles                 |
| sessions                 |
| users                    |
+--------------------------+
3 rows in set (0.01 sec)

mysql> desc articles;
+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| id      | int(11)     | NO   | PRI | NULL    | auto_increment | 
| title   | varchar(50) | YES  |     | NULL    |                | 
| content | text        | YES  |     | NULL    |                | 
+---------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)


merbを実行すればMerb&MySQLライフの始まりです。

$ merb
Loading init file from /Users/norizo3/merbapps/myapp/config/init.rb
Loading /Users/norizo3/merbapps/myapp/config/environments/development.rb
 ~ Connecting to database...
 ~ Loaded slice 'MerbAuthSlicePassword' ...
 ~ Parent pid: 1029
 ~ Compiling routes...
 ~ Activating slice 'MerbAuthSlicePassword' ...
merb : worker (port 4000) ~ Starting Mongrel at port 4000
merb : worker (port 4000) ~ Successfully bound to port 4000