3

一部のコードにパッチを適用する必要がありますが、正確な方法がわかりません。基本的に、ホスト名とポートにバインドするラックサーバーがあります。UNIXソケットにバインドしたいと思います。問題は、私が与えなければならない正確なオプションを理解できないことです.

Rack::Server.new(:app => @app, :port => 3000).start 

期待されることを行います。私はそれが次のようなものになると思いました:

Rack::Server.new(:app => @app, :socket => "path/to/file").start

それでも、これはデフォルトのポートにバインドします。これどうやってするの?

4

3 に答える 3

5

ファイル名:Hostオプションに渡すと、TCP ソケットではなく UNIX ソケットにバインドされることがわかりました。

ただし、ファイル名は次のようにする必要があります。

/var/www/myapp/my_app.socketまた./my_app.socket

次のようなドメイン名の場合、これは機能しません。

my_app.socket

たとえば、Rack 1.2 で機能する rackup コマンドは次のとおりです。

rackup -s thin -E production -o ./my_app.socket faye.ru

または、これはルビーから行う方法です:

require 'rack'
require 'thin'
Rack::Handler.get('thin').run(app, :Host => './my_app.socket')

# or this works also

require 'rack'
require 'thin'
Rack::Server.new(:app => app, :Host => './my_app.socket').start

注:これには大文字の H:Hostが必要です。

それが役立つことを願っています!

于 2014-05-23T05:20:00.270 に答える
2

どうやらこれは不可能です。ラック互換サーバーは通常この機能をサポートしていますが、Rack::Server の「インターフェース」はそれを利用していません (少なくとも 2013 年 10 月現在の最新バージョン)。なぜ、私を超えています。

于 2013-10-04T19:16:28.337 に答える
-1

:Socket または :File を試しましたか? Rack では、実際の Web サーバー (webrick、thin など) のオプションは通常、大文字で始まることに注意してください。

于 2014-01-09T20:38:48.987 に答える