私は2つのプロセスをforkして2つのwebrickサーバーを起動する必要があります。私は基本クラスのクラスメソッドを通してこのサーバを起動したいのです。なぜなら、この2つのサーバは複数のサーバではなく、実行する必要があるからです。実行時に、変数を変更するためにこの2つのサーバー上のいくつかのメソッドを呼び出す必要があります。rubyプロセスで変数を共有する
私の問題は、基本クラスのクラスメソッドを使って、フォークのインスタンス変数にアクセスできないということです。さらに、基本クラスの内部でスレッドを使用することはできません。なぜなら、私はスレッドセーフではない別のライブラリを使用しているからです。だから私は自分のプロセスに各サーバーをフォークする必要があります。
@@server
のようなクラス変数で試してみました。しかし、私が基底クラスを通してこの変数にアクセスしようとすると、それはnil
です。 Rubyではフォーク間でのクラス変数の共有は不可能だと私は理解していますか?
これを回避する方法はありますか?私はシングルトンを使うことを考えましたが、これがベストアイデアかどうかは分かりません。
[プロセス間通信](http://en.wikipedia.org/wiki/Inter-process_communication) –
だけでリンクが少し小さいです;)私は、プロセス間通信を知っているが、やります私は本当にこれを達成するために、XMLインターフェイスを実装するか、システム固有のプロトコルを扱う必要がありますか?私は考えていたかもしれません。 – 23tux
@ 23tux:Rubyのプロセスは別物で、IPCはあなたの問題を解決する唯一の方法です。しかしRubyの宝石はたくさんありますが、それは助けになるかもしれません。おそらく、データをディスクに 'Marshal 'するだけで済みます。追加する必要があるのは、部分的な読み取り/書き込みを避けるためにいくつかのロックを加え、パフォーマンスを監視することだけです。次回は、ディスクに触れないようにローカルの 'memcached'にマーシャリングするかもしれません。 。 。 –