2011-02-11 212 views
1

我有一個Rails應用程序,包括聊天。一切正常,但現在我想將最後的50條聊天消息存儲在某處。如果頁面重新加載,我需要它顯示最後的消息。我不想使用數據庫。將它存儲在某種數組中會很好,但Rails是無狀態的。我希望在你的幫助下讓它更具有狀態。Stateful Rails應用程序。不在數據庫中存儲數據

THX

UPD

我發現PStorehttp://www.ruby-doc.org/stdlib/libdoc/pstore/rdoc/classes/PStore.html)。它對我來說很不錯,不是嗎?

回答

2
  • 你簡單的答案是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作爲寶石。兩者都是純文本文件格式,您可以轉儲到文件,查看並再次加載。

  • 你說你「不想要數據庫」,但你不會說爲什麼。你知道SQLite有一個文件的數據庫,很容易安裝,並且快速和輕量級?

0

你應該看看Redis

+0

對於存儲50行數據來說不是太大的解決方案嗎? – fl00r 2011-02-11 21:19:46

+0

運行起來非常簡單,而且您可以輕鬆找到其他用途(緩存,消息隊列,作業隊列),但是如果確實只保留了50行,那麼很可能。 – danivovich 2011-02-12 04:08:44

相關問題