16

मैं अपने मॉडल के संस्करण की अनुमति देने के लिए एक प्लगइन/एक्ट की तलाश में हूं। उपलब्ध समाधानों की सूची ढूंढना मुश्किल है। अब तक मैं इकट्ठा:रेल पर रूबी में मॉडल का संस्करण

  • acts_as_versioned
  • simply_versioned
  • vestal_versions

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

दूसरी ओर, acts_as_versioned थोड़ा सा धूल (जनवरी में अंतिम प्रतिबद्धता) है। क्या इनमें से किसी के साथ कोई हालिया अनुभव हैं? या अन्य समाधान (या कांटेदार) मैंने अनदेखा किया होगा?

+0

इस तरह के प्रश्न हैं क्या रूबी उपकरण बॉक्स के लिए बनाया गया था पसंद:: https: //www.ruby- यहाँ Railscasts के लिए एक लिंक पोस्ट किया है आज toolbox.com/categories/Active_Record_Versioning। चूंकि यह प्रश्न उम्र और रत्न आते हैं और जाते हैं, रूबी टूलबॉक्स लगातार परियोजनाओं, लोकप्रियता और विभिन्न परियोजनाओं के रखरखाव को लगातार चलने के लिए एक अच्छा संसाधन बनायेगा। आपको बस अपना निर्णय लेने की ज़रूरत है! –

उत्तर

4

मैं vestal_versions पिछले सप्ताह के साथ काम किया और हाँ, यह सबसे उन्नत विकल्प है, कम से कम करने के मामले में स्थान: आप केवल वही स्टोर करते हैं जो आपको वास्तव में चाहिए। यह एक सक्रिय परियोजना है और संस्करण 1.0 कई नई सुविधाओं के साथ एक बड़ा अपडेट होने जा रहा है; मेरा मतलब जानने के लिए बस 1.0 शाखा देखें।

लेकिन इसके साथ खेलने के बाद, मैंने एक बड़ी गड़बड़ी देखी है: प्रदर्शन। हर बार जब आपको एक विशिष्ट संस्करण की आवश्यकता होती है, तो आपको सभी मध्यवर्ती लोगों के माध्यम से जाना होगा, जो आपको आवश्यक संस्करण का पुनर्निर्माण करना होगा। इसका मतलब यह भी है कि आप सीधे संस्करण को संपादित या हटा नहीं सकते हैं, क्योंकि यह श्रृंखला को ब्रोक करने, संशोधनों के साथ गड़बड़ कर सकता है। ऐसा करने के लिए, आपको संस्करणों को पर्याप्त रूप से संसाधित करने की आवश्यकता है, वर्तमान में vestal_versions क्या नहीं करता है।

इस तरह, मेरी समस्या के लिए, मैं अपने स्वयं के संस्करण समाधान के साथ समाप्त हुआ। मुझे प्रदर्शन और संस्करणों को तेजी से हटाने और संपादित करने की क्षमता की आवश्यकता थी, इसलिए मैंने भंडारण का त्याग किया और act_as_versioned से कुछ विकसित किया।

लेकिन अगर आपको इसकी आवश्यकता नहीं है और अक्सर बार-बार वापस नहीं आना है, तो मैं अत्यधिक vestal_versions की अनुशंसा करता हूं। यह एक उन्नत, ठोस समाधान और सक्रिय है, इसके पीछे एक भावुक डेवलपर है।

+0

मैंने सभी समाधानों (पेपर ट्रेल, act_as_audited) पर एक नज़र डाली और अंततः लैल्सन के रूप में उसी तरह से जाने का फैसला किया - एक और संस्करण प्लगइन विकसित करने के लिए (जिथब में सरलांटिस/ऐतिहासिक, प्रगति पर काम)। –

+0

बस स्पष्ट करने के लिए: मैंने पुस्तकालय नहीं बनाया है, मैं बस अपनी समस्या के लिए एक कस्टम समाधान बना रहा हूं। लेकिन प्लगइन के साथ शुभकामनाएं। मैंने देखा है कि आपने अच्छे दस्तावेज के साथ बहुत सी चीजें वास्तव में तेजी से की हैं। यह आशाजनक लग रहा है ... मुझे इस मामले में दिलचस्पी है और मैं आपकी परियोजना को देखता रहूंगा। –

2

कुछ महीने पहले मैंने कुछ समाधानों का परीक्षण किया और vestal_versions सबसे प्रभावी था। रायन बेट्स से great screencast here भी है।

यदि आप अन्य विकल्पों की तलाश में हैं, तो The Ruby Toolbox list देखें।

+0

वास्तव में, यह सबसे उन्नत एक प्रतीत होता है। शायद मैं माइग्रेशन को कैसे संभालने के बारे में गलत हूं, मैं कुछ परीक्षण करूंगा। और टूलबॉक्स लिंक के लिए धन्यवाद! –

2

हमने प्रोजेक्ट में act_as_audited का उपयोग किया, जिसमें काफी अच्छी सफलता थी।

आप पा सकते हैं कि http://github.com/collectiveidea/acts_as_audited/ पर

(पिछले साल नवंबर :-) में प्रतिबद्ध)

+0

आशाजनक लग रहा है - मैं इसे देख लूंगा। –

21

मैं "पेपर_ट्रिल" नामक मणि के साथ काम कर रहा हूं। ऐसा लगता है कि इस समय ऑनलाइन सबसे अच्छा समाधान है। इसमें एक में लेखा परीक्षा और संस्करण नियंत्रण है।

http://github.com/airblade/paper_trail

आशा इस मदद करता है!

+0

आपके उत्तर के लिए धन्यवाद। मैंने पेपर ट्रेल के साथ भी जाना चुना है। – Mosselman

0

अरे, मुझे आश्चर्य है कि किसी ने वर्जनिंग का समर्थन करने के तरीके के रूप में डेटाबेस के बैकएंड इंस्टीटैड पर पर्सफोर्स, गिटहब इत्यादि का उपयोग करने का विचार किया है?तो यह अनिवार्य रूप से डेटा की फ़ाइल-आधारित पुनर्प्राप्ति होगी, मुझे लगता है ...

+0

दरअसल, "पी 4 का उपयोग करके, डेटाबेस के INSTEAD का उपयोग करना," रेल सत्र को संस्करण को निर्देशित करके पी 4 आदि का उपयोग करके डेटाबेस को वर्जनिंग/ब्रांच करना। उदाहरण के लिए, मैं डेटाबेस v4.1 को डेटाबेस से डेटा तक पहुंचने से पहले देखना चाहता हूं, मैं डेटाबेस के उस संस्करण को देखता हूं। अगर मैं शाखा बनाना चाहता हूं, तो मैं पहले शाखा कमांड जारी करता हूं, फिर काम करता रहता हूं। विचार? –