私はRuby on Railsが初めてなので、公式の「Getting Started "Ruby on Rails=チュートリアル、それは非常にすぐにうまくいかなかったので少しがっかりしました。
… http:// localhost:30 に移動します。 Railsのデフォルトの情報ページが表示されます。
しかし、指示に従うと、
=> Rails 2.3.4 http://0.0.0.0:3000 以降のアプリケーション]
両方のアドレスを試した後、それらが同じものを指していることがわかりますが、誰かがRuby on Rails使用http://0.0.0.0:3000
の代わりに http://localhost:3000
?
常にWEBbrickサーバーにlocalhostを使用させる方法はありますか?
Localhostは、文字通り「ローカルホスト」を意味し、通常127.0.0.1で識別され、そのアドレスへのすべてのトラフィックはループバックインターフェイスを介してルーティングされます。 Webサーバーが127.0.0.1で接続をリッスンしている場合、これは同じホストからの要求のみを受け入れることを意味します。
0.0.0.0は、Railsがループバックインターフェイスだけでなくallインターフェイスでリッスンしていることを意味します。
0.0.0.0
はすべてのインターフェースを意味します。 127.0.0.1
a.k.a. localhost
を含む。
localhost
が必要な場合、簡単な方法の1つは、バインディングRails s -blocalhost
(および-pNNNN
でポート、Rails s --help
でその他のオプション)を指定することです。
調査する理由により、サーバーはデフォルトでlocalhost
で実行を開始しました。その結果、lvh.me
が機能しなくなり、サブドメインを指定できなくなりました(例:www.lvh.me:3000
)。
バインディングを指定してこれを「解決」しました。
Rails s -b0.0.0.0 # will work with lvh.me
参考までに、Rails 4.1では、ブート時に次のような警告メッセージが表示されます。
=> Run `Rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
これは、0.0.0.0
へのバインドは推奨されておらず、代わりに127.0.0.1
を使用する必要があることを示しています。
In Rails 4.2+では、Rails=サーバーのデフォルトのバインディングは、0.0.0.0
ではなくlocalhost
に、または127.0.0.1
。
誰もが知っているように、Firefoxブラウザーは、http://localhost:3000/
しかし、アクセスしようとすると表示されませんhttp://0.0.0.0:3000/
Rubyの推奨どおり。明らかに、ある意味では、それらは同等ではありません。
私はWindowsを使用しています。
OSを再起動してくれました。 (Mac v 10.12の場合)
実際にRailsには、特定のインターフェイスまたはすべてのインターフェイスをリッスンするかどうかについて、さまざまな構成オプションがあります。
Nitrous.io仮想サーバー環境を開発に使用している私たちにとっては、ローカルホスト自体が存在しないため、0.0.0.0にバインドする必要があると思います。