2017-02-17 8 views
11

दो ऐप्स हैं। ऐप्स में से एक रेल 4.1.2 का उपयोग कर रहा है। दूसरा ऐप रेल 5.0.1 का उपयोग कर रहा है। यहां बताया गया है कि रेल 5 ऐप कैसे काम करता है: यह जांचता है कि उपयोगकर्ता लॉग इन है:इस त्रुटि को ठीक करना: NameError (अनियमित स्थिर ActiveRecord :: कनेक्शनएडाप्टर :: MySQL 2 एडाप्टर :: कॉलम)

  • यदि उपयोगकर्ता लॉग इन है: तो उपयोगकर्ता आगे बढ़ने में सक्षम होना चाहिए।
  • यदि उपयोगकर्ता लॉग इन नहीं है, तो यह उन्हें रेल 4 ऐप (जहां उपयोगकर्ता लॉग इन कर सकता है) पर रीडायरेक्ट करता है। एक बार जब उपयोगकर्ता रेल 4 ऐप के साथ लॉग इन हो जाता है: उपयोगकर्ता रेल 5 ऐप की कोई समस्या नहीं पहुंच पाता है।

मैं वर्तमान में 5 परियोजना मेरी रेल में निम्नलिखित जवाहरात उपयोग कर रहा हूँ:

Rails.application.config.session_store :active_record_store, :key => ‘SOME_KEY’ 

वर्तमान में:

gem 'mysql2', '~> 0.4.4' 
gem 'activerecord-session_store', '~> 1.0' 

मैं तो मेरे config/initializers/session_store.rb फ़ाइल में निम्न अगर उपयोगकर्ता है लॉग इन नहीं किया गया: फिर यह उपयोगकर्ता को सफलतापूर्वक रीडायरेक्ट करता है। ।

NameError (uninitialized constant ActiveRecord::ConnectionAdapters::Mysql2Adapter::Column) 
  • मैं ध्यान दें कि एप्लिकेशन को सफलतापूर्वक डेटाबेस से कनेक्ट कर रहा है: इस मुद्दे को जब उपयोगकर्ता में लॉग ऑन है मैं उपयोगकर्ता के लॉग इन इस त्रुटि रेल 5 ऐप्स को एक्सेस करने का प्रयास करता मिलता है
  • ऐप प्रारंभिक अनुरोध (जब उपयोगकर्ता लॉग इन नहीं होता है) पर sessions तालिका तक पहुंचने लगता है।

इस त्रुटि को ट्रिगर करने और इसे ठीक करने के तरीके पर कोई सुझाव क्या है? आखिरकार: यह लगभग प्रतीत होता है जैसे rails 5activerecord-session_store और mysql2 के साथ असंगत है।

+0

वहाँ लाइनों पूर्ववर्ती या जहां यह निकलती है के रूप में त्रुटि निम्न में अधिक जानकारी होना चाहिए। – Iceman

+0

@Iceman दुर्भाग्य से: केवल स्टैक ट्रेस। यहाँ अंतिम पंक्ति है: 'activesupport (5.0.1) lib/active_support/Inflector/methods.rb: 270:' में const_get'' – Neil

+0

यह को करीब से देख लो, वहाँ वहाँ में कुछ कोड है कि आप कॉल कर रहे होना चाहिए लॉग इन उपयोगकर्ता के लिए जो इस त्रुटि का उत्पादन करता है। – Iceman

उत्तर

6

हम अंततः इसे समझने में सक्षम थे।

Marshal मॉड्यूल डेटाबेस के लिए माणिक वस्तुओं को क्रमानुसार कर सकते हैं। ऑब्जेक्ट्स को फिर से बनाने के लिए यह डेटाबेस को डेटाबेस से deserialize भी कर सकता है।

जब आप किसी ऑब्जेक्ट को क्रमबद्ध करते हैं, तो वहां कुछ निम्न स्तर की जानकारी दिखाई देती है जो mysql2 कनेक्शन एडाप्टर की तरह होती है।

रेल 5 एप्लिकेशन deserialize डेटा की कोशिश करता है, यह इस त्रुटि फेंकता है क्योंकि लगातार कि रेल 4 के लिए MySql2 कनेक्शन एडाप्टर में मौजूद रेल में मौजूद नहीं है कि एडाप्टर के 5 संस्करण।

हमारे काम के आसपास हमारे रेल 5 ऐप के लिए सत्र तालिका से किसी भी क्रमबद्ध ऑब्जेक्ट को स्टोर या पुनर्प्राप्त करना था। वह चाल है।

अगर हमें वास्तव में हमारे रेल 5 ऐप के लिए सत्र तालिका से धारावाहिक वस्तुओं को पुनर्प्राप्त करने की आवश्यकता होती है: तो मुझे लगता है कि हमें कस्टम समाधान के साथ आना होगा।

आशा है कि इससे भविष्य में दूसरों की मदद मिलेगी!

4

यह हो सकता है रिहाई अर्थात में परिवर्तन के कारण 5.0 रेल।

Ruby on Rails 5.0 Release Notes में के रूप में: कोर से विरासत mysql डेटाबेस एडाप्टर के लिए

हटाया समर्थन करते हैं। अधिकांश उपयोगकर्ता mysql2 का उपयोग करने में सक्षम होना चाहिए। जब हम किसी को इसे बनाए रखने के लिए पाते हैं तो इसे एक अलग मणि में परिवर्तित कर दिया जाएगा।

#tables पर गुजरने वाले तर्कों को अस्वीकार कर दिया गया - कुछ एडाप्टर की #tables विधि (mysql2, sqlite3) दोनों टेबल और दृश्य लौटाएंगे जबकि अन्य (postgresql) बस टेबल लौटाएंगे। अपने व्यवहार को सुसंगत बनाने के लिए, #tables भविष्य में केवल टेबल लौटाएंगे।

निरंतर में

अंतर के रूप में आप अपने जवाब में बताया गया है कि वे mysql2 एडाप्टर के लिए मणि बदलने जा की वजह से हो सकता है।

संबंधित मुद्दे