port ruby-on-rails-4 webrick

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''