我是铁杆新手。我注意到在rails 5中生成数据迁移时,有些人使用rails db:migrate
而不是rake db:migrate
。有人可以解释数据库迁移中rails vs rake命令之间的区别吗?这是否意味着rake命令在rails 5中已经过时了?
答案 0 :(得分:129)
Rails核心团队决定通过启用rails命令来支持rake所做的一切。
例如在Rails 5命令中,如db:migrate,setup,test等,它们是Rails 4中rake命令的一部分,现在由rails命令支持。但是你仍然可以选择使用rake来运行那些类似于在Rails 4中运行它们的命令。这是因为Rails社区引入了Rake Proxy而不是将命令选项从rake完全移动到rails。
内部发生的是当执行rails db:migrate命令时,Rails会检查db:migrate是否是rails本身支持的内容。在这种情况下,rails本身不支持db:migrate,因此Rails通过Rake Proxy将执行委托给Rake。
如果你想在Rails 5中看到rails支持的所有命令,那么你可以通过执行rails --help获得一长串选项。