首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails/MySQL中development_structure.sql中的AUTO_INCREMENT值不同步会产生差异噪声

Rails/MySQL中development_structure.sql中的AUTO_INCREMENT值不同步会产生差异噪声
EN

Stack Overflow用户
提问于 2010-02-06 05:53:15
回答 3查看 1.8K关注 0票数 17

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

自然地,当我们并行开发时,我们在development_structure.sql中的AUTO_INCREMENT值变得不同步。我们知道,在我们的数据库中为AUTO_INCREMENT设置不同的值不是一个技术问题。然而,当我们在签入前使用diff时,它会产生大量的diff噪声。不止一次,我们破坏了我们的构建,因为我们中的一个人错过了被所有噪音掩盖的development_structure.sql中的一个重要更改。

关于如何消除这种diff噪声,以便我们的眼睛可以专注于重要的变化,有什么建议吗?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-20 10:19:19

接受答案的一种变体是在lib/tasks的.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

这样做的好处是使行为的改变看起来更有目的(如http://edgar.tumblr.com/post/52300664342/how-to-extend-an-existing-rake-task所建议的),特别是。如果放入一个描述性命名的文件中(例如'skip_auto_increment.rake')。

票数 10
EN

Stack Overflow用户

发布于 2012-08-14 19:53:30

@Ian,非常感谢你的提示。但在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

票数 12
EN

Stack Overflow用户

发布于 2010-09-16 00:30:29

Razoo,我们最终覆盖了db:migrate

task :migrate do
  Rake::Task['db:migrate'].invoke
  Rake::Task['db:structure:dump'].invoke
end

然后是db:structure:dump

namespace :structure do
  desc "Dump the database structure to a SQL file"
    task :dump do
      Rake::Task['db:structure:dump'].invoke
      # open up the development_structure.sql file and gsub AUTO_INCREMENT=\d* with AUTO_INCREMENT
    end
  end
end
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2210719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档