복붙노트

[RUBY-ON-RAILS] 어떻게이 인스턴스를 레일 로컬 포트가 실행되고 찾는 방법은?

RUBY-ON-RAILS

어떻게이 인스턴스를 레일 로컬 포트가 실행되고 찾는 방법은?

나는에 자신을 등록하는 내 레일 응용 프로그램 인스턴스를 싶습니다 그래서 내가 함께 연주 해요 종류의 일의 "I가 있어요", 나는이 실행 무슨 로컬 포트 ​​말할 수 있도록하고 싶습니다. 실제로 단지의 IP가 까다 롭습니다 및 해킹의 비트를 필요로 알아내는 - 나는 그것을 수행하는 방법을 찾을 수 없습니다.

그러나 문제, 나는 IP는 없다 -하지만 어떻게 내 잡종 / 얇은 /의에 WEBrick 서버에서 실행되는 어떤 포트에서 찾을 수 있습니까?

나는 레일 내가 응용 프로그램 내에서 3001 것을 끌어 위해 할 수있는 일, 3001 -p 스크립트 / 서버를 사용하여 앱 관련 시작하면, 슈퍼 명시합니다.

해결법

  1. ==============================

    1.레일스 서버가 실행되고있는 포트를 얻을 : [포트] 당신은 레일 :: Server.new.options를 호출 할 수 있습니다. 이것은 당신의 레일 서버 명령의 -p (3001) 인수를 구문 분석, 또는 포트 3000로 설정됩니다.

    레일스 서버가 실행되고있는 포트를 얻을 : [포트] 당신은 레일 :: Server.new.options를 호출 할 수 있습니다. 이것은 당신의 레일 서버 명령의 -p (3001) 인수를 구문 분석, 또는 포트 3000로 설정됩니다.

  2. ==============================

    2.어떤 컨트롤러 액션 내부에서, 따라서 request.port의 내용을 확인 :

    어떤 컨트롤러 액션 내부에서, 따라서 request.port의 내용을 확인 :

    class SomeController < ApplicationController
      def some_action
        raise "I'm running on port #{request.port}."
      end
    end
    
  3. ==============================

    3.두 가지 방법.

    두 가지 방법.

    당신이 컨트롤러 나 뷰의 요청에 응답하는 경우, 요청 개체를 사용 :

    request.port
    

    당신은 initialiser에있어 및 서버 옵션 해시를 사용하는 요청 개체에 액세스 할 수없는 경우 :

    Rails::Server.new.options[:Port]
    
  4. ==============================

    4.나는이 비트와 함께 주변 연주, 이것은 레일 5.1을위한 최상의 솔루션이 될 수 있습니다

    나는이 비트와 함께 주변 연주, 이것은 레일 5.1을위한 최상의 솔루션이 될 수 있습니다

    Rails::Server::Options.new.parse!(ARGV)[:Port]
    
  5. ==============================

    5.레일 5.1 개발 서버하십시오.

    레일 5.1 개발 서버하십시오.

    if Rack::Server.new.options[:Port] != 9292 # rals s -p PORT
      local_port = Rack::Server.new.options[:Port]
    else
      local_port = (ENV['PORT'] || '3000').to_i # ENV['PORT'] for foreman
    end
    
  6. ==============================

    6.(! 내 베이컨을 저장 한) 다른 답변에 구축, 나는 제정신 폴백을 줄이를 확장 :

    (! 내 베이컨을 저장 한) 다른 답변에 구축, 나는 제정신 폴백을 줄이를 확장 :

    개발의 경우 :

    port = Rails::Server::Options.new.parse!(ARGV)[:Port] || 3000 rescue 3000
    

    다른 모든 ENV 년대 :

    port = Rails::Server::Options.new.parse!(ARGV)[:Port] || 80 rescue 80
    

    구조 (80) 커버를 당신이 레일 콘솔을 실행하는 경우. 그렇지 않으면 나가서 설명하자면 NameError가 발생합니다 : 초기화되지 않은 상수는 레일 :: 서버. (어쩌면 조기 이니셜? 내가 잊지 ...)

    || 80 커버를 더 -p 옵션이 서버에 지정되지 않은 경우. 그렇지 않으면 nil을 얻을.

  7. from https://stackoverflow.com/questions/1554267/how-to-find-the-local-port-a-rails-instance-is-running-on by cc-by-sa and MIT license