ruby-on-rails - proyecto - ruby on rails download
¿Cómo cambiar el puerto predeterminado del servidor de Rails 3 en desarrollo? (9)
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
En mi máquina de desarrollo, utilizo el puerto 10524. Así que inicio mi servidor de esta manera:
rails s -p 10524
¿Hay alguna manera de cambiar el puerto predeterminado a 10524 para no tener que agregar el puerto cada vez que inicie el servidor?
Cree un alias en su shell para comando con un puerto especificado.
Estamos utilizando Puma como un servidor web, y dotenv para establecer variables de entorno en desarrollo. Esto significa que puedo establecer una variable de entorno para PORT
, y hacer referencia a ella en la configuración de Puma.
# .env
PORT=10524
# config/puma.rb
port ENV[''PORT'']
Sin embargo, tendrás que iniciar tu aplicación con foreman start
lugar de rails s
, de lo contrario la configuración de puma no se leerá correctamente.
Me gusta este enfoque porque la configuración funciona de la misma manera en el desarrollo y la producción, solo cambia el valor del puerto si es necesario.
Inspirado por Radek y Spencer ... On Rails 4 (.0.2 - Ruby 2.1.0), pude agregar 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
El resto de la configuración en opciones predeterminadas aún están configuradas, y los modificadores de línea de comandos aún anulan los valores predeterminados.
Me gusta agregar 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
Primero, ¡no edite nada en su camino de gema! Influirá en todos los proyectos, y tendrá muchos problemas más adelante ...
En su proyecto edite el script/rails
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: estás aplicando parches a los corredores del servidor, por lo que influirá solo en un proyecto.
ACTUALIZACIÓN : Sí, sé que existe una solución más simple con script bash que contiene:
#!/bin/bash
rails server -p 10524
pero esta solución tiene un serio inconveniente: es aburrido como el infierno.
Puede $ gem install foreman
instalación de $ gem install foreman
, y usar el capataz para iniciar su servidor como se define en su Procfile
como:
web: bundle exec rails -p 10524
Puede consultar docs de foreman
gem aquí: https://github.com/ddollar/foreman para obtener más información
El beneficio de este enfoque no es solo 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 el capataz ejecutará para usted, de modo Debes pasar por ellos cada vez que quieras comenzar tu aplicación, algo así como:
bundle: bundle install
web: bundle exec rails -p 10524
...
...
Aclamaciones
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''
Una idea más para ti Cree una tarea de rake que llame al servidor rails con la opción -p.
task "start" => :environment do
system ''rails server -p 3001''
end
luego, llame al rake start
lugar del rails server
de rails server