我正在实现一种红宝石在线终端(仅供练习)。我正在使用AJAX从一个简单的js web应用程序调用一个方法,以避免“终端”的输入。为了避免环境问题并让用户创建自己的对象,我使用了“绑定”对象。问题是我不知道如何坚持绑定。如何在Rails中保留对象
我的第一个想法是创建一个bindindg,它在用户每次访问应用程序时在帖子请求之间持续存在。在那一刻,一个关键 - 对象对用一个唯一的键和一个新的绑定来创建。密钥然后传递给客户端。当用户通过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
但在执行时,代码失败创建键值对。事实上,任何我尝试在该行后执行失败。我不明白为什么。
其实,我认为如果我可以序列化绑定它会工作,但我认为它可能是低效的,因为网络延迟和绑定的可能增长。
我实际上试图在Rubinius做这项工作。 Marshal.dump似乎可行,但序列化的字符串不包含有关任何变量或方法的信息,所以它没用。我会尝试MagLev,我希望它能起作用。谢谢。我其实希望有一个红宝石在线repl。 –
另一种方法可能是使用websockets,它可以保持与服务器的连接。当你完成你的repl会话时,你关闭连接,就是这样。我曾经听说过这样的一次......这可能是它,但我从来没有尝试过它自己:https://github.com/cldwalker/nirvana –
它很好用!谢谢。 –