2009-06-04 12 views
13

मैंने हाल ही में माइग्रेट के माध्यम से अपने डेटाबेस में कुछ SQL फ़ंक्शंस जोड़े हैं, और वे पूरी तरह से ठीक काम करते हैं। कोड काम करता है, डेटाबेस काम करता है, परीक्षण नहीं करते हैं। Schema.rb फ़ाइल मुझे बता रही है कि यह नवीनतम संस्करण (और यह सही है) पर है, लेकिन इसमें केवल टेबल और इंडेक्स के लिए परिभाषाएं हैं, न कि मेरे द्वारा जोड़े गए कार्यों।रेक डीबी क्यों करता है: रेल में माइग्रेट स्कीमा फ़ाइल में फ़ंक्शन नहीं जोड़ता है?

मैंने अपने माइग्रेशन में "निष्पादन()" विधि के माध्यम से फ़ंक्शंस जोड़े, और आरएसपीईसी परीक्षणों के लिए परीक्षण डेटाबेस में उन्हें आवश्यकता है (कंपनी नीति निर्देश देती है कि जब तक यह तय नहीं हो जाता है तब तक मैं यह परिवर्तन नहीं कर सकता) ।

क्या कोई जानता है कि यह क्यों हो रहा है, या इसे कैसे ठीक किया जाए? मैं मैन्युअल रूप से MySQL कमांड लाइन में जा सकता हूं और फ़ंक्शन जोड़ सकता हूं, लेकिन फिर अगली बार जब कोई डीबी करता है तो उसे मिटा दिया जाता है: परीक्षण: तैयार करें। मुझे एक समाधान की आवश्यकता है जिसे स्वचालित किया जा सके।

किसी भी मदद और उत्तर के लिए धन्यवाद,

-माइक Trpcic

उत्तर

12

schema.rb रूबी स्कीमा प्रारूप है और यह काम करता है या कई अन्य अधिक उन्नत सुविधाओं का समर्थन नहीं करता। प्रारूप को सादे एसक्यूएल में बदलें (environment.rb में) और आपको जाने के लिए अच्छा होना चाहिए।

config.active_record.schema_format = :sql 

संपादित करें: माइक टिप्पणी के बाद, मैं खुदाई का एक सा था। स्कीमा को डंप करने के लिए रेक कार्य MySQL और Oracle के लिए ActiveRecord कनेक्शन एडाप्टर में कॉल करता है। MySQL बहुत स्मार्ट नहीं है और केवल बाकी चीजों को अनदेखा कर तालिका संरचना को डंप करता है। PostgreSQL, SQLite, SQL सर्वर और फ़ायरबर्ड एक विक्रेता द्वारा प्रदत्त निष्पादन योग्य को कॉल करें।

mysqldumpdoesn't support dumping stored procedures संस्करण 5.0.13 से पहले।

मैंने रेल लाइटहाउस के चारों ओर देखा, लेकिन खुले टिकटों की खोज करना इससे कहीं अधिक कठिन है। अगर किसी और ने इस पर कोई बग दायर नहीं किया है, तो आप ऐसा करने पर विचार कर सकते हैं, हालांकि पैच के बिना, ऐसा नहीं है कि कोई भी इस पर काम करने जा रहा है।

+1

स्टीव, आपको वह सारी जानकारी मिली है जो मैं नहीं कर सका। धन्यवाद एक टन, अंत में एक जवाब है अच्छा है। –

+0

मैं रूबी प्रारूप को देखना पसंद करता हूं। मेरी इच्छा है कि जब भी डेटाबेस schema.rb से लोड हो रहा है, स्वचालित रूप से चलाने के लिए विशिष्ट माइग्रेशन निर्दिष्ट करने का कोई तरीका था। –

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