rails db:migrate 与 rake db:migrate

100
我注意到在Rails 5中生成数据迁移时,有些人使用rails db:migrate而不是rake db:migrate。有人能解释一下在数据库迁移中railsrake命令的区别吗?这是否意味着在Rails 5中rake命令已经过时了?
1个回答

189
Rails核心团队决定通过使rails命令支持rake的所有功能来保持一致性。例如,在Rails 5中,像db:migrate、db:setup、db:test等命令,在Rails 4中是rake命令的一部分,现在也由rails命令支持。但是,您仍然可以选择使用rake来运行这些命令,就像在Rails 4中运行它们一样。这是因为Rails社区引入了Rake Proxy,而不是完全将命令选项从Rake移动到Rails。
内部发生的事情是,当执行rails db:migrate命令时,Rails会检查db:migrate是否是Rails本地支持的内容。在这种情况下,db:migrate不是Rails本地支持的,因此Rails通过Rake Proxy委派执行权给Rake。
如果您想查看Rails 5中支持的所有命令,则可以通过执行rails --help获取长列表选项。

是否有办法在Rails 4项目中使用新语法? - Greg Blass
@GregBlass 您可以将Rails 5模块包含到Rails 4中以使用它,但我不认为您可以使用Rails 5语法。 - Vishal
6
Rails 6已经弃用了一些rake-commands命令,包括 rake dev:cacherake notesrake routes。这些命令将在Rails 6.1中被移除。 - Frederik Spang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接