2011-12-02 7 views
13

मैं डेविस के लिए एक एक्सटेंशन लिखना चाहता हूं जो आपको डेटास्टोर (ActiveRecord के विपरीत) के रूप में parse_resource का उपयोग करने की अनुमति देता है। parse_resource Parse.com के आरईएसटी एपीआई के लिए एक रूबी रैपर है। यह इंटरफ़ेस ActiveRecord की तरह ही काफी है और ActiveModel शिकायत है। इस वजह से, ऐसा लगता है कि डेविस के लिए एक एक्सटेंशन को बहुत अधिक गैर-बॉयलरप्लेट की आवश्यकता नहीं हो सकती है।डेविस एक्सटेंशन (कस्टम डेटास्टोर का उपयोग करने के लिए) कैसे लिखें

हालांकि, मुझे कोई ट्यूटोरियल नहीं मिल रहा है। मुझे बस अन्य एक्सटेंशन के स्रोतों पर भरोसा करना है। MongoMapper extension से, मैं इकट्ठा दो मुख्य भागों देखते हैं कि:

  1. The generators (काफी आवश्यक नहीं)

    यहाँ आप DeviseGenerator#(generate_model|inject_devise_content|replace_default_devise_orm) तरीकों के ऊपर लिख।

  2. The "guts "(बहुत ज्यादा) की आवश्यकता

    मैं नहीं काफी के रूप में यकीन है कि यहाँ क्या हो रहा है। ऐसा लगता है वहाँ कस्टम प्रकार कास्टिंग का एक छोटा सा के साथ बॉयलरप्लेट का एक बहुत है कि,, और कम से नीचे वहाँ एक घोषणा है कि हम इस विस्तार का उपयोग किया जाएगा बजाय डिफ़ॉल्ट ORM की है।

यह सब करने के लिए है कि वहाँ है? क्या मैं याद आ रही हूँ? कोई व्याख्या कर सकते हैं क्या "हिम्मत" में होता है एक में थोड़ा अधिक विस्तार?

डेविस के साथ पूर्ण संगतता सुनिश्चित करने के लिए चलाने के लिए कोई आसान लिंट परीक्षण है?

+0

क्या आपने कभी इसे बनाया है या कोई विकल्प खोजा है? – emkman

उत्तर

1
एक अच्छी शुरुआत आप के रूप में अच्छी couchDB विस्तार और Riak विस्तार की जाँच कर सकते हैं

। आप देख सकते हैं कि Hook module में आप जो कुछ भी चाहते हैं उसे ओवरराइड करें/देवता को काम करने के लिए जरूरी है।

क्या आप नीचे class_eval घोषणा देख सकते हैं? वहाँ आप Devise::Models मॉड्यूल है, जो (प्रसिद्ध devise विधि as you can see सहित) सभी आवश्यक विधियों, और अगलेHooks मॉड्यूल के साथ (MongoMapper विस्तार रखती है अगर आप कुछ भी ओवरराइड करना चाहते के साथ (अपने मामले ParseResource::Base में) वर्ग का विस्तार कुछ भी ओवरराइड करने की आवश्यकता नहीं है, यही कारण है कि इस विधि का उपयोग नहीं कर रहा है)। इस प्रकार आप लिखना चाहिए:

module Devise 
    module Orm 
    module ParseResource 
     module Hooks 
     # here you define any overrides 
     end 
    end 
    end 
end 

ParseResource::Base.class_eval do 
    extend Devise::Models 
    extend Devise::Orm::ParseResource::Hooks 
end 

उसके बाद आप चाहिए require 'devise/orm/parse_resource' (यह मानते हुए आप फ़ाइल parse_resource.rb नाम दिया) अपने #{Rails.root}/config/initializers/devise.rb प्रारंभकर्ता में। उम्मीद है कि मैंने थोड़ा सा मदद की :)

3

मुझे लगता है कि सबसे अच्छा तरीका पार्स संसाधन के लिए orm_adapter एडाप्टर लिखना होगा। यह विभिन्न orms के साथ devise के एकीकरण के असली "हिम्मत" है।

यह वास्तव में बहुत सरल है और इसमें test suite शामिल है जिसका आप उपयोग कर सकते हैं। Parse_resource को ध्यान में रखते हुए सक्रिय मॉड्यूल अनुपालन है, एडाप्टर को existing adapter क्लोन करने जितना आसान होना चाहिए।

इसके बाद आप orm_adapter में हुक करने के लिए वसीयत, जो सिर्फ इन files में से एक का क्लोन है की आवश्यकता होगी।

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