Windows 版 Ruby 2.0.0 で sqlite3 を使えるようにする

Windows 版の Ruby 2.0.0 では普通に gem を使ってインストールした sqlite3 を使うと Rails でエラーが発生するようになりました。
今回はこのエラーを出さない sqlite3 の対処方法について紹介したいと思います。

これは Windows に Redmine をインストールしようとしたとき、ハマった点で、 以下のページにもともと書いていた対処法です。 Redmine 以外にも役に立つかなと思って、別記事としてもう少し詳しく書いています。 対応法に関しては以下のページを参考にさせて頂きました。

エラー内容

普通にインストールすると次のような感じです。
~ $ gem install sqlite3
~ $ gem list sqlite3
sqlite3 (1.3.8 x86-mingw32)
インストールは成功するのですが、このまま使用すると 2.0.0 では次のようなエラーが出ます。
d:/redmine/redmine-2.3.2 $ rake generate_secret_token 
rake aborted!
Could not find sqlite3-1.3.7-x86-mingw32 in any of the sources
d:/redmine/redmine-2.3.2/config/boot.rb:6:in `<top (required)>'
d:/redmine/redmine-2.3.2/config/application.rb:1:in `<top (required)>'
d:/redmine/redmine-2.3.2/Rakefile:5:in `<top (required)>'
(See full trace by running task with --trace)
このため、 エラーのでない別の sqlite3 をインストールする必要があります。

インストール

sqlite3 のアンインストール

sqlite3 をインストールする前に x86-mingw32 版の sqlite3 がインストールされている場合にはアンインストールします。
~ $ gem uninstall sqlite3

SQLite 3

sqlite3.dll をインストールする必要があります。 こちらは通常の方法と同じです。

SQLite のサイトから、圧縮ファイル(sqlite-dll-win32-x86-XXXXXXX.zip)をダウンロードします。 ファイル内の sqlite3.dll を ruby.exe のあるフォルダーか環境変数 PATH で指定されているフォルダーに置きます。


この時、同じページにあるソースファイル(sqlite-amalgamation-XXXXXXX.zip)もダウンロードして、 適当なフォルダーに解凍しておきます。 なお、こちらはインストール後、消しても構いません。
ruby_sqlite3_source.png

DevKit のインストール

DevKit がインストールされていない場合はインストールしておく必要があります。 DevKit のインストールに関しては以下の記事をご覧下さい。

sqlite3 パッケージのインストール

次のコマンドを実行して、 sqlite3 をビルド、インストールします。 これでエラーはでないようになります。
~ $ gem install sqlite3 -v "=1.3.7" --platform=ruby -- --with-sqlite3-include=D:/redmine/sqlite-amalgamation-3071700 --with-sqlite3-lib=d:/Ruby200/bin
unable to convert "\x90" from ASCII-8BIT to UTF-8 for lib/sqlite3/sqlite3_native.so, skipping
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--with-sqlite3-include=D:/redmine/sqlite-amalgamation-3071700 --with-sqlite3-lib=d:/Ruby200/bin'
This could take a while...
Successfully installed sqlite3-1.3.7
Parsing documentation for sqlite3-1.3.7
Installing ri documentation for sqlite3-1.3.7
1 gem installed
指定したオプションについて説明していきます。

-v "=1.3.7" :
インストールするバージョンを指定しています。 Rails の依存関係にもよるのでしょうが、 バージョンを指定していないと最新版の 1.3.8 がインストールされ(2013-08-20 時点) 、 エラーが発生してしまいます。

--platform=ruby :
通常、複数のプラットホームの gem が登録されている場合、環境にあったものが使用されます。 デフォルトだと x86-mingw32 版になるので、明示的に指定しています。


-- :
これ以降はビルドに渡されるオプションとなります。

ビルドのオプションで指定しているパスはそれぞれ次のようなものです。
オプション パス
--with-sqlite3-include 展開したソースファイルのフォルダー D:/redmine/sqlite-amalgamation-3071700
--with-sqlite3-lib sqlite3.dll を置いたフォルダー (ruby.exe のあるフォルダー) d:/Ruby200/bin

ちなみにビルドしているのは、 sqlite3.dll ではなく、 それを ruby から使うための Native 拡張ライブラリー sqlite3_native.so です。ソースファイルも正確には "sqlite3.h" のみ使用しています。
ビルド内容の詳細を見たい場合はインストール時に --verbose も一緒に付けてみてください。


関連記事
Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
114位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
15位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

12月 | 2025年01月 | 02月
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。