いままでnasutaはsqlite3 を使っていましたので同じ組み込みモードで使えると何かとうれしいので。ということでsqlite3にあったスキーマをDerby(組み込みモード)へ移行してみました。
derby.jarをコピー
組み込みモードで使う場合はderbyのJDBCドライバではなくDerbyDBそのものが必要になります。(当たり前ですが)よって、jrubyのインストールディレクトリにある lib/ ディレクトリにderby.jarをコピーします。
config/database.yml
development:
adapter: jdbc
driver: org.apache.derby.jdbc.EmbeddedDriver
url: jdbc:derby:db/derby_dev;create=true
urlで 相対パスでderbyのデーターベースを記述していますが、この後rakeでスキーマを移動するときにアプリのホームにあるdb/ディレクトリにDerbyのデータベース derby_dev が作成されます。rake db:schema:load
sqlite3に構築していたDBをderbyに移行させます。migrationをつかってスキーマを定義していたので移行は簡単にできます。
% rake db:schema:load
derbyにはデータベース定義がないので rake db:migrate でも理論上は移行できるはずなのですが、alter によるテーブル変更でエラーになりました。
従って、 rake db:schema:load をつかってdb/schema.rb を流し込む方が確実です。
これでデータベースを移行できました。調子に乗ってnasutaをJruby on Railsで稼働させようと script/serverを実行しましたがSQLエラーやなんやかんやでちゃんと動きまへん。
なんやかんやは次回。