gpt4 book ai didi

ruby-on-rails - rails 和 rake 有什么区别?

转载 作者:行者123 更新时间:2023-12-05 09:34:45 29 4
gpt4 key购买 nike

Ruby 中的命令 rakerails 有什么区别?

哪个更快,为什么?

最佳答案

区别在于调用的是什么二进制文件。

如果您要在 Rails 应用程序根目录中调用 bundle exec which rake,您会得到类似 /home/[USERNAME]/.rbenv/versions/2.5.5 的内容/bin/rakebundle exec which rails,你会得到 /home/[USERNAME]/.rbenv/versions/2.5.5/bin/rails。从那里你可以 cat (cat/home/[USERNAME]/.rbenv/versions/2.5.5/bin/rake) 这两个路径并查看类似的代码为每个运行,但文件的末尾不同。

rails

gem "railties", version
load Gem.bin_path("railties", "rails", version)

rake

gem "rake", version
load Gem.bin_path("rake", "rake", version)

这里他们都在 Gem.bin_path 上调用 load 但使用不同的参数,它们试图加载单独的 gem。您可以通过运行进一步跟踪代码一个 irb/pry/rails 控制台,并设置所需的 require 'rubygems'version = ">= 0.a",然后运行 ​​Gem.bin_path ("railties", "rails", version)Gem.bin_path("rake", "rake", version) 查看 load 是什么实际上试图运行。我承认,在您遇到最终确定传递给 rails 的 rake 任务参数并将其代理到 Rake 并停在那里并推迟的逻辑之前,我承认它会变成一个兔子洞至 this SO answer剩下的。

rails 运行并传递了本应由 rake 运行的参数时,它将首先尝试查找它是否是要提供给的实际参数rails 命令,确定它不是,然后尝试将其作为 rake 命令运行,以简化 Rails 团队在 Rails v4 中添加的整体命名。

那么哪个跑得更快? rake 用于实际的 rake 任务,因为它会绕过需要确定正在传递 rake 参数的额外逻辑。但 rails 特定参数也不能与 rake 一起运行,例如bundle exec rake generate 将不起作用(除非您有一个 generate 任务)。如果有疑问,运行 bundle exec rails --help 至少在 Rails v5 中,它会输出哪些参数是 rails 特定的,哪些是 rake具体。

关于ruby-on-rails - rails 和 rake 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66311919/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com