Je sais que je peux démarrer un serveur Rails sur un autre port via -p
option. Mais j'aimerais configurer un autre port par application tant que je démarre webrick.
Des idées?
Cordialement Felix
Solution rapide: ajouter à Rakefile
task :server do
`bundle exec Rails s -p 8080`
end
Exécutez ensuite rake server
Ajoutez ceci à config/boot.rb
:
require 'Rails/commands/server'
module DefaultOptions
def default_options
super.merge!(Port: 3001)
end
end
Rails::Server.send(:prepend, DefaultOptions)
Remarque: Ruby> = 2.0 requis.
Vous pouvez lancer WEBrick comme ceci:
Rails server -p 8080
Où 8080 est votre port. Si vous le souhaitez, vous pouvez jeter ceci dans un script bash pour plus de commodité.
Vous pouvez installer $ gem install foreman
, et utilisez foreman pour démarrer votre serveur Web de production (par exemple Unicorn) comme défini dans votre Procfile
comme ceci: $ foreman run web
. Si Unicorn est votre serveur Web, vous pouvez spécifier le port dans votre fichier de configuration Unicorn (comme avec la plupart des choix de serveur). L'avantage de cette approche est non seulement que vous pouvez définir le port dans la configuration, mais que vous utilisez un environnement plus proche de la production.
Si vous mettez les options par défaut sur config/boot.rb
puis tous les attributs de commande pour rake et Rails échoue (exemple: rake -T
ou Rails g model user
)! Alors, ajoutez ceci à bin/Rails
après la ligne require_relative '../config/boot'
et le code est exécuté uniquement pour la commande serveur 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
Le bin/Rails
fichier loks comme ceci:
#!/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'
Pour 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)