我有一个 Rails 应用程序,其中包括聊天。一切正常,但现在我想将最后 50 条聊天消息存储在某个地方。如果重新加载页面,我需要它来显示最后的消息。我不想使用数据库。将它存储在某种数组中会很好,但 Rails 是无状态的。我希望在您的帮助下使其更具状态。
谢谢
更新:
我找到了PStore
(http://www.ruby-doc.org/stdlib/libdoc/pstore/rdoc/classes/PStore.html)。这对我来说看起来很不错,不是吗?
我有一个 Rails 应用程序,其中包括聊天。一切正常,但现在我想将最后 50 条聊天消息存储在某个地方。如果重新加载页面,我需要它来显示最后的消息。我不想使用数据库。将它存储在某种数组中会很好,但 Rails 是无状态的。我希望在您的帮助下使其更具状态。
谢谢
更新:
我找到了PStore
(http://www.ruby-doc.org/stdlib/libdoc/pstore/rdoc/classes/PStore.html)。这对我来说看起来很不错,不是吗?
您最简单的答案是Marshal,因为它是 Ruby 核心的一部分。只需将您的实际阵列作为二进制文件转储到磁盘并根据需要读回即可。
MYDB = 'mydb.marshal'
# Write to disk
last_50 = [ "foo", "bar" ]
File.open( MYDB, 'wb' ){ |f| f << Marshal.dump( last_50 ) }
# Load from disk
last_50 = Marshal.load( File.open( MYDB, 'rb' ){ |f| f.read } )
p last_50
#=> ["foo", "bar"]
如果您希望文件格式是人类可读的,请尝试将YAML(Ruby 标准库的一部分)或JSON作为 gem。两者都是纯文本文件格式,您可以转储到文件、查看并再次加载。
你说你“不想要数据库”,但你没有说为什么。您知道SQLite将其数据库放在一个文件中,易于安装,而且快速轻量级吗?
你应该看看Redis