2010-11-28 32 views
2

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

+1

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

+0

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

+0

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) –

Répondre

2

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'].

3

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.

+2

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