SQLite3-Ruby で deprecated と警告された件の対処
昨日のエントリ から、SQLite3-Ruby のダイナミックリンクライブラリは deprecated なので Native なドライバを使わないといけないということがわかりました。つかちゃんとエラーメッセージ読めよ>自分。
いろいろ調べてみると、Windows の場合コンパイル済みの Native なドライバが含まれている RubyGems パッケージ(ファイル名に mswin32 とかついてるやつ)を
から取ってきてインストールしてから、
irb(main):001:0> require 'rubygems' => true irb(main):002:0> require 'sqlite3' => true irb(main):003:0> db = SQLite3::Database.new('test.db') => #<SQLite3::Database:0x3a79628 @translator=nil, @type_translation=false, @driv er=#<SQLite3::Driver::Native::Driver:0x3a79588 @authorizer={}, @callback_data={} , @trace={}, @busy_handler={}>, @statement_factory=SQLite3::Statement, @results_ as_hash=false, @handle=#<SWIG::TYPE_p_sqlite3:0x3a71130>, @transaction_active=fa lse, @closed=false> irb(main):004:0> db.execute('create table hoge(id number)') => [] irb(main):005:0> db.execute('insert into hoge values(1)') => [] irb(main):006:0> db.execute('select * from hoge') => [["1"]] irb(main):007:0> db.close => true
とかすると自動で Native なドライバが使われて OK のようです。Unix系なら gem install sqlite3-ruby としたときに自動でコンパイルされると思われます(未確認)。
この際、手動で(RubyGems経由でなく)インストールした SQLite3-Ruby が残っていて、そちらに Native ドライバが入っていなかったりするとエラーになるため、削除しておく必要があります。