web-dev-qa-db-ja.com

バインドRailsサーバーをデフォルトで127.0.0.1にバインド

Railsサーバーを0.0.0.0ではなく127.0.0.1にバインドして、コーヒーショップで作業しているときにアクセスできないようにしたいと思います。

このオプションを指定できる構成ファイルがあるので、コマンドラインスイッチを渡す必要はありません。

Rails server -b 127.0.0.1

15

Rails 5を検索する場合: Answer


Rails ~> 4.0 Serverクラスのブートセクションをカスタマイズできます。

/config/boot.rbこの行を追加:

require 'Rails/commands/server'

module Rails
  class Server
    def default_options
      super.merge({Port: 10524, Host: '127.0.0.1'})
    end
  end
end

この質問ですでに答えたように:

変更方法Rails 3サーバーのデフォルトポートが開発されていますか?

Rails 4.2開発サーバーのデフォルトのバインディングIPを変更する方法は?

17
tebayoso

デフォルトでコマンドを実行するだけのbashスクリプトを作成できます。

#!/bin/bash
Rails server -b 127.0.0.1

プロジェクトと同じフォルダに入れて、好きな名前を付けます(例:devserv)。次に、

chmod +x devserv

そして、あなたがしなければならないすべては./devserv

3
sjagr

私は開発中のプロセスマネージャとして Foreman を使用しています。

Gemfileにgem 'foreman'を追加してbundle installを実行した後、アプリケーションディレクトリのルートにProcfileファイルを作成します。

他のプロセスを管理するために行を追加できますが、私の場合は次のように読みます。

web: Rails server -p $PORT -b 127.0.0.1

次に、Procfileを介してRailsサーバーを起動するには、foreman startを実行します。ここに他のプロセス(Redis、workers)がある場合、それらは同時に起動します。

2
Matt

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:  '127.0.0.1', Port: 10524)
      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:  '127.0.0.1', Port: 10524)
      end
    end
  end
end

require 'Rails/commands'
0
phlegx