2016-02-14 5 views
11

मेरे पास एक रेल ऐप था जो पूरी तरह से 3 और रेल के साथ चल रहा था 4. मैंने रेल को 5 तक अपडेट किया और यह DEPRECATION WARNING: alias_method_chain is deprecated दिया। तो मुझे devise संस्करण को 4.0.0.rc1 में बदलना पड़ा।रेल 5 और डेविस 4.0.0.rc1 को अद्यतन करने के बाद, devise प्रमाणीकरण_user! विधि को परिभाषित नहीं किया गया है

अब यह वसीयत की तरह authenticate_user!, is_admin तरह के तरीकों नहीं पैदा कर रहा लगता है आदि ..

मैं हो रही है निम्न त्रुटि

Before process_action callback :authenticate_user! has not been defined (ArgumentError) 

मैं सहित सब कुछ करने की कोशिश की, स्थापना रद्द करें वसीयत और फिर से स्थापित, फिर स्क्रैच से एक अलग मॉडल बनाने की कोशिश की और अभी भी विधियों को परिभाषित नहीं किया गया है।

कोई विचार कृपया?

+0

क्या इस पर कोई अपडेट है? मैं रेल 5 पर क्रमिक जुड़ाव को लागू करने की कोशिश कर रहा हूं और विकी के बाद समान त्रुटियां प्राप्त कर रहा हूं। –

+1

मुझे यकीन नहीं है कि आपको वास्तव में कौन सी त्रुटियां मिलती हैं, मेरे मामले में यह रेलवे 5 में एक फीचर अपग्रेड था जहां इसे अतिरिक्त पैरामीटर जोड़कर ठीक किया जा सकता है, मैंने इसे स्वीकृत उत्तर में उल्लेख किया है। मैं 'binding.pry' डीबग स्टेटमेंट डालकर फ़ाइलों का निरीक्षण करके समस्या का पता लगा सकता हूं यदि आप इसे टर्मिनल से चला रहे हैं तो आपको फ़ाइल पथ और रेखा संख्या मिल सकती है जो त्रुटि को फेंकता है, इसलिए बस न करें इसमें गोता लगाने के लिए डरो। – Hassan

उत्तर

6

मैं रेल 5 में समस्या की पहचान कर सकता हूं, अगर कॉलिंग विधि को कॉल करने के समय परिभाषित नहीं किया जाता है तो हम अपवाद करेंगे जब तक हम :unless स्थिति जोड़ते हैं।

+0

क्या आप अधिक जानकारी प्रदान कर सकते हैं कि आपने इसे कैसे ठीक किया? –

+2

अब के लिए मैंने 'config.eager_load = false' को' config/वातावरण/production.rb' में वर्कअराउंड के रूप में सेट किया है। –

+2

मुद्दा यह था कि रेल 5 में, स्किप कॉलबैक विकल्प एक अपवाद फेंक देगा यदि विधि को छोड़ना चाहते हैं तो परिभाषित नहीं किया गया है। मेरे कोड में मैं प्रमाणीकरण_यूसर छोड़ रहा हूं! ऐप की शुरुआत पर विधि, उस समय विधि परिभाषित नहीं की गई है, बाद में विधियों को परिभाषित करता है। यदि हम चाहते हैं कि रेल अपवाद फेंक न दें, तो हमें निम्न प्रकार का एक और खंड उपयोग करना होगा: 'डेविस :: सत्र कंट्रोलर.स्किप_बेर_एक्शन: प्रमाणीकरण_यूसर !, उठाएं: झूठी' – Hassan

1

चिंतन करना अपने आप में rails5 समर्थन भूमि तक, तो आप इस कांटा आज़मा सकते हैं:

gem 'devise', github: 'twalpole/devise', branch: 'rails5' 
+0

यह कुछ और स्पष्टीकरण के साथ कर सकता है। –

+2

यह शायद पुराना है - कि कांटा 3 महीने पुराना है और अब मास्टर के समान परिवर्तन हैं – Vasfed

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