복붙노트

[RUBY-ON-RAILS] 어떻게 레일 4.2 개발 서버의 IP를 기본 바인딩을 변경하려면?

RUBY-ON-RAILS

어떻게 레일 4.2 개발 서버의 IP를 기본 바인딩을 변경하려면?

릴리스 노트는 언급 한 바와 같이 4.2로 우리 팀의 레일 응용 프로그램을 업그레이드 한 후, 기본 IP는 0.0.0.0에서 로컬 호스트로 변경에 서버 바인딩 레일.

우리는 방랑으로 개발하고, 개발 서버 호스트 시스템에서 브라우저에서 직접 액세스 할 수 있도록합니다.

우리는 여전히 서버를 시작 레일의로 간단하게 STH를 사용할 수 있도록하는 것이, 더 우아한 해결책이 있는지 입력하는 대신 레일의 -b 0.0.0.0마다 지금부터의, 궁금하다. 혹시:

이 뒤에 진짜 목표는 내가 업그레이드로 인해 누락 된 -b 0.0.0.0 부분에 사람들이 끊임없이 레일 서버를 다시 시작해야합니다 그 결함을 피하고, 우리 팀들 사이에서 원활하게 할 할 것입니다.

3000 호스트 시스템에 : 나는 localhost를 방문 할 때 나는 방랑 포트 포워딩을 시도했지만 여전히 연결이 거부 얻을. 내가 시도한 두 가지 구성 라인했다 :

config.vm.network "forwarded_port", guest: 3000, host: 3000
config.vm.network "forwarded_port", guest: 3000, guest_ip: '127.0.0.1', host: 3000

공식 문서에서 모든 관련 지침을 찾지 못했습니다. 어떤 도움을 이해할 수있을 것이다.

해결법

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

    1.나는 여기에 같은 문제에 봉착하고 오늘은 더 나은 솔루션을 발견했다. 그냥 설정 / boot.rb이 코드를 추가하며 방랑와 함께 작동합니다.

    나는 여기에 같은 문제에 봉착하고 오늘은 더 나은 솔루션을 발견했다. 그냥 설정 / boot.rb이 코드를 추가하며 방랑와 함께 작동합니다.

    require 'rails/commands/server'
    module Rails
      class Server
        def default_options
          super.merge(Host:  '0.0.0.0', Port: 3000)
        end
      end
    end
    

    PS : 기반으로 :이 답변

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

    2.당신은 사용자 정의 명령과 함께 Procfile을 실행하는 주임을 사용할 수 있습니다 :

    당신은 사용자 정의 명령과 함께 Procfile을 실행하는 주임을 사용할 수 있습니다 :

    # Procfile in Rails application root
    web:     bundle exec rails s -b 0.0.0.0
    

    이제 레일 응용 프로그램을 시작합니다 :

    foreman start
    

    감독에 대한 좋은 점은 당신이 (sidekiq 같은 mailcatcher)를 Procfile 다른 응용 프로그램을 추가 할 수 있다는 것입니다.

    감독에 대한 나쁜 것은 당신이 대신 레일의의 시작 포먼 실행에 팀 훈련을해야한다는 것입니다.

  3. ==============================

    3.같은 문제를 만났다. 찾을 블로그 만들기는 모든 인터페이스 4.2 서버를 기울인다 레일.

    같은 문제를 만났다. 찾을 블로그 만들기는 모든 인터페이스 4.2 서버를 기울인다 레일.

    다음 설정 / boot.rb 추가

    require 'rails/commands/server'
    
    module Rails
      class Server
        alias :default_options_bk :default_options
        def default_options
          default_options_bk.merge!(Host: '0.0.0.0')
        end
      end
    end
    
  4. ==============================

    4.(: 레이크 -T 또는 레일 g 모델 사용자 예) 당신은 설정 / 모든 명령은 레이크 속성 및 레일 실패 boot.rb의 기본 옵션을 넣으면! 그래서, APPEND이 빈에 / 라인 require_relative '../config/boot'후 레일과 코드는 서버 명령을 레일에만 실행됩니다

    (: 레이크 -T 또는 레일 g 모델 사용자 예) 당신은 설정 / 모든 명령은 레이크 속성 및 레일 실패 boot.rb의 기본 옵션을 넣으면! 그래서, APPEND이 빈에 / 라인 require_relative '../config/boot'후 레일과 코드는 서버 명령을 레일에만 실행됩니다

    if ARGV.first == 's' || ARGV.first == 'server'
      require 'rails/commands/server'
      module Rails
        class Server
          def default_options
            super.merge(Host:  '0.0.0.0', Port: 3000)
          end
        end
      end
    end
    

    빈은 /이 같은 파일 외모 레일 :

    #!/usr/bin/env ruby
    APP_PATH = File.expand_path('../../config/application',  __FILE__)
    require_relative '../config/boot'
    
    # Set default host and port to rails server
    if ARGV.first == 's' || ARGV.first == 'server'
      require 'rails/commands/server'
      module Rails
        class Server
          def default_options
            super.merge(Host:  '0.0.0.0', Port: 3000)
          end
        end
      end
    end
    
    require 'rails/commands'
    
  5. ==============================

    5.푸마 3.12.1와 레일 5.1.7를 위해 선택한 대답은,하지만 난 내 설정 / puma.rb 파일에 다음을 추가하여하지 작업을 수행 않습니다

    푸마 3.12.1와 레일 5.1.7를 위해 선택한 대답은,하지만 난 내 설정 / puma.rb 파일에 다음을 추가하여하지 작업을 수행 않습니다

    set_default_host '0.0.0.0' # Note: Must come BEFORE defining the port
    
    port ENV.fetch('PORT') { 3000 }
    

    나는 DSL 파일을 검사하여 결정. 그것은 그 파일에 instance_eval 사용하기 때문에 그것을 할 수있는 다른 방법은 아마이있다, 그러나 이것은 나에게 가장 합리적인를 보였다.

  6. ==============================

    6.여기 내가 사용하는 간단한 해결책이다. 그 사용하여 당신을 위해하지 작업을 수행하는 경우 이미 같은 / 필요에 dotenv와 퓨마 - Heroku가, 그래서 다음이 당신을 위해하지 않을 수 있습니다.

    여기 내가 사용하는 간단한 해결책이다. 그 사용하여 당신을 위해하지 작업을 수행하는 경우 이미 같은 / 필요에 dotenv와 퓨마 - Heroku가, 그래서 다음이 당신을 위해하지 않을 수 있습니다.

    /config/puma.rb

    plugin :heroku
    

    Gemfile

    gem 'dotenv-rails', groups: [:development, :test]
    

    .env의

    PORT=8080
    

    지금은 레일의에 모두 dev에 생산을 시작할 수 있습니다.

  7. ==============================

    7.푸마로 전환 예컨대, 설정 / puma.rb에서 포트를 지정 :

    푸마로 전환 예컨대, 설정 / puma.rb에서 포트를 지정 :

    port        ENV.fetch("PORT") { 3000 }
    

    분명히이 지정된 포트에 대한 0.0.0.0에 바인딩됩니다 https://github.com/puma/puma/issues/896

  8. ==============================

    8.당신이 환경 변수를 관리하기 위해 고정 표시기 또는 다른 도구를 사용하는 경우, 당신은 당신이 바인딩에 필요한 IP에 호스트 환경 변수를 설정할 수 있습니다.

    당신이 환경 변수를 관리하기 위해 고정 표시기 또는 다른 도구를 사용하는 경우, 당신은 당신이 바인딩에 필요한 IP에 호스트 환경 변수를 설정할 수 있습니다.

    예: HOST = 0.0.0.0

    당신은 부두 노동자를 사용하거나 감독을 사용하는 경우 .env의 경우 파일을 docker.env에 추가합니다.

  9. from https://stackoverflow.com/questions/28668436/how-to-change-the-default-binding-ip-of-rails-4-2-development-server by cc-by-sa and MIT license