Rails/mysql中的开发_structure.sql中的不同步自动增量值会产生diff噪声。

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我们的团队正在MySQL上开发一个Rails应用程序,并使用config.active_record.schema_format = :sql

自然,我们的AUTO_INCREMENTdevelopment_structure.sql当我们并行发展的时候,就会失去同步。我们知道数据库中有不同的值AUTO_INCREMENT不是技术问题。然而,它创造了很多diff当我们diff在入住之前。不止一次,我们破坏了我们的构建,因为我们中的一个人错过了一个重要的改变。development_structure.sql所有的噪音都掩盖了这一点。

关于如何消除这一问题的任何建议diff这样我们的就能专注于重要的变化了吗?

谢谢

提问于
用户回答回答于

在lib/Task中的.rake文件中包含以下内容:

Rake::Task["db:structure:dump"].enhance do
  path = Rails.root.join('db', 'structure.sql')
  File.write path, File.read(path).gsub(/ AUTO_INCREMENT=\d*/, '')
end

这样做的好处是使行为的改变看起来更有目的性.

用户回答回答于

在Rails 3.2上,它要简单得多。不需要调用任务,因为它会导致堆栈级别太深的错误,也不需要重写任务描述。所以我的代码是这样的:

namespace :db do
  namespace :structure do
    task :dump do
      path = Rails.root.join('db', 'structure.sql')
      File.write path, File.read(path).gsub(/ AUTO_INCREMENT=\d*/, '')
    end
  end
end

都适用于db:migratedb:structure:dump.

扫码关注云+社区