/ / रेल कैश वस्तुओं के रूप में वापस नहीं करता है, लेकिन स्ट्रिंग्स - रूबी-ऑन-रेल, कैशिंग, रेडिस

रेल कैश ऑब्जेक्ट्स के रूप में वापस नहीं आता है, लेकिन स्ट्रिंग्स - रूबी-ऑन-रेल, कैशिंग, रेडिस

मैं कैश स्टोर के रूप में रेडिस का उपयोग कर रहा हूं, और मैं सामान्य डेटा कैश करना चाहता हूं

@links = Rails.cache.fetch "FriendsLinks" do
Link.where(category_id: 0)
end

लेकिन डेटा वापस आ गया Rails.cache.fetch एक है String, एक सरणी नहीं है List वस्तुओं।

मुझे कैश को रेडियों से हटाना है, फिर अगला अनुरोध काम करेगा। लेकिन बहुत बार, यह फिर से टूट जाएगा।

संपादित करें: यह केवल विकास के माहौल में होता है

उत्तर:

उत्तर № 1 के लिए 1

मैं समस्या स्थित हूँ।

समस्या संबंधित मॉडल है "जब लोड किया गया है जब डेटा को रेडिस / मेम्चे से पुनर्प्राप्त किया जाता है। इसलिए माणिक अनारक्षित प्रदर्शन नहीं कर सकता है।

सरल समाधान सेट करना है

config.cache_classes = true

दोष यह है कि जब आप कोड परिवर्तन करते हैं तो आपको अपना ऐप फिर से शुरू करना होगा।

एक अन्य को संबंधित वर्ग Rails.cache से पहले रखा जाता है, जैसे कि

Link
@links = Rails.cache.fetch "FriendsLinks" do
Link.where(category_id: 0)
end

या एक इनिलाइज़र बनाएं और इसे कॉन्फिगरेशन / इनिशियलाइज़र के नीचे रखें

if Rails.env == "development"
Dir.glob("#{Rails.root}/app/models/**/*.rb") do |model_name|
require_dependency model_name
end
end