私は一種のルビーオンラインターミナルを実装しています(練習用です)。「端末」の入力を評価するメソッドを呼び出すために、単純な js Web アプリケーションから AJAX を使用しています。環境の問題を回避し、ユーザーが独自のオブジェクトを作成できるようにするために、「バインディング」オブジェクトを使用していました。問題は、バインディングを永続化する方法がわからないことです。
私の最初のアイデアは、ユーザーがアプリケーションにアクセスするたびに、投稿リクエスト間で持続するバインディングを作成することでした。その瞬間、一意のキーと新しいバインディングを使用して、キーとオブジェクトのペアが作成されます。次に、キーがクライアントに渡されます。ユーザーが ajax 経由で評価する文字列を送信すると、キーが送信されます。次に、バインディング オブジェクトを取得して更新します。
私は次のようなものを試しました:
class TerminalController
@@bindings = {}
def index
@token = keyToken
@@bindings[@token] = getBinding
end
private
def keyToken
Digest::MD5.hexdigest(Time.now.to_s)
end
def getBinding
# declare methods for all bindings
# ...
binding
end
end
しかし、実行時に、コードはキーと値のペアの作成に失敗します。実際、その行の後に実行しようとしたものはすべて失敗します。理由がわかりません。
実際、バインディングをシリアル化できれば機能すると思いますが、ネットワークの遅延とバインディングの潜在的な成長のため、非効率になる可能性があると思います。