복붙노트

[RUBY-ON-RAILS] 어떻게 개발에 레일 3 서버의 기본 포트를 변경하려면?

RUBY-ON-RAILS

어떻게 개발에 레일 3 서버의 기본 포트를 변경하려면?

나는 내 서버에 이런 식으로 시작 그래서 내 개발 컴퓨터에, 나는 포트 10524.을 사용 :

rails s -p 10524

나는 포트에게 내가 서버를 시작할 때마다 추가 할 필요가 없습니다 것입니다, 그래서 10524의 기본 포트를 변경하는 방법이 있나요?

해결법

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

    1.첫째 - 당신의 보석 경로에 편집 아무것도하지 않습니다! 그것은 모든 프로젝트에 영향을 미칠 것이며, 나중에 많은 문제가있는 것입니다 ...

    첫째 - 당신의 보석 경로에 편집 아무것도하지 않습니다! 그것은 모든 프로젝트에 영향을 미칠 것이며, 나중에 많은 문제가있는 것입니다 ...

    프로젝트 편집 스크립트에서 / 이런 식으로 레일 :

    #!/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.
    
    APP_PATH = File.expand_path('../../config/application',  __FILE__)
    require File.expand_path('../../config/boot',  __FILE__)
    
    # THIS IS NEW:
    require "rails/commands/server"
    module Rails
      class Server
        def default_options
          super.merge({
            :Port        => 10524,
            :environment => (ENV['RAILS_ENV'] || "development").dup,
            :daemonize   => false,
            :debugger    => false,
            :pid         => File.expand_path("tmp/pids/server.pid"),
            :config      => File.expand_path("config.ru")
          })
        end
      end
    end
    # END OF CHANGE
    require 'rails/commands'
    

    원리는 간단하다 - 당신은 원숭이 패치 서버 주자입니다 - 그것은 단지 하나의 프로젝트에 영향을 미칠 것이다 있도록.

    UPDATE : 네,이 (가) bash는 스크립트가 포함와 간단한 해결책이 있다는 것을 알고있다 :

    #!/bin/bash
    rails server -p 10524
    

    하지만이 솔루션은 심각한 단점이있다 - 그것은 지옥으로 지루합니다.

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

    2.나는에 설정 / boot.rb 다음과 같은 추가하고자 :

    나는에 설정 / boot.rb 다음과 같은 추가하고자 :

    require 'rails/commands/server'
    
    module Rails
      class Server
        alias :default_options_alias :default_options
        def default_options
          default_options_alias.merge!(:Port => 3333)
        end    
      end
    end
    
  3. ==============================

    3.당신을 위해 한 번 더 생각. 호출이 -p와 서버를 레일하는 레이크 작업을 만듭니다.

    당신을 위해 한 번 더 생각. 호출이 -p와 서버를 레일하는 레이크 작업을 만듭니다.

    task "start" => :environment do
      system 'rails server -p 3001'
    end
    

    다음 통화 레이크 대신 레일 서버의 시작

  4. ==============================

    4.설정 / boot.rb의 끝에서 (아마도, 최대)이 접미사를 레일 4.0.4에 대한 이전의 두 답변을 결합 :

    설정 / boot.rb의 끝에서 (아마도, 최대)이 접미사를 레일 4.0.4에 대한 이전의 두 답변을 결합 :

    require 'rails/commands/server'
    
    module Rails
      class Server
        def default_options
          super.merge({Port: 10524})
        end
      end
    end
    
  5. ==============================

    5.우리는 개발에 설정된 환경 변수에 웹 서버 및 dotenv로 푸마를 사용하고 있습니다. 이 방법은 내가 PORT에 대한 환경 변수를 설정하고,이 푸마의 설정에 참조 할 수 있습니다.

    우리는 개발에 설정된 환경 변수에 웹 서버 및 dotenv로 푸마를 사용하고 있습니다. 이 방법은 내가 PORT에 대한 환경 변수를 설정하고,이 푸마의 설정에 참조 할 수 있습니다.

    # .env
    PORT=10524
    
    
    # config/puma.rb
    port ENV['PORT']
    

    그러나 그렇지 않으면 퓨마 설정이 제대로 읽을되지 않습니다, 대신 레일의의 주임 시작하여 응용 프로그램을 시작해야합니다.

    구성은 개발 및 생산에 동일한 방식으로 작동하기 때문에 필요한 경우 당신은 단지 포트의 값을 변경,이 방법을 좋아한다.

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

    6.라덱와 스펜서에 의해 영감을 ... 레일 4 (.0.2 - 루비 2.1.0),이에 대한 설정 / boot.rb 추가 할 수 있었다 :

    라덱와 스펜서에 의해 영감을 ... 레일 4 (.0.2 - 루비 2.1.0),이에 대한 설정 / boot.rb 추가 할 수 있었다 :

    # config/boot.rb
    
    # ...existing code
    
    require 'rails/commands/server'
    
    module Rails
      # Override default development
      # Server port
      class Server
        def default_options
          super.merge(Port: 3100)
        end
      end
    end
    

    default_options의 다른 모든 구성은 여전히 ​​설정 및 명령 줄은 여전히 ​​재정의 기본값을 전환된다.

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

    7.레일 2.3 솔루션 - 스크립트 / 서버 :

    레일 2.3 솔루션 - 스크립트 / 서버 :

    #!/usr/bin/env ruby
    require 'rack/handler'
    module Rack::Handler
      class << WEBrick
        alias_method :old_run, :run
      end
    
      class WEBrick
        def self.run(app, options={})
          options[:Port] = 3010 if options[:Port] == 3000
          old_run(app, options)
        end
      end
    end
    
    require File.dirname(__FILE__) + '/../config/boot'
    require 'commands/server'
    
  8. ==============================

    8.당신처럼 Procfile에 정의 된 $ 보석이 당신의 서버를 시작 감독 및 사용의 감독을 설치 설치할 수 있습니다 :

    당신처럼 Procfile에 정의 된 $ 보석이 당신의 서버를 시작 감독 및 사용의 감독을 설치 설치할 수 있습니다 :

    web: bundle exec rails -p 10524
    

    추가 정보를 원하시면 https://github.com/ddollar/foreman : 현재 주임 보석 문서를 확인하실 수 있습니다

    이 방법의 장점은 추가 할 많은 코드를 필요로하지 않습니다하지만 당신은 당신이 돈 때문에 감독이 당신을 위해 실행하는 Procfile에서 다른 단계를 추가 할 수 있습니다뿐만 아니라, 쉽게 설정에서 포트를 변경 / 설정할 수 있으며 't은 그들이 비록 당신이 당신에게 응용 프로그램 같은 뭔가를 시작할 때마다 갈 필요가 :

    bundle: bundle install
    web: bundle exec rails -p 10524
    ...
    ...
    

    건배

  9. ==============================

    9.지정된 포트 명령 쉘에서 별칭을 만듭니다.

    지정된 포트 명령 쉘에서 별칭을 만듭니다.

  10. from https://stackoverflow.com/questions/3842818/how-to-change-rails-3-server-default-port-in-develoment by cc-by-sa and MIT license