Ich habe eine middleware for announcing my application on the local network app using Bonjour, aber es wird auch der Dienst angekündigt, wenn Rails von Rake oder über die Konsole aufgerufen wird.Wie kann festgestellt werden, ob Rails von CLI, Konsole oder als Server läuft?
Ich möchte diese Fälle ausschließen und nur die Bonjour-Middleware verwenden, wenn Rails als Server ausgeführt wird.
Die Middleware-Konfiguration übernimmt ein proc Middle unter bestimmten Bedingungen auszuschließen Verwendung eines proc
:
config.middleware.insert_before ActionDispatch::Static, Rack::SSL, :exclude => proc { |env|
env['HTTPS'] != 'on'
}
Aber wie kann ich feststellen, ob Rails von der CLI-Konsole oder als Server aufgerufen wurde?
Dank! Verwenden Sie dies in application.rb innerhalb eines "config.after_initialize do" -Blocks, und es funktioniert perfekt! –
Interessanterweise funktioniert das nur, wenn die Befehle "rails s" oder "rails c" aufgerufen werden. Wenn Sie einen Server über einen anderen Befehl ausführen (z. B. "unicorn_rails"), werden diese Konstanten nie definiert. Rails :: Server sieht so aus, als sei es als Teil des Befehls-Parsing-Prozesses definiert, obwohl es von :: Rack :: Server erbt. –
Das funktioniert bei mir nicht mit Rails 4 auch mit Rails c. Ich erhalte Server und Konsole in der Konsole definiert. –