port - ¿Cómo cambiar el puerto predeterminado de una aplicación de Rails 4?
ruby-on-rails-4 webrick (5)
Sé que puedo iniciar un servidor de rieles en otro puerto mediante la opción -p
. Pero me gustaría configurar otro puerto por aplicación siempre que empiece webrick.
¿Algunas ideas?
Saludos Felix
Opción 1:
Puede ejecutar WEBrick de esta forma:
rails server -p 8080
Donde 8080 es tu puerto. Si lo desea, puede incluir esto en un script bash para mayor comodidad.
Opcion 2:
Puede $ gem install foreman
instalación de $ gem install foreman
, y usar el capataz para iniciar su servidor de web de producción (por ejemplo, unicornio) como se define en su Procfile
como lo siguiente: $ foreman run web
. Si unicornio es su servidor web, puede especificar el puerto en su archivo de configuración de unicornio (como con la mayoría de las opciones de servidor). El beneficio de este enfoque no es solo establecer el puerto en la configuración, sino que está usando un entorno más cercano a la producción.
Añada esto a config/boot.rb
:
require ''rails/commands/server''
module DefaultOptions
def default_options
super.merge!(Port: 3001)
end
end
Rails::Server.send(:prepend, DefaultOptions)
Nota: ruby> = 2.0 requerido.
Para Rails 5.1:
# config/boot.rb
# ... existing code
require ''rails/command''
require ''rails/commands/server/server_command''
Rails::Command::ServerCommand.send(:remove_const, ''DEFAULT_PORT'')
Rails::Command::ServerCommand.const_set(''DEFAULT_PORT'', 3333)
Solución rápida: Rakefile
a Rakefile
task :server do
`bundle exec rails s -p 8080`
end
Luego ejecuta el rake server
Si coloca las opciones predeterminadas en config/boot.rb
entonces config/boot.rb
todos los atributos de comando para rake y rails (ejemplo: rake -T
o rails g model user
). Por lo tanto, añada esto a bin/rails
después de la línea require_relative ''../config/boot''
y el código se ejecuta solo para el comando del servidor rails:
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
El archivo bin/rails
parece a esto:
#!/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''