RadRailsでSQLiteが使えない
基本的にはMySQLを使っているのですが、iPod touch上でSQLite3SQLite2.8.17*1が動いているのでちょっと環境を揃えている最中です。
SQLiteはdll入れるだけでいいので超お手軽・・・・・・なのですが、Rails開発で使っているRadRailsがMySQLを前提として設計されているようでなかなかうまく使えません。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という文字があったので多分関係していると思うのですが、俺が見つけたWindows用JDBCドライバーはJRE1.4対象でした。eclipse使っているくせにJavaの環境は揃えていないのでソースからコンパイルなんぞできません・・・・・・。日本語化にPleiadesを使っているのでJRE1.5は最低でも必須なのです。1.5ではコンパイルして使っている人がいるから、そっちで試してみるのもありかなぁ。
今後
SQLite3使って開発する場合はcmd + vim + SQLite GUIツール使った方が悩まなくていいかもしれない。データベース用パースペクティブが使えないのはそんなに問題はないけど、Rakeタスクが使えないってのはちょっと問題です。
*1:SQLite3はErica's Ported Utilitiesに入っているようです。