Webアプリに欠かせないデータベース関係の処理をお試しで書いてみたいと思います。
rubyからDBにアクセスするには、
- DBネイティブなライブラリ
- DBI等のベンダ非依存のライブラリ。(‘等の’とか言ってますがDBI以外知りません)
- ActiveRecord等の高機能O/Rマッパー
なんてのが使えるかと思います。ネイティブライブラリはちょっと拡張性にかけるし、O/Rラッパーは大げさなので、DBIを使ってみようかと思います。
DBMSもsqlite,mysql,postgresqlとか色々使えるようですが、お手軽なsqliteにします。
DBMS(sqlite3)の準備
いつ入れたかわからないけど既に入ってました。
|
|
だいぶ古いけど、まぁ問題が出たらバージョンアップする方向で。
最新版はこちらから。
rubyライブラリの準備
先ずはsqlite3用のライブラリ。
DBI使う場合でもネイティブライブラリは必要なのです。gemでインストールします。
|
|
つぎにデータベースへのアクセスをある程度抽象化してくれるというDBIというライブラリ。
こちらもgemで。
|
|
dbd-sqlite3はsqliteとdbiの仲を取り持つライブラリらしい。
eclipseにDB開発ツールをインストールしてSQLite用に仕立てる
eclipseのプラグインで
Kepler – http://download.eclipse.org/releases/kepler
“Database Development”
をインストールしときます。
かつては違う名前だったような気がしますが、同じようなことできれば何でも良いんです。
さらにSQLite用のJDBCドライバも必要です。
SQLiteやOracleから公式なドライバは提供されて無いっぽいんで、このへんからダウンロード(sqlite-jdbc-3.7.2.jar)して適当なフォルダにコピーします。
Preference->Data Management->Connectivity->Driver Definitionで”Add”
Name/TypeタブのVendor FilterでSQLiteを選んで、下のリストからSQLite JDBC Driverを選択。
JAR Listタブで”Add JAR/Zip”。ダウンロードしたjarファイルを指定します。
Defaultで勝手に入っているjar設定(sqlitejdbc-v051.jarとかなってました)がある場合は削除しときます。
Propertiesタブで好みの既定値をセットしたら”OK”。
ちなみにConnection URLを jdbc:sqlite:D:\var\SQLiteDB とかしてみました。
データベース作成
SQLファイルと接続設定
rubyプロジェクトにsqlってフォルダを作って、”sqlite3.sql”ファイルを作ります。
sqlファイルを開くとSQL File Editorで開くので、こんな感じのSQLを書きました。
|
|
エディタ上で右クリックして、”Set Connection info”を選びます。
Database Server Type:SQLITE_3.5.9
Connection Frofile Nameで”Create”->SQLiteで Name: RubySQLiteTest -> Next
Database: RubySQLiteTest
Database Location: D:\var\SQLiteDB\RubySQLiteTest.sqlite3 で
こんな感じの設定で
“Finish”
エディタのダイアログはこんな感じ。
SQL実行
エディタ上で右クリックして、”Execute All”で実行されます。
実行結果
実行結果は実行するると勝手に表示されますが、Insertされたデータなんかを見るにはData Source Explorerなるウインドウを表示します。
Window->Show View->Other…->Data Management->Data Source Explorer
Database Connectionに先ほど作った接続定義があるはずなんで、掘り進んでいってEditで表示(と編集)ができます。
Rubyからアクセス
やっとこさ本題のRubyからのアクセスです。
前回作ったお試しプロジェクトにDBITest.rbを追加します。
eclipseからgemでインストールしたライブラリを参照
eclipseからgemなライブラリを参照しとかないと、コード補完が利きませんのでソッコーで参照させます。
Window->Preeferences->Ruby->Interpreters->Interpreter system librariesに
C:\Ruby200-x64\lib\ruby\gems\2.0.0\gems
を追加。
コード書く
ここまでで帰りたくなってきますが、やっとコードです。
|
|
結果は
|
|
自分が物知らないだけなんですが、MS系の開発環境(VSとかSQL Managementとか)に慣れてると、eclipseとかrubyとかメジャーどころですら、環境設定に要らん手間が多くて疲れますな。
Macとかならまた違うのか?