आयात / निर्यात से कॉन्फ़िगरेशन को छोड़ दें


16

मुझे लगा कि यह नई कॉन्फ़िगरेशन प्रबंधन प्रणाली का एक सरल उपयोग मामला था, लेकिन मुझे यह पता लगाने का कोई भाग्य नहीं था कि इसे कैसे हल किया जाए:

मुसीबत

मैं कॉन्फ़िगरेशन को git में संग्रहीत करना चाहता हूं और विकास के दौरान कॉन्फ़िगरेशन को निर्यात करने के लिए ड्रश का उपयोग करता हूं और फिर तैनाती को कॉन्फ़िगरेशन आयात करता हूं। Drupal 7. में एक सुविधाओं को वापस करने के समान सुंदर है। मेरी समस्या यह है कि मैं विभिन्न एकीकरणों के लिए git में एक्सेस कोड स्टोर नहीं करना चाहता। इसके परिणामस्वरूप इन कॉन्फ़िगरेशन को हटाया जा रहा है
$ drush cim -y

जहां मैंने देखा

मैं उम्मीद कर रहा था कि विन्यास के लिए एक सरल सूची / विन्यास होगा जिसे आयात / निर्यात पर बाहर रखा जाना चाहिए। ऐसा लगता है कि कुछ बिंदु पर था, लेकिन इसे फिर से हटा दिया गया होगा, क्योंकि यह वर्तमान ड्रुपल 8 रिलीज पर उपलब्ध है।

मैंने देखा कि कैसे सक्रिय और सिंक storange की तुलना करने के लिए कॉन्फ़िगर परिवर्तन किए जा रहे हैं, यह देखने के लिए कि क्या कोई जगह है जहां मैं बदलावों को हटा सकता हूं, यह मामला नहीं लगता था। मैंने यह देखा कि विन्यास कैसे आयात करता है, क्योंकि इसमें कुछ विन्यास है जो स्वयं का है, लेकिन ऐसा नहीं लगता कि यह एक्स्टेंसिबल था। मैंने देखा ConfigEvents, लेकिन ये सब एक आयात के बाद होता है, इसलिए ऐसा नहीं लगता है कि इसका उपयोग किया जा सकता है।

क्या मुझे कुछ याद आ रहा है, या आयात / निर्यात से विन्यास को बाहर करना संभव नहीं है?

जवाबों:


7

विशेष रूप से बाहर करना संभव नहीं है , लेकिन कुछ है।

Drupal 7 में $ कॉन्फिडेंस की तरह, सेटिंग्स में $ config है। ऐसे में आप स्थानीय रूप से कॉन्फ़िगरेशन में कुछ भी ओवरराइड करने के लिए उपयोग कर सकते हैं। प्रारूप है $config['name.of.config']['nested']['key']

ध्यान दें कि कॉन्फ़िगरेशन में जो कुछ भी संग्रहीत किया गया है वह अभी भी गिट में है, इसलिए आपको या तो किसी को भी या अपने परीक्षण एक्सेस कोड को रखने की आवश्यकता है। इसके अलावा, UI दिखाएगा कि वास्तव में कॉन्फ़िगरेशन में क्या संग्रहीत है और वर्तमान में कोई संकेत नहीं देगा कि यह ओवरराइड है। इसमें सुधार करने के लिए लंबित मुद्दे हैं।

मैं समझता हूं कि इसकी सीमाएँ हैं, लेकिन अभी, यह संभव नहीं है कि कुछ निर्यात कॉन्फ़िगरेशन से बाहर रखा जाए। जहाँ तक मुझे पता है।


इसलिए मूल रूप से, आपको इंटरफ़ेस का उपयोग करने के बजाय अपनी सेटिंग्स में कॉन्फ़िगरेशन सेट / अपडेट करना होगा।
googletorp

हां, यह कोई नई बात नहीं है। डी 8 में इस संदर्भ में वर्कफ़्लो में कुछ भी नहीं बदला है।

11

आप "कॉन्फ़िगर उपेक्षा" मॉड्यूल का उपयोग कर सकते हैं: https://www.drupal.org/project/config_ignore

कभी अनुभव किया है कि आपकी साइट का कॉन्फ़िगरेशन फ़ाइल सिस्टम पर कॉन्फ़िगरेशन द्वारा ओवरराइड किया गया था, जब एक ड्रिम सीम कर रहा था?

अब और नहीं!

यह मॉड्यूल एक ऐसा उपकरण है जिससे आप अपनी इच्छित कॉन्फ़िगरेशन रख सकते हैं।


2
config_ignore वर्तमान में उपलब्ध सबसे स्थिर और सरल समाधान है, और यह समाधान संभवतः ओपी की इच्छा को संबोधित करता है कि "विन्यास के लिए एक सरल सूची / कॉन्फ़िगरेशन है जिसे आयात / निर्यात पर बाहर रखा जाना चाहिए"
bdanin

7

आप इसके लिए config_ignore और config_split के संयोजन का उपयोग कर सकते हैं ।

कॉन्फ़िगरेशन की अनदेखी आपको आयात के दौरान कॉन्फ़िगरेशन संस्थाओं के सबसेट को अनदेखा करने की अनुमति देता है (2.x रिलीज़ के बाद से हटाए जाने से बचाता है)। दुर्भाग्य से यह निर्यात के दौरान कॉन्फ़िगर को छोड़कर नहीं रोकता है।

निर्यात के दौरान कॉन्फ़िगरेशन संस्थाओं को बाहर करने के लिए, आप config_split का उपयोग कर सकते हैं, एक नया config_split इकाई बना सकते हैं, और फ़ोल्डर को खाली छोड़ सकते हैं। यह कॉन्फ़िगरेशन को फ़ाइल सिस्टम में निर्यात होने से रोकता है; इसके बजाय, यह इसे डेटाबेस में निर्यात करता है।

मैंने इस विषय के बारे में Drupal 8 में विन्यास प्रबंधन से बहिष्कृत विन्यास लिखा ।


5

कॉन्फ़िगरेशन को विभाजित करने के लिए आप https://www.drupal.org/project/config_split का उपयोग कर सकते हैं ।

फ़िल्टरिंग कॉन्फ़िगरेशन को आयात और निर्यात करने के लिए ड्रुपल कंसोल कमांड प्रदान करने वाला config_split दर्ज करें। Drush इंटीग्रेशन के जल्द ही फॉलो होने की संभावना है (सभी फ़िल्टर ड्रम के --skip- मॉड्यूल फिल्टर से प्रेरित है)।

आप निर्यात को अलग-अलग dirs में विभाजित कर सकते हैं जिसे आप बाद में अनदेखा कर सकते हैं।

CMI पहल के प्रभारी लोगों द्वारा ड्रुपल कॉन डब्लिन 2016 में एक बहुत अच्छी प्रस्तुति थी, जो मैं आपसे आग्रह करता हूं कि आप किसी भी चीज की जांच न करें।


2

मैंने सिर्फ # 1 उत्तर में @berdir का परीक्षण किया और यह पूरी तरह से चला। केवल मैं एक छोटा नोट जोड़ता हूं: आपको इस संस्करण में संपूर्ण कॉन्फ़िगरेशन डालना होगा, पूर्ण करना होगा। इसे कॉन्फ़िगर करें, $ config var सही तरीके से न चले।

कुछ इस तरह:

 $config['language.negotiation'] = array(
  'session' => array(
    'parameter' => 'language',
  ),
  'url' => array(
    'source' => 'domain',
    'prefixes' => array(
      'es' => '',
      'pt-br' => '',
    ),
    'domains' => array(
      'es' => 'YourLocalDomain',
      'pt-br' => 'Anotherlocaldomain',
    ),
  ),
  'selected_langcode' => 'site_default',
  'langcode' => 'es',
);

प्रलेखन: https://www.drupal.org/node/1928898

उपरोक्त दस्तावेज से ध्यान दें: "ध्यान दें कि सेटिंग्स के भीतर $ config के माध्यम से मान अधिक हो गए हैं। Drpal नेटवर्क इंटरफ़ेस से देखने योग्य नहीं होगा।"


3
आपको ऐसा नहीं करना चाहिए। इसे आपके द्वारा परिभाषित किसी भी मूल्य में विलय करना चाहिए, लेकिन शायद यह कुछ संरचनाओं के साथ अपेक्षित रूप से काम नहीं करता है।
बर्दिर

ओह, मैं इसे सही ढंग से चलाने के लिए नहीं बना सकता। मैं इसे फिर से डिबग करने की कोशिश करूंगा और अगर सही तरीके से नहीं चला तो शायद मैं d.org में बग खोल सकता हूं। धन्यवाद!
एस्टोयोसेंट

1
मैं पुष्टि कर सकता आप की तरह कुछ कर सकते हैं कि$config['module.settings']['some']['value'] = 'foo';
googletorp

2

मुझे कुछ आश्चर्य है कि किसी ने भी अब तक Drush CMI टूल्स का उल्लेख क्यों नहीं किया । जादुई शब्द हैं drush cexyऔर config-ignore.yml। आपके पास एक सूची होगी जिसे आप समायोजित कर सकते हैं। हमें एक बार ब्लॉक इंस्टेंसेस को ब्लॉक करने की आवश्यकता है, जबकि उसी समय ब्लॉक बेस संसाधित हो गए थे।

हम सभी कॉन्फ़िगरेशन को निर्यात करना चाहते हैं, लेकिन हम कुछ पैटर्न को बाहर करना चाहते हैं।

यह वह जगह है जहाँ --ignore-listविकल्प drush cexyआता है।

हमारे प्रोजेक्ट में हमारे पास ./drush फोल्डर है, इसलिए हम एक फाइल को उनके तथाकथित config-ign.yml में स्टिक के साथ चिपका देते हैं।

ignore:
  - field.field.contact_message.*
  - field.storage.contact_message.*
  - contact.form.*
  - core.entity_form_display.contact_message*
  - core.entity_form_display.contact_form*
  - core.entity_view_display.contact_message*
  - core.entity_view_display.contact_form*
  - system.site
  - workbench_email.workbench_email_template.*

तो अब हम drush cexyऐसे ही दौड़ते हैं

drush cexy --destination=/path/to/config-export --ignore-list=/path/to/drush/config-ignore.yml

तो यह जो करता है वह सक्रिय कॉन्फ़िगरेशन को निर्यात करता है, और फिर अवांछित कॉन्फ़िगरेशन को हटाने के लिए उपेक्षा सूची को लागू करता है।

तो अब जब आप चलाते हैं तो आपको git statusकेवल उन परिवर्तनों को देखना चाहिए जो आप करना चाहते हैं।

स्रोत: https://www.prepretnext.com.au/blog/introducing-drush-cmi-tools

स्थापना

cd ~/.drush
wget https://raw.githubusercontent.com/previousnext/drush_cmi_tools/8.x-1.x/drush_cmi_tools.drush.inc
drush cc drush

स्रोत: https://github.com/prepretnext/drush_cmi_tools


1

कॉन्फ़िगर विभाजन का उपयोग करना (अनुशंसित)

Config विभाजन मॉड्यूल इस जरूरत के लिए विशेष रूप बनाया गया था।

कॉन्फ़िगरेशन विभाजन ड्रश के साथ एकीकृत है।

केवल Drush का उपयोग करना

ड्रश यह भी है कि --skip-modulesध्वज का उपयोग करने में सक्षम होना चाहिए ।

आप इसे अपने आप करने के लिए अपने प्रोजेक्ट के वेबरूट में एक drupal / drushrc.php में निम्न पंक्तियाँ जोड़ सकते हैं।

$command_specific['config-export']['skip-modules'] = array('devel');
$command_specific['config-import']['skip-modules'] = array('devel');

Http://www.drush.org/en/master/config-exporting/#ignoring-development-modules देखें

अफसोस की बात है कि इस कार्यक्षमता के साथ एक बग है : https://github.com/drush-ops/drush/issues/1820 । तो फिलहाल आपको अपने .gitignore में उन कॉन्फिग फाइलों को जोड़ने की जरूरत है ताकि एक्सपोर्ट की हुई कॉनफिगर फाइल्स कमिट न हों। इनका चलन संभवतः इस (बग्गी) कार्यक्षमता को ड्रिप से अलग करने के लिए होता है।


2
Git में कॉन्फिग फाइल को इग्नोर करना बिलकुल काम नहीं करता है। निर्यात नहीं किया गया कॉन्फ़िगरेशन हटा दिया जाएगा। उदाहरण के लिए, कस्टम पैनल पृष्ठ कॉन्फ़िगर करने पर आयात हटा दिए जाएंगे।
17

@ user157272 भले ही आप ['config-import'] ['स्किप-मॉड्यूल्स ’] के साथ ड्रश इम्पोर्ट करें?
गागरिन

drushrc.php को वेबरॉट के बाहर भी रखा जा सकता है। उदाहरण के लिए एक स्तर ऊँचा, जो कि कंपोजर सेटअप में Drupal के साथ काम करने पर उपयोगी होता है: github.com/drupal-composer/drupal-project
लेमनक्स

यह मेरे लिए काम नहीं किया। मैंने मॉड्यूल जोड़े, फिर भी वे अभी भी सक्षम / अक्षम मॉड्यूल कॉन्फ़िगर किए गए थे।
जेरेमी जॉन

मैंने वर्तमान सर्वोत्तम अभ्यास (
कॉन्फिगर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.