MySQLで文字化け

Webアプリケーションとして実行する場合は config/environment.rb に

ActiveRecord::Base.connection.execute("set names utf8")

と書けばいいのだけど、rake db_structure_dump とかだと解決しない。

仕方がないのでクエリを投げる前に強制的にutf8に変更。

module ActiveRecord
  module ConnectionAdapters
    class MysqlAdapter < AbstractAdapter
      alias_method :structure_dump_no_names, :structure_dump

      def structure_dump #:nodoc:
        execute('SET names utf8')
        structure_dump_no_names
      end
    end
  end
end

こんなのを書いて、pluginsの中にぶち込んだらOKでした。