RadRailsでSQLiteが使えない

基本的にはMySQLを使っているのですが、iPod touch上でSQLite3SQLite2.8.17*1が動いているのでちょっと環境を揃えている最中です。
SQLiteはdll入れるだけでいいので超お手軽・・・・・・なのですが、Rails開発で使っているRadRailsMySQLを前提として設計されているようでなかなかうまく使えません。Rakeタスクも使えなくなるのでコマンドラインを起動させておかないといけないってのはちょっとがっかりです(´・ω・`)

 ----------キリトリセン----------
11/29追記
ノーマルな状態だとSQLite2.8.17が入っていました。以下はそのままSQLite3の導入手順になりますが、SQLite2も大筋は同じです。
 ----------キリトリセン----------

とりあえず現状。俺の環境はWindowsXP + eclipse 3.3.0 + JRE1.6.0 update3 + Aptana RadRails 0.9.1です。

sqlite3-rubyをインストール

gemからsqlite3-rubyをインストール出来る。現時点での最新版は1.2.1。もし何らかの原因でgemのリモートインストールが使えない場合はRubyForgeのsqlite-rubyプロジェクトからsqlite3-ruby-*.*.*-mswin32.gemをダウンロードして--localオプション付けてインストール。

gem install sqlite3-ruby

※sqlite2使っている人はsqlite-rubyをインストールする。

Select which gem to install for your platform (i386-mswin32)
1. sqlite3-ruby 1.2.1 (mswin32)
2. sqlite3-ruby 1.2.1 (ruby)
3. sqlite3-ruby 1.2.0 (mswin32)
4. sqlite3-ruby 1.2.0 (ruby)
5. Skip this gem
6. Cancel installation

実行すると選択画面が出るので、mswin32を選択する。この例だと1を入力してEnter押せばいい。

-d(--database)オプションを付けてプロジェクトを作成

RadRailsではオプション付けてのプロジェクト作成ができないのでコマンドラインから作成。あとからワークスペースにインポートするなり何なりする必要がある。

rails -d sqlite3

これでconfig/database.ymlがSQLite3用で書き出されます。
ちなみに書き出されるdatabase.ymlは以下。

development:
adapter: sqlite3
database: db/development.sqlite3
timeout: 5000


test:
adapter: sqlite3
database: db/test.sqlite3
timeout: 5000


production:
adapter: sqlite3
database: db/production.sqlite3
timeout: 5000

問題

■Rakeタスクが使えない

db:migrateを実行しようとしてもうんともすんとも言わなくなりました。別プロジェクトでMySQL使っていると実行できたのできっとSQLite3のせいっぽい。コマンドラインからは普通に実行できたのでそっちでやる必要がありそう。

■データベース用パースペクティブが使えない

データベースを読めるパースペクティブ(データ・ナビゲータービューとクエリービュー)がRadRailsには用意されているのですが、とりあえずデータ・ナビゲータービューを使ったところエラーを吐きやがります。エラー内容にJDBCという文字があったので多分関係していると思うのですが、俺が見つけたWindowsJDBCドライバーはJRE1.4対象でした。eclipse使っているくせにJavaの環境は揃えていないのでソースからコンパイルなんぞできません・・・・・・。日本語化にPleiadesを使っているのでJRE1.5は最低でも必須なのです。1.5ではコンパイルして使っている人がいるから、そっちで試してみるのもありかなぁ。

今後

SQLite3使って開発する場合はcmd + vim + SQLite GUIツール使った方が悩まなくていいかもしれない。データベース用パースペクティブが使えないのはそんなに問題はないけど、Rakeタスクが使えないってのはちょっと問題です。

*1:SQLite3はErica's Ported Utilitiesに入っているようです。