web-dev-qa-db-ja.com

Rails 4アプリのデフォルトポートを変更するには?

-pオプションを使用して、別のポートでRailsサーバーを開始できることを知っています。

何か案は?

よろしくフェリックス

24
GeorgieF

クイックソリューション:Rakefileに追加

task :server do
  `bundle exec Rails s -p 8080`
end

次にrake serverを実行します

32
hawk

これをconfig/boot.rbに追加します:

require 'Rails/commands/server'

module DefaultOptions
  def default_options
    super.merge!(Port: 3001)
  end
end

Rails::Server.send(:prepend, DefaultOptions)

注:Ruby> = 2.0が必要です。

35

オプション1:

次のようにWEBrickを起動できます。

    Rails server -p 8080

8080はポートです。必要に応じて、便宜上bashスクリプトでこれをスローできます。

オプション2:

$ gem install foremanをインストールし、フォアマンを使用して、$ foreman run webのようにProcfileで定義されている本番Webサーバー(Unicornなど)を起動できます。 UnicornがWebサーバーの場合、Unicorn構成ファイルでポートを指定できます(ほとんどのサーバーの選択と同様)。このアプローチの利点は、設定でポートを設定できるだけでなく、本番環境により近い環境を使用していることです。

21
William Denniss

config/boot.rbにデフォルトオプションを設定すると、rakeおよびRailsのすべてのコマンド属性が失敗します(例:rake -TまたはRails g model user)!したがって、これをbin/Railsrequire_relative '../config/boot'行の後に追加すると、コードは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

bin/Railsファイルは次のように見えます:

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

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)
2
eyevan