【问题标题】:rails db:migrate vs rake db:migraterails db:migrate vs rake db:migrate
【发布时间】: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


    【解决方案1】:

    Rails 核心团队决定通过启用 rails command 来支持 rake 所做的一切来保持一致性。

    例如,Rails 5 中的 db:migratedb:setupdb: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. 获得一长串选项

    【讨论】:

    • 知道是否有办法在 Rails 4 项目中使用新语法?
    • @GregBlass 您可以将 rails 5 的模块包含在 rails 4 中以使用它。但我不认为你可以使用 rails 5 语法。
    • Rails 6 弃用了 rake 命令;至少其中一些; rake dev:cacherake notesrake routes。它们将在 Rails 6.1 中删除
    猜你喜欢
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 2013-03-02
    相关资源
    最近更新 更多