Existe-t-il un moyen de dire à quel port une application Rails (ou une application Rack générique) s'exécute sur dans un initialiseur? Je souhaiterais pouvoir charger une configuration différente basée sur le port ou le nom d'hôte, afin de me connecter à une application FaceBook spécifique à l'hôte. J'utilise Rails 2.3.5.Comment savoir quel port Rails est en cours d'exécution dans un initialiseur
Répondre
Basé sur le manque de réponses ici et ce fil sur rubyforum: http://www.ruby-forum.com/topic/196017#new, je pense que il n'y a probablement pas une façon standard de dire au port.
Ce n'est pas très propre, mais cela est une façon que vous pouvez obtenir le port que vous avez déclaré lors de l'appel:
rails server -p portnumber
où vous voulez dans votre application (pour rails 3).
Voici mes scripts/fichier rails.rb:
#!/usr/bin/env ruby
# This command will automatically be run when you run "rails"
# with Rails 3 gems installed from the root of your application.
ENV['PORT']=ARGV[3]
APP_PATH = File.expand_path('../../config/application', __FILE__)
require File.expand_path('../../config/boot', __FILE__)
require 'rails/commands'
Ensuite, chaque fois que vous voulez obtenir le numéro de port de votre serveur, tout ce que vous devez faire est d'appeler ENV['PORT']
.
Vous pouvez appeler Rails::Server.new.options[:Port]
pour obtenir le port sur lequel votre serveur Rails s'exécute. Cela analysera l'argument -p
depuis votre commande rails server
, ou par défaut sur le port 3000
.
Je ne reçois pas la constante 'Rails :: Server' non initialisée lorsque j'essaye de le faire dans mon application Rails 3.2. – Andrew
Si vous ne trouvez pas de solutions, vous devriez essayer cela http://stackoverflow.com/questions/1554267/how-to-find-the-local-port-a-rails-instance-is-running- le/1554523 # 1554523. – vise
Yup, obtenir le port de la demande est assez simple, mais dans l'initialiseur je n'ai pas de demandes. Je cherche quelque chose de similaire à ce qui est mentionné dans la question liée: Sinatra :: Application.port, mais pour Rails, pas Sinatra. – zoli
Plus question générale qui ne nécessite pas d'initialiseur: http://stackoverflow.com/questions/1554267/how-to-find-the-local-port-a-rails-instance-is-running-on (et en tant que tel a réponses pour les contrôleurs et les initialiseurs) –