개발에서 Rails 3 서버 기본 포트를 변경하는 방법은 무엇입니까?
개발 시스템에서 포트 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
All other configuration in default_options are still set, and command-line switches still override defaults.
Solution for Rails 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'
You could install $ gem install foreman
, and use foreman to start your server as defined in your Procfile
like:
web: bundle exec rails -p 10524
You can check foreman
gem docs here: https://github.com/ddollar/foreman for more info
The benefit of this approach is not only can you set/change the port in the config easily and that it doesn't require much code to be added but also you can add different steps in the Procfile
that foreman will run for you so you don't have to go though them each time you want to start you application something like:
bundle: bundle install
web: bundle exec rails -p 10524
...
...
Cheers
Create alias in your shell for command with a specified port.
참고URL : https://stackoverflow.com/questions/3842818/how-to-change-rails-3-server-default-port-in-develoment
'programing tip' 카테고리의 다른 글
Spring Boot 두 개의 데이터 소스 구성 및 사용 (0) | 2020.06.01 |
---|---|
`sorted (list)`와`list.sort ()`의 차이점은 무엇입니까? (0) | 2020.05.31 |
다른 사람이 소유하지 않은 파일 찾기 (0) | 2020.05.31 |
html5-캔버스 요소-여러 레이어 (0) | 2020.05.31 |
Android 휴대 전화에서 가장 인기있는 화면 크기 / 해상도 (0) | 2020.05.31 |