164 votes

Comment changer le port par défaut du serveur Rails 3 dans develoment?

Sur ma machine de développement, j'utilise le port 10524. Je démarre donc mon serveur de la manière suivante:

 rails s -p 10524
 

Est-il possible de changer le port par défaut en 10524 pour ne pas avoir à ajouter le port chaque fois que je lance le serveur?

132voto

Radek Paviensky Points 4193

Premier - ne pas modifier quoi que ce soit dans votre gem chemin! Il aura une influence sur tous les projets, et vous aurez beaucoup de problèmes plus tard...

Dans votre projet d'éditer script/rails de cette façon:

#!/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'

Le principe est simple - vous avez singe-patcher le serveur coureur - de sorte qu'il aura une influence sur un seul projet.

Mise à JOUR: Oui, je sais qu'il est plus simple solution avec bash script contenant:

#!/bin/bash
rails server -p 10524

mais cette solution a un inconvénient grave - c'est ennuyeux comme l'enfer.

131voto

Spencer Points 971

J'aime ajouter les éléments suivants à 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
 

30voto

Ross Points 1056

Une autre idée pour vous. Créez une tâche rake qui appelle le serveur rails avec -p.

 task "start" => :environment do
  system 'rails server -p 3001'
end
 

appelez alors rake start au lieu de rails server

17voto

Thilo Points 10034

En combinant deux réponses précédentes, pour Rails 4.0.4 (et probablement plus), cela suffit à la fin de config/boot.rb :

 require 'rails/commands/server'

module Rails
  class Server
    def default_options
      super.merge({
        :Port => 10524
      })
    end
  end
end
 

3voto

Nowaker Points 2449

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X