개발 시스템에서 포트 10524를 사용합니다. 따라서 다음과 같이 서버를 시작합니다.
rails s -p 10524
서버를 시작할 때마다 포트를 추가 할 필요가 없도록 기본 포트를 10524로 변경하는 방법이 있습니까?
답변
먼저 보석 경로에서 아무것도 편집하지 마십시오! 그것은 모든 프로젝트에 영향을 미치며 나중에 많은 문제가 발생할 것입니다 …
프로젝트에서 다음과 script/rails
같이 편집 하십시오.
#!/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'
원칙은 간단합니다-서버 러너를 원숭이 패치하는 것이므로 하나의 프로젝트에만 영향을 미칩니다.
업데이트 : 예, bash 스크립트가 포함 된 간단한 솔루션이 있음을 알고 있습니다.
#!/bin/bash
rails server -p 10524
그러나이 솔루션에는 심각한 단점이 있습니다. 지루합니다.
답변
다음에 다음을 추가하고 싶습니다 config/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
답변
하나 더 당신을 위해. -p를 사용하여 rails 서버를 호출하는 레이크 작업을 만듭니다.
task "start" => :environment do
system 'rails server -p 3001'
end
rake start
대신에 전화rails server
답변
Rails 4.0.4 (및 아마도 위로)에 대한 두 가지 이전 답변을 결합하면 다음과 같이 끝납니다 config/boot.rb
.
require 'rails/commands/server'
module Rails
class Server
def default_options
super.merge({Port: 10524})
end
end
end
답변
우리는 Puma를 웹 서버로 사용 하고 개발 환경 변수를 설정하기 위해 dotenv 를 사용하고 있습니다. 이것은에 대한 환경 변수를 PORT
설정하고 Puma 구성에서 참조 할 수 있음을 의미 합니다.
# .env
PORT=10524
# config/puma.rb
port ENV['PORT']
그러나 foreman start
대신 앱을 시작해야합니다.rails s
. 그렇지 않으면 puma 구성이 제대로 읽히지 않습니다.
개발 및 프로덕션에서 구성이 동일한 방식으로 작동하기 때문에이 방법이 마음에 듭니다. 필요한 경우 포트 값만 변경하면됩니다.
답변
Radek와 Spencer에서 영감을 받아 … Rails 4 (.0.2-Ruby 2.1.0)에서 이것을 config / 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의 다른 모든 구성 은 여전히 설정되어 있으며 명령 줄 스위치는 여전히 기본값을 재정의합니다.
답변
레일 솔루션 2.3- script/server
:
#!/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'