私は1つを実行したいsinatraへのアプリケーションは2つのポートで聞く 80と4567?sinatraは複数のポートを受信できますか?
は、Windows XP
- だけ
- は私シナトラアプリケーションのインスタンスを1つだけ実行しているルビーを使用していることですか?私の知る限りでは、ありません、それはありません
私は1つを実行したいsinatraへのアプリケーションは2つのポートで聞く 80と4567?sinatraは複数のポートを受信できますか?
は、Windows XP
。ポートフォワーディングと呼ばれています。アプリケーションをポート80で実行し、ポート4567を80に転送すると、両方のポートを持つことができます。または、あなたのローカルアプリケーションを実行し、保護されたポート80を4567ポートに転送する場合は、それ以外の方法で行います。これは、ほとんどのホスティングサービスがクライアントのアプリケーションをどのように実行するかを示しています。
はい、iptablesは* nixesでそれを行います。それは難しく見えますが、難しくありませんが、まだ... – three
私はWindowsでそうすることはできますか? 'ruby solution'だけを使うことができますか? – Radek
@Radek - Googleが[このユーティリティ]を見つけました(http://www.quantumg.net/portforward.php)。私はWindows上でWindowsの設定を制御するためのRubyのメソッドは見当たらない(ただし、Rubyのバッククックを使用してコマンドラインソリューションを見つけることができます)。 – Phrogz
私はそう思っていましたが、私は確信したかったです... – Radek
あなたが同じデータベースを共有して、アプリケーションの2つの異なるコピーを起動することができます:
ruby myapp.rb -p 80 &
ruby myapp.rb -p 4567 &
これらの2つの別々のRubyで実行しますプロセスに問題が発生する場合と発生しない場合があります(プロセスに情報を格納しているかどうかによって異なります)。ただし、デフォルトのクッキーベースのセッションでもプロセス間で動作します:アクションで
require 'sinatra'
enable :sessions
get '/in/:msg' do
session[:msg] = params[:msg]
"I stored #{session[:msg]}"
end
get '/out' do
"Here you go: #{session[:msg]}"
end
を:あなたができるもちろん
phrogz$ ruby sessions.rb -p 3000 &
[1] 58698
phrogz$ ruby sessions.rb -p 3001 &
[1] 58699
phrogz$ curl -b cookies.txt -c cookies.txt http://localhost:3000/in/foo
I stored foo
phrogz$ curl -b cookies.txt -c cookies.txt http://localhost:3000/out
Here you go: foo
phrogz$ curl -b cookies.txt -c cookies.txt http://localhost:3001/out
Here you go: foo
私はdbを使用しません。 rbコードのみ。同じアプリケーションの2つのインスタンス間で変数を共有できますか?何かが一度に一度だけ実行されていることを確認したいのであれば、何とかそれが実行されていることを知る必要があります。 – Radek
@Radek私はあなたの要件を完全に理解していません。 – Phrogz
私はsinatraアプリケーションを使用して、テストの自動化スクリプトを実行します。このスクリプトは完了までに時間がかかります。私はsinatraのインスタンスがテストを開始した場合、別のテストスクリプトが再び起動されないことを確認する必要があります。このような情報をsinatraの外に保存しなくても使用できますか?ちょうど記憶に? – Radek
好奇心の怪しさから、これはあなたのユースケースですか? – Phrogz
標準の4567ポートを使用しながらアプリケーション全体を開発しました。これは単なるツールではありましたが、今は他の人にもリリースしますので、標準ポート80を使う方が良いと思っていました。そして、両方のポートで動作させることができればいいと思いました。私は80のためだけに行くように見えます。 – Radek