概要
Rails 7 になって ActiveRecord::Schema
周りが変わって、
モンキーパッチでの method override する場所が変わったためにこのコードが動かなくなった。
対策は、
s = ActiveRecord::Schema
を
s = ActiveRecord::Schema[7.0]
に書き換えれば OK.
pocke さんのやつを書き換えるだけでも動くはずだし、
僕が結構書き換えたGist を使ってもらってもOK.
以下詳細。
Rails 6 までは、先人のコードが動く
Migration を Rails と別管理する必要があって、
schema.rb からモデルを生成したら便利だなーと思っていた所、
https://pocke.hatenablog.com/entry/2016/01/16/155004
にて公開されているコードでスキーマ定義からモデルが生成できました。
Rails 7 にて動かない
ところが残念な事にこのコード Rails 7 で動かなくなりました。
むしろ rails db::schema:load
みたいな挙動になってしまいました。
この理由はソースコードを見て推測しました。
https://github.com/rails/rails/blob/6-1-stable/activerecord/lib/active_record/schema.rb#L13
https://github.com/rails/rails/blob/7-0-stable/activerecord/lib/active_record/schema.rb#L13
二つを比べると、コメントで
ActiveRecord::Schema.define do
...
end
が
ActiveRecord::Schema[7.0].define do
...
end
に変わっていたので、そのせいだと推測し、冒頭に紹介した変更を加えると無事動きました。
なお力不足で、ソースコードから ActiveRecord::Schema[7.0].define
となっている実体は理解できませんでした。