¿Cómo cambiar el puerto predeterminado del servidor Rails 3 en develoment?
En mi máquina de desarrollo, uso el puerto 10524. Así que arranco mi servidor de esta manera :
rails s -p 10524
¿Hay alguna manera de cambiar el puerto predeterminado a 10524 para que no tenga que anexar el puerto cada vez que inicie el servidor?
9 answers
Primero - ¡no edites nada en tu ruta de gemas! Influirá en todos los proyectos, y tendrá muchos problemas más tarde...
En tu proyecto edita script/rails
de esta manera:
#!/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'
El principio es simple - usted está parcheando el servidor runner-por lo que influirá en un solo proyecto.
UPDATE : Sí, sé que hay una solución más simple con el script bash que contiene:
#!/bin/bash
rails server -p 10524
Pero esta solución tiene un grave inconveniente - es aburrido como el infierno.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-01 21:22:49
Me gusta añadir lo siguiente a 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-30 18:10:54
Una idea más para ti. Crear una tarea de rake que llame al servidor rails con-p.
task "start" => :environment do
system 'rails server -p 3001'
end
Luego llama a rake start
en lugar de rails server
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-18 03:35:48
Combinando dos respuestas anteriores, para Rails 4.0.4 (y arriba, presumiblemente), esto es suficiente al final de config/boot.rb
:
require 'rails/commands/server'
module Rails
class Server
def default_options
super.merge({Port: 10524})
end
end
end
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-23 11:02:46
Estamos usando Puma como servidor web, y dotenv para establecer variables de entorno en desarrollo. Esto significa que puedo establecer una variable de entorno para PORT
, y referenciarla en la configuración de Puma.
# .env
PORT=10524
# config/puma.rb
port ENV['PORT']
Sin embargo, tendrá que iniciar su aplicación con foreman start
en lugar de rails s
, de lo contrario la configuración de puma no se lee correctamente.
Me gusta este enfoque porque la configuración funciona de la misma manera en desarrollo y producción, solo cambia el valor del puerto si necesario.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-11 21:52:37
Solución para Rieles 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'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-05 11:13:59
Inspirado por Radek y Spencer... Sobre Raíles 4(.0.2-Ruby 2.1.0), pude añadir esto a 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
Todas las demás configuraciones en default_options todavía están configuradas, y los conmutadores de línea de comandos todavía anulan los valores predeterminados.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-05 07:25:40
Puede instalar $ gem install foreman
, y usar foreman para iniciar su servidor como se define en su Procfile
como:
web: bundle exec rails -p 10524
Puedes consultar foreman
los documentos de gema aquí: https://github.com/ddollar/foreman para más información
El beneficio de este enfoque no solo es que puede configurar / cambiar el puerto en la configuración fácilmente y que no requiere mucho código para ser agregado, sino que también puede agregar diferentes pasos en el Procfile
que foreman ejecutará para usted por lo que no tiene que ir a través de ellos cada vez que desea iniciar la aplicación, algo como:
bundle: bundle install
web: bundle exec rails -p 10524
...
...
Salud
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-03 07:18:51
Cree alias en su shell para el comando con un puerto especificado.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-11 09:23:27