この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
はじめまして。
KBMJでエンジニアをしているTrinityTです。
さて、通常RubyOnRails環境でDBアクセスする場合、ActiveRecordを使用します。Rails開発ではもちろん僕も恩恵にあやかっていたのですが、バッチ処理の実装中、Ruby単体でDBアクセスしたほうが良いのでは?というケースがでてきました。
そこでコレを機会にActiveRecordを使わないでアクセスする方法を調べてみました。
ここではMySQLとPostgreSQLで試してみることにします。
検証した環境
OS:WindowXP SP2
Ruby:1.8.6(インストール済)
RubyGems:0.9.5(インストール済)
MySQL編
(1)DBコネクタインストール
手っ取り早くRubyGemを使ってインストールします。
C:\>$gems install mysql
(2)ソース上で「require ‘mysql’」を記述してモジュール読み込み
$KCODE=”UTF8″
require ‘mysql’
# 接続
my = Mysql::new(“localhost”,”hoge”,”hoge”,”hoge”)
# 文字セットをUTF-8に設定
my.query(“set character set utf8”)
res1 = my.query(“select * from huga”)
my.close
※API説明
Mysql::new(“host”, “user”, “passwd”, “db”)
host:ホスト名
user:ユーザ
passwd:パスワード
db:DB名
PostgresSQL編
(1)DBコネクタインストール
C:\>$gems install postgres
(2)ソース上で「require ‘postgres’」を記述してモジュール読み込み
$KCODE=”UTF8″
require ‘postgres’
# インスタンス生成
pos = PGconn.connect(“localhost”, 5432, “”, “”, “hoge”,”hoge”,”hoge”)
res1 = pos.exec(“select * from huga”)
pos.close
※API説明
PGconn.connect(pghost, pgport, pgoptions, pgtty, dbname, login, passwd)
pghost : サーバのホスト名(文字列)
pgport : サーバがlistenしているポート番号(整数)
pgoptions : backendを起動する際のオプション(文字列)
pgtty : backendがデバッグメッセージを表示するtty(文字列)
dbname : 接続するデータベース名(文字列)
login : ユーザ名(文字列)
passwd : パスワード(文字列)
どちらのDBにも思いのほか簡単にアクセスできました。
WebアプリをRailsで作る分にはほぼ使う機会は無いと思いますが、機会があれば活用してみてください。