2011-10-13 12 views
6

मैं ओएसएक्स पर विकास कर रहा हूं और लिनक्स पर तैनाती कर रहा हूं। मेरे वातावरण हैं:ActiveRecord :: कनेक्शन नॉट स्थापित त्रुटि (उत्सुक लोडिंग?)

विकास:

OSX Lion 
Ruby 1.9.2p180 
ActiveRecord 3.0.9 
PostgreSQL 9.0 

टेस्ट:

Ubuntu Server 11.04 
Ruby 1.9.2p290 
ActiveRecord 3.1.1 
PostgreSQL 9.1 

OSX पर लेकिन लिनक्स पर नहीं कोड काम के निम्न भाग:

ei_doc_type = TaxDoc::Model::DocType.find_by_doc_type("EI") 
doc_version = ei_doc_type.doc_versions.find_by_doc_version(edoc.version) 
customer.electronic_invoices.create(....) 

और:

ei_doc_type = TaxDoc::Model::DocType.find_by_doc_type("EI") 
ei_doc_type.doc_versions.each { |doc_version| 
    @mappings[doc_version.doc_version] = Hash.new 
    doc_version.mappings.each { |mapping| 
    @mappings[doc_version.doc_version][mapping.column_name] = mapping.xml_element 
    } 
} 

जब मैं लिनक्स में कोड के इन टुकड़ों के किसी भी चलाने का प्रयास मैं निम्नलिखित त्रुटि मिलती है:

.../connection_pool.rb:409: in `retrieve_connection': ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished) 

मैं कोड बदल गया है, और यह लिनक्स पर काम करता है:

ei_doc_type = TaxDoc::Model::DocType.find_by_doc_type("EI") 
doc_versions = TaxDoc::Model::DocVersion.where(:doc_type_id => ei_doc_type.id, :doc_version => edoc.version) 
doc_version = doc_version.first 
customer.electronic_invoices.create(....) 

और:

ei_doc_type = TaxDoc::Model::DocType.includes(:doc_versions => :mappings).find_by_doc_type("EI") 
ei_doc_type.doc_versions.each { |doc_version| 
    @mappings[doc_version.doc_version] = Hash.new 
    doc_version.mappings.each { |mapping| 
    @mappings[doc_version.doc_version][mapping.column_name] = mapping.xml_element 
    } 
} 

ऐसा लगता है कि पहले ऑर्डर एसोसिएशन के लिए उत्सुक लोडिंग परीक्षण वातावरण पर काम नहीं कर रही है, और पहले उदाहरण में। यहां तक ​​कि अगर मैं "शामिल" का उपयोग करता हूं तो यह काम नहीं करता है।

क्या ActiveRecord या PostgreSQL पर संस्करणों के बीच कोई अंतर है जो इसका कारण बन सकता है?

class DocType < EDocsDatabase 
    has_many :doc_versions, :dependent => :destroy 
    has_many :mappings, :through => :doc_versions 
    has_many :service_types 
end 

class DocVersion < EDocsDatabase 
    belongs_to :doc_type 
    has_many :mappings, :dependent => :destroy 
end 

class Mapping < EDocsDatabase 
    belongs_to :doc_version 
end 
+0

यह सुनिश्चित करने के लिए कि आपका संस्करण नहीं है, अपना डेटाबेस कनेक्शन स्वैप करें और अपने DEV संस्करण को अपने टेस्ट डेटाबेस से बात करें। आपको पुन: कॉन्फ़िगर करने की आवश्यकता है (और सुनिश्चित करें कि बंदरगाह खुले हैं!), लेकिन कम से कम आप जानते हैं कि इससे इसका कारण हो सकता है। आप इसे उप-कविता भी कर सकते हैं (अपना टेस्ट अपने DEV से कनेक्ट करें)। – Roger

+1

आप अपने सेटअप में 'विकास' और 'परीक्षण' कहते हैं, क्या आप वास्तव में देव और उत्पादन का मतलब है? आपके द्वारा सूचीबद्ध दो वातावरण में एआर के विभिन्न संस्करण हैं। यह मेरे लिए असंभव प्रतीत होता है कि यह एक लिनक्स बनाम ओएसएक्स मुद्दा है, और अधिक संभावना है कि आप अपने दो वातावरण में ActiveRecord के विभिन्न संस्करणों का उपयोग कर रहे हैं, और उनमें से एक में एक बग या अजीब एज केस में चल रहे हैं। पहला चरण दोनों में ActiveRecord के समान संस्करण का उपयोग कर रहा है (जो करना मुश्किल नहीं है, क्या आप Gemfile का उपयोग नहीं कर रहे हैं। उनके बीच समान है? आपको होना चाहिए)। एक बार जब आप यह सुनिश्चित कर लेंगे, तो वापस आएं। – jrochkind

+0

@jrochkind यह वास्तव में देव और परीक्षण है। लेकिन आपने मुझे कुछ ऐसा बताया जो मैंने नहीं देखा है: एआर, रुबी और पोस्टग्रेएसक्यूएल के अलग-अलग संस्करण हैं। मैं इसे जांचूंगा और संस्करणों को ठीक करने का प्रयास करूंगा। मुझे इंगित करने के लिए धन्यवाद। – Ecil

उत्तर

0

क्या संदर्भ आप इस कोड का उपयोग कर रहे हैं:

ये मेरी मॉडल हैं?

कारण है - वर्तमान में ActiveRecord को कुछ कनेक्शन पूल प्रबंधन की आवश्यकता है यदि आप प्रतिक्रिया कोड (जैसे सर्वर में) में अपना कोड चला रहे हैं। रेल इसे एक मिडलवेयर का उपयोग करके संबोधित करते हैं जो आपके मुख्य एप्लिकेशन उत्तरदाता के बाहर आपके लिए एआर कनेक्शन प्रबंधित करता है। हालांकि, अगर आपके पास इस प्रकार का एक रैपर नहीं है तो आपके पास अन्य कनेक्शन दिनचर्या आपके कनेक्शन पूल पर "स्टेपिंग" हो सकती हैं, खासकर जब थ्रेडेड सर्वर का उपयोग करते हैं।

+0

यह समस्या लगभग 2 साल पहले हुई थी और यह मेरे हिस्से पर बंद थी। चिंता के लिए धन्यवाद। – Ecil

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