gpt4 book ai didi

ruby-on-rails - 如何确定 Rails 是从 CLI、控制台还是作为服务器运行?

转载 作者:行者123 更新时间:2023-12-03 09:15:59 24 4
gpt4 key购买 nike

我有一个 middleware for announcing my application on the local network app using Bonjour ,但它也会在从 rake 或通过控制台调用 Rails 时宣布该服务。

我想排除这些情况,只在 Rails 作为服务器运行时使用 Bonjour 中间件。

中间件配置接受 proc 在某些条件下使用 proc 排除中间件:

config.middleware.insert_before ActionDispatch::Static, Rack::SSL, :exclude => proc { |env| 
env['HTTPS'] != 'on'
}

但是如何确定 Rails 是从 CLI、控制台还是作为服务器调用的呢?

最佳答案

每个命令的环境摘要。

我发现现有的答案要么不完整,要么多余,要么不详尽。所以这里是每个命令的表格格式以及生成的环境是什么样的。

rails 4.2

| Command                            |  Rails.const_defined?( "Console" )  |  Rails.const_defined?( "Server" )  |               ARGV              |
|------------------------------------|-------------------------------------|------------------------------------|---------------------------------|
| `rake db:migrate:status` | false | true | ["db:migrate:status"] |
| `rails console` | true | true | [] |
| `rails server` | false | true | [] |
| `rails g migration new_migration` | false | true | ["migration", "new_migration"] |
| `rails r "puts 'Hi'"` | false | true | [] |

您可以看到仅检查“服务器”被定义为 Rails常量不会捕获生成器,例如 rails g migration .您需要查看 ARGV要做到这一点。

我希望这有帮助。我只能立即访问 Rails 4.2,但可以随意添加其他 Rails 版本的部分,以及添加任何需要“捕获”的附加命令。

关于ruby-on-rails - 如何确定 Rails 是从 CLI、控制台还是作为服务器运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13506690/

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