2012-02-23 17 views
5

मैं अपने प्रोजेक्ट में उपयोग के लिए फ्लाईवे का मूल्यांकन कर रहा हूं। हमारी वर्तमान एसक्यूएल स्क्रिप्ट में यूआरएल जैसी चीजों के लिए प्लेसहोल्डर होते हैं जिनके पास पर्यावरण (देव, क्यूए, प्रोड) के आधार पर एक अलग डोमेन नाम होंगे।प्लेसहोल्डर्स फ्लाईवे में कैसे काम करते हैं?

विशेष रूप से, हम

INSERT INTO FEED VALUES ('app.${env.token}.company.org/feed1', 'My Feed'); 

$ {env.token} की तरह सम्मिलित बयान हो सकता है 'देव', 'क्यूए', या 'prod' के साथ प्रतिस्थापित किया जाना चाहिए।

हमारे पास लगभग 50 अलग-अलग गुण हैं जिन्हें संभावित रूप से एसक्यूएल स्क्रिप्ट में प्रतिस्थापन की आवश्यकता हो सकती है। गुण सभी एक या दो गुण फ़ाइलों में रहते हैं।

क्या फ्लाईवे चींटी माइग्रेशन कार्य चलाने का कोई तरीका है ताकि यह प्रतिस्थापन टोकन और गुणों को गुण फ़ाइल से खींच सके? चींटी फ़िल्टर कार्य की रेखाओं के साथ कुछ?

उत्तर

9

वर्तमान में जब प्लेसहोल्डर को गुणों के रूप में आपूर्ति करते हैं, तो संपत्ति का नाम फ्लाईवे.स्थलधारकों के साथ उपसर्ग किया जाना चाहिए।

उदाहरण के लिए $ {env.token} प्लेसहोल्डर इस चींटी संपत्ति के रूप में सीधे निर्दिष्ट किया जा सकता: flyway.placeholders.env.token

वर्तमान में एक संपत्ति फ़ाइल सीधे पारित करने के लिए कोई समर्थन नहीं है , संपत्ति के नाम के लिए उपसर्ग का उपयोग किए बिना। Issue Tracker में कोई समस्या उठाने के लिए स्वतंत्र महसूस करें।

INSERT INTO FEED VALUES ('app.${subdomain}.company.org/feed1', 'My Feed'); 

flyway.conf में मान: :-)

+1

एक्सेल, क्या आप यहां इस दस्तावेज़ को दस्तावेज़ीकरण में जोड़ सकते हैं: https://flywaydb.org/documentation/migration/sql मैं यहां से पढ़ने से पहले प्लेसहोल्डर्स के सही उपयोग को समझ नहीं पाया। – csonuryilmaz

1

तो टोकन subdomain था

flyway.url=jdbc:mydb://db 
flyway.user=root 
flyway.schemas=schema1 
flyway.placeholders.subdomain=example 

या आदेश पंक्ति:

flyway -url=jdbc:mydb://db -user=root -schemas=schema1 -placeholders.subdomain=example migrate 

के रूप में स्क्रिप्ट चलाने चाहेंगे :

INSERT INTO FEED VALUES ('app.example.company.org/feed1', 'My Feed'); 
संबंधित मुद्दे