J'utilise EventMachine et monétairement pour démarrer E TCP Server avec My Rails Application. Ceci est démarré à partir de Mon problème est qu'il commence aussi lorsque je exécuterai des tâches Rake, comme config / initialiseurs / momentanément.rb code>. p>
dB: migrer code>. Je veux seulement qu'il démarre lorsque je démarre le serveur HTTP. Les environnements ne vous aideront pas, car les tâches de départ du serveur et de râteau sont dans un environnement de développement. Existe-t-il une façon de savoir que l'application exécute le serveur HTTP par opposition à quelque chose d'autre? Notez que ce n'est pas seulement des tâches Rake, l'EM commence également si j'exécute la console de rails, qui est à nouveau quelque chose qui n'est pas souhaitable pour mon cas. P>
6 Réponses :
Peut-être que vous pouvez implémenter un commutateur dans l'initialiszer en fonction de quelque chose comme: p> argv code>?
Il faudrait aussi travailler dans la production, lors de la course sous Apache
Ne démarrez pas cet autre serveur d'un initialiseur. Créez un Daemon dans Script / momentanément code> et démarrez-le dans votre application. P >
J'aurais toujours besoin de savoir quand commencer le démon et quand pas
Après que votre application se lance, vous pourriez avoir une sortie de coquille pour vérifier ps code>. Si
PS code> montre que le serveur HTTP est en cours d'exécution et que le serveur HTTP exécuté a le même PID que votre application (cochez le PID en inspectant
$$ code>), puis vous pouvez lancer le Server TCP. P>
Oui, il sera. Lorsque vous exécutez Rails Server PS AUX | Rails Grep Code> contiendra quelque chose comme
Remus 18454 0.0 0,8 2515572 65968 S000 S + 11:10 AM 0: 01.51 /USERSERS/REMUS/.RVM/RUBIES/RUBY-1.9.3-P125/BIN/RUBY Script / Rails Server Code>
unless File.basename($0) == "rake" && ARGV.include?("db:migrate") # you are not in rake db:migrate end
Le plus propre du sale. Merci!
Il n'y a pas de bonne façon de faire cela que je connais. Vous pouvez copier approche NewRelic S (cocher pour le passager, il vérifie p> pour la fin de contrôle p> découverte_dispatcher code> dans
C'est en fait prometteur. Merci!
Cela ne semble pas fonctionner pour moi dans des rails 4 avec passager.
La constante à vérifier semble être :: PhusionPassenger maintenant
@Danherman ressemble à la constante à vérifier modifiée ou c'était une faute de frappe tout au long de
Définir une variable d'environnement dans pour par exemple p> fichier: em> et l'utiliser quelque part comme suit: p> fichier: em> Référence: Réponse P> P> fichier config.ru code> et l'utiliser n'importe où dans le code pour détecter s'il est exécuté à l'aide d'un serveur
Rails code> uniquement.
config.ru code> p>
config / environnement.rb code> p>