2011-05-29 12 views
6

मैं एक रेल इंजन विकसित कर रहा हूं जो ओथ तंत्र को किसी तीसरे पक्ष के साथ संभालता है। मैं एक संरचना विशेषता में सभी विन्यास करना चाहते हैं, इसलिए सभी इंजन config डेटा एक साथ संग्रहीत किया जाता है:रेल इंजन कॉन्फ़िगरेशन

require 'rails' 


module ThirdParty 
    class Engine < ::Rails::Engine 

    initializer "third-party.some_init_task" do |app| 
     ThirdPartyConfig = Struct.new(:uri, :client_id, :client_secret, :redirect_uri) 

     app.config.thirdparty = ThirdPartyConfig.new 
     app.config.thirdparty.uri = "https://thirdparty.com" 
     app.config.thirdparty.client_id = "" 
     app.config.thirdparty.client_secret = "" 
     app.config.thirdparty.redirect_uri = "" 
    end 
    end 
end 

विन्यास में से कुछ अनुप्रयोग स्तर initializers में परिभाषित किया जाना चाहिए:

class Application < Rails::Application 

    config.thirdparty.client_id = <valid_client_id> 
    config.thirdparty.client_secret = <valid_client_secret> 
    config.thirdparty.redirect_uri = <redirect_uri> 
end 

लेकिन config.thirdparty के रूप में अभी भी अनुप्रयोग प्रारंभकर्ता लोड करते समय अपरिभाषित है, यह विफल रहता है।

उत्तर

7

अपने इंजन में प्रारंभकर्ता के लिए लोड ऑर्डर निर्दिष्ट करने का प्रयास करें। एप्लिकेशन कॉन्फ़िगरेशन चलाने से पहले आपको इसे लोड करने के लिए मजबूर होना चाहिए। यहां एक अनुमान है कि आप अपना प्रारंभिक

initializer "third-party.some_init_task", :before=> :load_config_initializers do |app| 

यदि यह काम नहीं करता है, तो इसे किसी अन्य प्रारंभकर्ता से पहले लोड करने का प्रयास करें।

+0

धन्यवाद @cowboycoded !! मैंने application.rb में इसे लिखने के बजाय एप्लिकेशन कॉन्फ़िगरेशन डेटा को प्रारंभकर्ता में बदल दिया है। मैंने आपके द्वारा सुझाए गए रेल इंजन में पैरामीटर से पहले: इसके लिए एक मान्य मान निर्धारित किया है। वास्तव में आपकी मदद योग्य !!! – juandebravo

+0

@juandebravo आपने 'पहले से' प्रविष्टि को क्या मूल्य दिया था? – vemv

-1

आप मेजबान/मुख्य आवेदन के माध्यम से रेल इंजन कॉन्फ़िगर कर सकते

Initializing object within devolopment.rb envirorment using gem within rails mountable engine

+0

आपके पास एक उत्तर है जो एक और समस्या हल करता है - बढ़िया! यह लोगों को अन्य प्रश्नों को देखने में मदद कर सकता है - यह भी महान! आपको क्या करना चाहिए, फिर, खुद से पूछें कि क्या _questions_ डुप्लीकेट हैं। यदि ऐसा है, तो उन्हें ध्वजांकित करें। यदि वे डुप्लीकेट नहीं हैं, तो हो सकता है कि आप इस प्रश्न का विशेष उत्तर देने के लिए अपने अन्य उत्तर को तैयार कर सकें। अन्यथा, _comment_ आपके उत्तर की ओर एक निशान मार्कर प्रदान करने का सबसे उपयुक्त तरीका होगा। – Mogsdad

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