我使用http://rails-erd.rubyforge.org/生成ERD - 输出是我项目对象模型的一个非常好的图表。还有一个rake任务来生成ERD generate_erd
,我想在运行rake db:migrate
后自动调用它。我该怎么做?
答案 0 :(得分:1)
@MaxWilliams给出的链接是有帮助的,但我不认为这些答案中的任何一个都能达到你想要的效果。我找到了关于Rake Task Overwriting的this文章。它是从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任务。