मैं ओएसएक्स पर विकास कर रहा हूं और लिनक्स पर तैनाती कर रहा हूं। मेरे वातावरण हैं: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
यह सुनिश्चित करने के लिए कि आपका संस्करण नहीं है, अपना डेटाबेस कनेक्शन स्वैप करें और अपने DEV संस्करण को अपने टेस्ट डेटाबेस से बात करें। आपको पुन: कॉन्फ़िगर करने की आवश्यकता है (और सुनिश्चित करें कि बंदरगाह खुले हैं!), लेकिन कम से कम आप जानते हैं कि इससे इसका कारण हो सकता है। आप इसे उप-कविता भी कर सकते हैं (अपना टेस्ट अपने DEV से कनेक्ट करें)। – Roger
आप अपने सेटअप में 'विकास' और 'परीक्षण' कहते हैं, क्या आप वास्तव में देव और उत्पादन का मतलब है? आपके द्वारा सूचीबद्ध दो वातावरण में एआर के विभिन्न संस्करण हैं। यह मेरे लिए असंभव प्रतीत होता है कि यह एक लिनक्स बनाम ओएसएक्स मुद्दा है, और अधिक संभावना है कि आप अपने दो वातावरण में ActiveRecord के विभिन्न संस्करणों का उपयोग कर रहे हैं, और उनमें से एक में एक बग या अजीब एज केस में चल रहे हैं। पहला चरण दोनों में ActiveRecord के समान संस्करण का उपयोग कर रहा है (जो करना मुश्किल नहीं है, क्या आप Gemfile का उपयोग नहीं कर रहे हैं। उनके बीच समान है? आपको होना चाहिए)। एक बार जब आप यह सुनिश्चित कर लेंगे, तो वापस आएं। – jrochkind
@jrochkind यह वास्तव में देव और परीक्षण है। लेकिन आपने मुझे कुछ ऐसा बताया जो मैंने नहीं देखा है: एआर, रुबी और पोस्टग्रेएसक्यूएल के अलग-अलग संस्करण हैं। मैं इसे जांचूंगा और संस्करणों को ठीक करने का प्रयास करूंगा। मुझे इंगित करने के लिए धन्यवाद। – Ecil