« 2009年6月 | トップページ | 2009年12月 »

2009年9月

2009年9月13日 (日)

rake db:migrate_pluginsの取り消し方

Redmineプラグイン用のモデル(DBテーブル)を追加した際に
間違いなどで追加を取り消したい場合がある。

以前にも何度も間違い修正をやったことがあったが、
久々にやったら、やりかたを忘れていたのでメモっておきます。

● プラグイン用DBテーブルの作り方
プラグイン:work_time用にテーブル:wt_holidaysを作る場合
カラムは日付、作った時間、作った人の3つ

> cd $RAILS_ROOT
> ruby script/generate redmine_plugin_model work_time wt_holidays holiday:date created_on:datetime created_by:integer
> rake db:migrate_plugins RAILS_ENV=production

これで $RAILS_ROOT/db/migrate/ に新しいファイルが出来る。

> rake redmine:plugins:migrage RAILS_ENV=production

こうするとモデルの定義(プログラム)ファイルとともに、
DBにテーブルが作成される。

で、これが間違っていた場合、プラグインでなければ

> rake db:rollback
などで、テーブルのドロップとかして戻してくれるのだが
プラグインにはそんなお便利機能は用意されていないらしい。

これを戻す手段がちゃんとあります。

$RAILS_ROOT/db/migrate/ に出来たファイルの一つ前のファイルのファイル名先頭の【数字】を確認します。

> rake redmine:plugins:migrate RAILS_ENV=production NAME=【プラグイン名】VERSION=【数字】

で、そのバージョンまでDBの状態を戻す事が出来ます。

DBの状態を戻したら、generatortで生成されたファイルを消して元通り(?)です。

ので、手動で戻す必要があります。
下記で戻すことができるみたいです。

1)作られたファイルを自分で消す
app/models/wt_holidays.rb
db/migrate/007_create_wt_holidays.rb
test/fixtures/wt_holidays.yml
test/unit/wt_holidays_test.rb
が出来ていたので消す。

2)作られたDBテーブルを自分で消す
sql> drop table wt_holidays;

3)rake db:migrate_pluginsの記憶を消す
plugin_schema_infoというテーブルにプラグインのmigrateの記憶があるらしい。
ので、記憶を一つ戻しておく。
sql> update plugin_schema_info set version=6 where plugin_name='redmine_work_time';

これで元に戻ったはず。です。

| | コメント (0) | トラックバック (0)
|

« 2009年6月 | トップページ | 2009年12月 »