我有一个middleware for announcing my application on the local network app using Bonjour,但它也宣布从Rake或通过控制台调用Rails时的服务。如何确定Rails是从CLI,控制台还是作为服务器运行?
我想排除这些情况,只有在Rails作为服务器运行时才使用Bonjour中间件。
中间件配置接受一个进程使用排除在特定条件下的中间件一个proc
:
config.middleware.insert_before ActionDispatch::Static, Rack::SSL, :exclude => proc { |env|
env['HTTPS'] != 'on'
}
但我怎么确定的Rails从CLI,控制台或服务器调用?
谢谢!在“config.after_initialize do”块内的application.rb中使用它,它完美的工作! –
有趣的是,这只有在命令“rails s”或“rails c”被调用时才有效。如果您通过其他命令(例如“unicorn_rails”)运行服务器,则这些常量永远不会被定义。 Rails :: Server看起来像它被定义为命令解析过程的一部分,尽管它继承自:: Rack :: Server。 –
即使使用导轨c,这对于Rails 4也不适用。我正在控制台中定义服务器和控制台。 –