1. ホーム
  2. ruby-on-rails

[解決済み] Rails 4.2開発サーバーのデフォルトのバインディングipを変更するには?

2023-04-21 01:36:50

質問

私たちのチームの rails アプリケーションを 4.2 にアップグレードした後に リリースノート にあるように、デフォルトの ip rails server がバインドされるように変更されました。 localhost から 0.0.0.0 .

Vagrantで開発しており、開発サーバーはホストマシンのブラウザから直接アクセスできるようにしたい。

と入力する代わりに rails s -b 0.0.0.0 のような単純なものを使えるように、もっとエレガントな解決策はないものでしょうか? rails s のような単純なものを使ってサーバを起動できるようにするためです。おそらく。

  • 設定ファイル rails s を読むと、デフォルトのバインディング ip を変更することができます (このファイルでは -c )
  • vagrantでポートフォワードする(試したが失敗、以下の遭遇した問題を参照)
  • デフォルトのバインディング ip を変更する rack へのモンキーパッチ。

この背後にある本当の目的は、私たちのチーム内でアップグレードがスムーズに行われるようにすることで、rails サーバを常に再起動しなければならないような不具合を回避することです。 -b 0.0.0.0 部分がないために、rails サーバーを常に再起動しなければならないという不具合を回避することです。

vagrantのポートフォワーディングを試してみましたが、やはり Connection Refused にアクセスすると localhost:3000 にアクセスしたときに表示されます。私が試した設定行は2つです。

config.vm.network "forwarded_port", guest: 3000, host: 3000
config.vm.network "forwarded_port", guest: 3000, guest_ip: '127.0.0.1', host: 3000

公式ドキュメントに関連する指示が見つかりませんでした。どんな助けでも感謝します。

どのように解決するのですか?

私も同じ問題を抱えているのですが、今日、より良い解決策を見つけました。このコードをconfig/boot.rbに追記するだけで、vagrantで動作するはずです。

require 'rails/commands/server'
module Rails
  class Server
    def default_options
      super.merge(Host:  '0.0.0.0', Port: 3000)
    end
  end
end

ps: そのベースとなる この回答