RailsでSqliteからMysqlにデータを移行する方法の続き
RailsでSqliteからMysqlにデータを移行する方法 - Life on Railsの続き。
上記のエントリ中のコードでは移行するコードをそれぞれ手書きで記述していたが、それを自動化する。
module Dev end classes = [] Dir.foreach("app/models") do |file| class_name = if tmp = file.scan(/([a-z]+)\.rb/) if tmp = tmp.first if tmp = tmp.first tmp.capitalize end end end next if class_name.nil? classes << class_name end classes.uniq.each do |class_name| Dev.class_eval <<-EOV class #{class_name} < #{class_name} self.abstract_class = true establish_connection(:sqlite) end EOV end
このコードでは、まだ不十分。
- foo_bar → FooBarへの変換には対応していない
- 移動したデータでhoge_idなどの参照が壊れることがある
- idが正しくコピーできていない?
まぁ適当なので気にしない。