SyntaxHighlighter

2013年5月28日火曜日

Windows 上の Ruby 2.0 での sqlite3 の利用

Windows 上の Ruby 2.0 での sqlite3 の利用

最近は仕事が忙しすぎて、 mruby もブログも触る暇がないですが、久しぶりの備忘録です。
いくつか mruby などでリクエストをいただいていますが、なかなか対応できていなくて、本当にすみません。

MinGW 版 32bit Ruby 2.0 での sqlite3 の利用

2013年5月27日時点では、 sqlite3 の Windows 用 gem (version 1.3.7) には Ruby 2.0 向けのバイナリが入っていないようです。
そのため、 MinGW 版の 32bit Ruby 2.0 で Rails を使おうとすると、以下のようなエラーが出るようです。

私は RubyInstaller の 32bit 版を使わせていただいていますが、それに向けた sqlite3 のバイナリを置いておきます。
あくまで MinGW 版の 32bit Ruby 2.0 でしか確認していません。

準備とバイナリのダウンロード

下記のコマンドで、 sqlite3 をインストールしておきます。

このコマンドにより、 Ruby が C:/ruby にインストールされている場合は、 C:/ruby/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7-x86-mingw32 に gem がインストールされると思います。

続いて、 C:/ruby/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7-x86-mingw32/lib/sqlite3 の下に 2.0 ディレクトリを作成します。
おそらく 1.8, 1.9 というディレクトリは既にあるので、同列に 2.0 ディレクトリを作成します。

あらかじめ作成済みの sqlite3_native.so をダウンロードし、この 2.0 ディレクトリの下に置きます。

後は、普通に使えば大丈夫です。

以下に、作り方などの詳細を書いておきます。

Ruby 2.0 での sqlite3

Ruby から sqlite3 を使うには、 rubygems の sqlite3 を使うのが手軽です。
特に、 Ruby on Rails などでは、デフォルトでこの gem を使うようになっています。

しかし、 2013年5月27日時点では、 sqlite3 の Windows 用 gem には Ruby 2.0 向けのバイナリが入っていないようです。

ここでは、 Windows 上の 32bit 版 Ruby 2.0 で sqlite3 gem を使う方法について、書いておきます。
ただし、いずれは gem 側で解消されるだろうと思いますし、この方法はあくまで単なるパッチです。

Windows 上での Ruby 2.0 での sqlite3 gem の準備

いくつか方法はありますが、私は RubyInstaller を使わせていただいています。

Ruby や DevKit のダウンロードと展開

Ruby 2.0 のダウンロード
RubyInstaller のダウンロードページから、 Ruby 2.0.0-p*** をダウンロードし、好きなところに展開します。
ここでは、 C:/ruby と仮定します。
DevKit のダウンロード
RubyInstaller のダウンロードページから、 DevKit-mingw64-32-4.7.2-20130224-1151-sfx.exe をダウンロードし、好きなところに展開します。
ここでは、 C:/devkit と仮定します。
パスなどの初期設定
コマンドプロンプトを開き、以下のように ruby.exe へのパスを通しておきます。 また、続けて DevKit にもパスを通しておきます。 C:\devkit に移動し、以下のコマンドを実行します。 続いて、 DevKit の初期設定をしておきます。下記のような config.yml を作成します。 以下のコマンドを実行し、 DevKit の初期設定をします。

sqlite3 のダウンロードと展開

SQLite3 のソースコードをダウンロードページからダウンロードしておきます。
Source Code の欄にある sqlite-amalgamation-***.zip がビルドしやすくて便利です。

これを C:\sqlite3 などに展開し、このディレクトリに移動し、以下のコマンドで libsqlite3.a を作成します。

gem のインストール

以下のコマンドで、 sqlite3 gem をインストールします。