【发布时间】:2016-11-19 02:27:06
【问题描述】:
我是 Rails 新手。我注意到在 Rails 5 中生成数据迁移时,有些人使用 rails db:migrate 而不是 rake db:migrate。有人可以解释数据库迁移中 rails 与 rake 命令之间的区别吗?这是否意味着 rake 命令在 Rails 5 中已过时?
非常感谢
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-5 rake
我是 Rails 新手。我注意到在 Rails 5 中生成数据迁移时,有些人使用 rails db:migrate 而不是 rake db:migrate。有人可以解释数据库迁移中 rails 与 rake 命令之间的区别吗?这是否意味着 rake 命令在 Rails 5 中已过时?
非常感谢
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-5 rake
Rails 核心团队决定通过启用 rails command 来支持 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 支持的所有命令,则可以通过执行rails --help. 获得一长串选项
【讨论】:
rake dev:cache、rake notes 和 rake routes。它们将在 Rails 6.1 中删除