web-dev-qa-db-ja.com

Ruby localhost:4567で実行されているがIPでは実行されていないSinatra Webservice

Ruby(sinatraを使用)WebサービスをWindows 7 32ビットOSで使用しています。そのポート4567で実行されています。localhost:4567を使用すると正常に機能しますが、localhostを自分のマシンのローカルIPに置き換えると、-192.168.103.99:4567が使用されます動作せず、接続に失敗します。ファイアウォールを無効にし、プロキシをバイパスし、ポート4567を例外に追加しましたが、まだうまくいきません。

問題は何でしょうか?

30
foobar

@SudarshanShubakarのコメントから、次は私のために働いた。

Ruby app.rb -o 0.0.0.0

49
foobar

ビルトインサーバーをrun! if app_file == $0チェック、 シナトラのドキュメントset :bind, '0.0.0.0'は、インターフェイスをlocalhostレイヤーの外で使用できるようにするために必要です。

カスタムIPアドレスまたは逆引きDNS(mydomain.com…)を使用する必要はありません:'0.0.0.0'は正当な値 Sinatraが期待する値 であり、正しく解釈されます。

したがって、localhostだけでなく、すべてのインターフェースで使用できるようになった最小限の自己完結型Sinatraアプリケーションは次のようになります。

require 'sinatra/base'

class MyApp < Sinatra::Base
  set :bind, '0.0.0.0'

  get '/' do
    'Hello World'
  end

  run! if app_file == $0
end
18
chikamichi

サーバーのホスト名またはIPアドレスを設定するには、 sinatra設定bindを使用します

set :bind, '192.168.103.99'
10
unused

この

require 'rubygems'
require 'sinatra'
require "dbi"

set :bind, '192.168.200.185'
get '/' do
    'hello Word'
end
1
Erick Guardado