Posted at

Rails で schema_format を :sql にしたときに AUTO_INCREMENT を含まないようにする

More than 5 years have passed since last update.

lib/tasks/dump.rake

namespace :db do

namespace :structure do
task :dump do
path = Rails.root.join('db', 'structure.sql')
cont = File.open(path).read.gsub(/ AUTO_INCREMENT=\d*/, '')
File.open(path, 'wb') {|f| f.puts cont }
end
end
end

正規表現で消してるだけです。

これで出来上がった structure.sql は rake db:reset とか rake db:schema:load とかで使われますが、特に大きな理由が無い限り rake db:migrate 使う方がいいとは思っています。

(migration を全て実行することと schema.rb や structure.sql をロードすることはイコールではないので)