【发布时间】:2014-06-03 14:27:28
【问题描述】:
我正在使用http://rails-erd.rubyforge.org/ 生成 ERD - 输出是我项目对象模型的非常好的图表。还有一个 rake 任务来生成 ERD,generate_erd,我希望在运行 rake db:migrate 后自动调用它。我该怎么做?
【问题讨论】:
标签: ruby-on-rails ruby rails-migrations erd diagramming
我正在使用http://rails-erd.rubyforge.org/ 生成 ERD - 输出是我项目对象模型的非常好的图表。还有一个 rake 任务来生成 ERD,generate_erd,我希望在运行 rake db:migrate 后自动调用它。我该怎么做?
【问题讨论】:
标签: ruby-on-rails ruby rails-migrations erd diagramming
@MaxWilliams 提供的链接很有帮助,但我认为这些答案中的任何一个都不能满足您的要求。我找到了this 关于 Rake 任务覆盖的文章。它是从 2008 年开始的,但我试过了,它奏效了。
我创建了另一个 .rake 文件(用于组织),只是碰巧叫我的migrate_and_generate_erb.rake,但你可以随意命名。
里面我只有这个:
namespace :db do
task :migrate do
Rake::Task["erd"].invoke
end
end
基本上,根据文章,如果任务已经定义,Rake 只是不断将代码实现附加到任务中。
现在运行 rake db:migrate 也生成了我的 ERD。
小心:您还需要对db:rollback 执行相同的操作,以便回滚迁移也会更新您的 ERD。
最后一点:考虑也只是给这个(shell 命令)起别名,以防万一您想在不生成 ERD 的情况下运行迁移,或者在新的 Rake 任务中使用环境变量。
【讨论】: