2011-03-10 105 views
0

我開始與紅寶石和我們的團隊領導發送給我們學習Sinatra,重新加載應用程序的變化是由Shotgun完成的,我現在的問題是我有一個Singleton實體 ,我希望保持狀態請求,但通常Shotgun重啓是每個請求。在這個Ruby Singleton和Shotgun

任何幫助或解釋是apreciated,提前

感謝。

回答

4

你不應該指望你的應用程序的狀態什麼請求之間在所有被保存(獵槍或沒有),除非它被保存在會話數據。

+1

是的,這是會議的確切原因。 HTTP是一種無狀態協議,服務器不希望在連接之間保持狀態。 – 2011-03-10 22:19:57

+0

我明白這對HTTP,但那不是問題,即時通訊意識到,HTTP是無狀態的,這就是爲什麼使用這個單,以存儲甚至diferent用戶請求的數據,所以這就是爲什麼會議沒有按」聊天室對我來說將不起作用,也不要現在要存儲數據到數據庫,這個想法僅僅是應用程序運行時kkep的數據,這些數據應該存儲到一個SARED對象爲整個應用程序,這似乎不工作shoutgun,(簡單Sinatra的紅寶石app.rb「),但是當我來到重裝獵槍它打破 – enkult 2011-03-11 14:57:44

+1

不管它是一種不可靠的方法。在生產中,您可能會同時運行多個進程,並且他們將無法以這種方式彼此共享。如果您重新啓動Web服務器,或者它崩潰並重新啓動,您將失去狀態。如果您需要爲所有用戶存儲持久數據,則需要在應用程序之外的某種持久數據存儲(SQL,Redis,Memcached等)。 – 2011-03-11 16:52:00

1

對於你需要設置的關鍵會議獵槍堅持......否則,它與每一個頁面加載復位。

enable :sessions 
set :session_secret, "yourKey"