Ruby マーシャリングを使用して 2 つのクライアント間でデータを送信しています。各クライアントには、マーシャリングされたデータのロードを支援するために使用する一連のクラス定義があります。定義は外部の ruby ファイルに保存され、いつでもロードできます (通常は起動時)。
簡単な使用例は次のとおりです。
- クライアント A マーシャルがデータをダンプし、クライアント B に送信します。
- クライアント B マーシャルがデータをロードし、それをファイルに書き出す
ただし、1 つのクライアントが、他のクライアントの定義で定義されていないオブジェクトを含むデータを送信する場合があります。この場合、他のクライアントは定義を適宜更新する必要があります。
クラスの定義に追加する必要がある新しいインスタンス変数である場合もあれxyz
ば、完全に新しいクラスである場合もあります。
Marshal#Load
現在、未定義の変数 (例: undefined class/method abc
) に遭遇したときに例外をスローするだけです。
クライアントがデータを喜んで読み書きできるように、この例外を取り、それに応じて定義を更新する方法はありますか?
dump
すべてのクラスには、文字列、配列、ハッシュ、数値など、Marshal が既にエンコード/デコードする方法を知っているデータが含まれます。カスタム/load
メソッドを必要とするデータはありません。