gpt4 book ai didi

ruby - 为什么 Rails 会在启动时执行自身?

转载 作者:太空宇宙 更新时间:2023-11-03 16:08:52 24 4
gpt4 key购买 nike

我正在查看 Rails 3 的代码。在启动过程中加载的 rails/cli.rb 中,它调用了 Rails::ScriptRailsLoader.exec_script_rails ! 通过调用 exec 再次重新加载应用程序来替换当前的 ruby​​ 进程:

exec RUBY, SCRIPT_RAILS, *ARGV if in_rails_application?

我不太熟悉 Rails 代码库,所以我的问题是这样做的理由是什么?为什么 Rails 不继续以相同的原始进程启动?我确定有一个很好的理由,我只是不知道。

最佳答案

我认为这个想法是将“rails”作为命令行可执行文件以两种方式使用:

  • 初始化应用程序(在 Rails 应用程序之外)
  • 为应用程序做事(例如启动服务器——在 Rails 应用程序目录中)

例如,在 Rails 应用程序之外:

$ rails -h
Usage:
rails new APP_PATH [options]
...

在 Rails 应用程序中:

$ rails -h
Usage: rails COMMAND [ARGS]
...

它看起来像 exec_script_rails! 用于选择 rails 命令呈现给用户的界面。这comment看看ScriptRailsLoader建议该方法仅在用户位于 Rails 应用程序内时调用 exec - 特别是存在“script/rails”的目录。在这种情况下,exec 将原始进程替换为“script/rails”以使其等效:

$ rails ...
$ ruby script/rails ...

否则脚本将继续执行相同的进程。因此,基本原理是它让“rails”命令以特定于上下文的方式运行,从而保留“script/rails”所做的一切。

关于ruby - 为什么 Rails 会在启动时执行自身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8013819/

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