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が正しくコピーできていない?

まぁ適当なので気にしない。