2013-04-17 115 views
0

我有一個帶PubSub服務器(Faye)作爲中間件的Rails應用程序..我有模型,視圖和控制器的通常的Rails結構,和我有我的Socket通道某些控制器..(由FayeRails提供)如何共享從不同類繼承的兩個類之間的數組

問題: 我需要我的插座控制器和我一般控制器之間共享客戶名單。 這是因爲認證通過Rails控制器做(所以我能夠使用會話)..

通常我會把這種東西在我ApplicationController所以所有繼承的控制器和視圖可以得到它,但插座控制器是從FayeRails::Controller繼承,所以這不是一個選項..我不知道這些控制器的實例去哪裏..此外,我不能編輯初始化,因爲所有的控制器都由Rails和FayeRails自動設置寶石。我嘗試過使用全局變量,但感覺不對。另外我一直在考慮ActiveRecord,但將快速變化的數據添加到數據庫並不合適。最後,我通過一個類似ActiveRecord的類來保存列表中,但這種感覺同樣作爲全球..

我真的不能想到的任何其他方式分享這兩個控制器之間的客戶名單..

什麼將是一個非常乾淨的方式這樣做?

+0

試過的會話?或者也許是一個軌道緩存或Redis? – omarvelous

+0

我沒有遇到過Faye控制器中的任何會話用法,從來沒有使用Redis或Rails緩存,但如果這就是解決這些問題的方法,我一定會檢查它們!我會回來讓你知道他們如何解決..謝謝! –

+0

Redis是要走的路!感謝您的支持! –

回答

0

你可以把你需要的模塊放在lib目錄下。將它包含在application_controller中,然後擴展主要的FayeRails控制器,並在其中包含模塊。要擴展,只需在你的控制器文件中創建一個具有相同名稱的新文件,可能確保類名相同,然後在你的config/initializers/extensions.rb文件中要求它。

# config/initializers/extensions.rb 
require "#{Rails.root}/app/controllers/whatever_controller.rb" 

至於速度,是啊,如果你擔心,我會考慮讓你在持久的Redis數據庫所需要的。但是,如果FayesRails使用ActiveRecord方法,我不確定這將是多麼容易/困難。

+0

我會先嚐試Redis,我可以避免使用Faye的ActiveRecord回調中的構建,我猜測..謝謝! –

+0

嘗試Redis ATM,工作恰到好處!我想我會將redis邏輯封裝在'lib'文件夾中的某個模塊中,以防應用程序增長以保持組織有序。所以,再次感謝! –

相關問題