2010-11-28 16 views
2

イニシャライザで にRailsアプリケーション(または一般的なRackアプリケーション)が実行されているポートを特定する方法はありますか?イニシャライザでRailsが実行されているポートを確認する方法

ホスト固有のFaceBookアプリケーションに接続するために、ポートまたはホスト名に基づいて別の設定をロードしたいと考えています。

私はRails 2.3.5を使用しています。

+1

解決方法が見つからない場合は、これを試してください。http://stackoverflow.com/questions/1554267/how-to-find-the-local-port-a-rails-instance-is-running- on/1554523#1554523 – vise

+0

うん、リクエストからポートを取得するのはかなり簡単ですが、イニシャライザではリクエストがありません。私はSinatra :: Application.portにリンクされている質問と同様のものを探していますが、SinatraではなくRailsのために探しています。 – zoli

+0

イニシャライザを必要としない一般的な質問:http://stackoverflow.com/questions/1554267/how-to-find-the-local-port-a-rails-instance-is-running-onコントローラとイニシャライザの両方の答え) –

答えて

2

これはない非常にきれいですが、これはあなたが呼び出すときに宣言したポートを得ることができる方法です:
あなたは(レール3用)、アプリケーション内の好きな場所 rails server -p portnumber
。ここで

は私のスクリプト/ 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' 

次に、あなたがする必要があるのは、コールENV['PORT']です。

3

Rails::Server.new.options[:Port]に電話すると、Railsサーバーが実行されているポートを取得できます。これにより、rails serverコマンドの-p argが解析されます。デフォルトのポートは3000です。

+2

Rails 3.2アプリでこれをやろうとすると、 'Rails :: Server'という定数が初期化されていません。 – Andrew

関連する問題