你正在嘗試做什麼是可能,但遠非微不足道,Rails也不提供任何內置支持。實際上,您需要下載到操作系統級別以完成此操作,並且如果您擁有多臺物理服務器,則會變得更加複雜。
首先,您不能在會話中存儲連接。事實上,你不想來存儲的原因有很多出席會議的所有Ruby對象,包括但不限於:
- 某些類型的對象都有麻煩正在編組/解組
- 部署,如果能打破東西模式的變化和人民有outdates東西連載於他們的會話
- 如果您在使用cookie會話存儲那麼你只有4K
所以在一般情況下,你永遠只希望把像字符串,數字和布爾元進入會議。
現在就FTP連接而言,這屬於無法可靠序列化/非序列化的事物類別。原因是因爲它不僅僅是一個Ruby對象,而且還有一個打開的套接字,一旦原始對象被垃圾收集,它就會被關閉。
因此,爲了保持FTP連接持久性,它不能存儲在控制器實例變量中,因爲控制器實例是每個請求。你可以嘗試在控制器實例之外的地方實例化它,但是如果你不仔細清理連接,那麼就有可能發生內存泄漏,而且如果你有多個應用服務器實例,那麼你也需要找到一種方法來保證用戶在每個請求中與同一個應用程序服務器實例通話,否則將無法找到掛鉤。總而言之,在Ruby進程中保持會話是開放的。
你需要做的是在一個單獨的進程中打開連接,任何ruby進程都可以與之通話。真的沒有確定的標準方式來做到這一點,你必須推出自己的。你可以看看DRb來提供你需要的一些原語。
來源
2010-04-30 18:43:28
gtd
該死的我回答了你的其他問題,然後你刪除了它......我會在這裏張貼一秒鐘,堅持下去。 – gtd 2010-04-30 18:29:02
對不起:) – 2010-04-30 19:25:44