Windows 版 Ruby 2.0.0 で sqlite3 を使えるようにする
Windows 版の Ruby 2.0.0 では普通に gem を使ってインストールした sqlite3
を使うと Rails でエラーが発生するようになりました。
今回はこのエラーを出さない sqlite3 の対処方法について紹介したいと思います。
エラー内容
普通にインストールすると次のような感じです。~ $ 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)もダウンロードして、 適当なフォルダーに解凍しておきます。 なお、こちらはインストール後、消しても構いません。
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 も一緒に付けてみてください。
- 関連記事
-
- Windows にいろんな Ruby をインストール(MatzRuby, IronRuby, JRuby, Topaz, mruby)
- DevKit のインストール
- Windows 版 Ruby 2.0.0 で sqlite3 を使えるようにする
- Lisp から Ruby への設計ステップ
- Ruby での Math.min, max 的な処理の書き方
Facebook コメント
コメント