Hanami v2.0を試そうとしているのだけれど、まだHanami v2系にはHanami Modelがリリースされておらず、rom-rbを直接使うことが推奨されている状態なので、rom-rbを使ってDBのマイグレーションを行っていたのですが、これロールバックはどうするんだろうか?と思って調べていました。しかし、ロールバックについての情報は見つからない…。
rom-rbでDBを使うためのgem rom-sqlでは、sequelを使っているので、sequelのほうの情報を見てみました。
sequel/migration.rdoc at master · jeremyevans/sequel · GitHub
running migrationのところを確認すると、-M
でロールバックになると書いてあったので、ロールバックの仕組みはある…。
今一度、rom-sqlのほうのコードを確認してみようと思い立ち、rake taskのコードを確認したところ、rake db:migrate[version]
でいけることが分かりました。
rom-sql/migration_tasks.rake at 596fea491ace84ae1aea12599879f84cb0ce5b64 · rom-rb/rom-sql · GitHub
こんな感じ。指定したバージョンまで戻るので、明示的にrollbackと書くことがないので、ググってもなかなかヒットしないわけですね。
bundle exec rake db:migrate[20230405151448] # zshの場合 bundle exec rake db:migrate\[20230405151448\]
というかdescに書いてあるやん…。
$ bundle exec rake -T rake db:clean # Perform migration down (removes all tables) rake db:create_migration[name,version] # Create a migration (parameters: NAME, VERSION) rake db:migrate[version] # Migrate the database (options [version_number])] rake db:reset # Perform migration reset (full erase and migration up) rake environment # Load the app environment rake spec # Run RSpec code examples
Hanami v2.1で登場するHanami Modelの場合はこの辺りをサポートしてもらえると嬉しい。