2009-06-26 16 views
17

क्या संस्करण के लिए एक रेल आवेदन सबसे अच्छा तरीका क्या होगा? हम अधिक संरचित परीक्षण चक्रों में शामिल होना शुरू करना चाहते हैं और प्रति निर्माण एक सेट संस्करण होने का एक हिस्सा है। हम उपversण का उपयोग करते हैं लेकिन मैं संस्करणों के लिए संशोधन संख्या का उपयोग करना टालना चाहता हूं। क्या यह स्वचालित रूप से करने का कोई आसान तरीका है? या क्या मुझे एप्लिकेशन सहायक में एक ऐप_वर्जन विधि परिभाषित करनी चाहिए?एक रेल ऐप संस्करण के लिए सबसे अच्छा तरीका है?

(हम स्रोत नियंत्रण के लिए तोड़फोड़ का उपयोग कर रहे हैं)

+0

वहाँ बिल्कुल के बीच संस्करण संख्या और तोड़फोड़ किसी तरह के संबंध है? उदाहरण के लिए, क्या आप प्रत्येक संस्करण के लिए टैग या शाखा बनाते हैं? यदि ऐसा है, तो आप नीचे दिए गए मेरे समाधान का उपयोग $ URL $ कीवर्ड के साथ कर सकते हैं, जो आपकी योजना के आधार पर http: //mysubversionserver/tags/v3.0 तक विस्तारित होगा। फिर आप आसानी से "v3.0" को पार्स कर सकते हैं, उदा। version.split ('http: // mysubversionserver/टैग /') [1] – ideasasylum

उत्तर

4

आप subversion keywords:

अनिवार्य रूप से उपयोग कर सकते हैं, तो आप एक सहायक विधि हो सकता था ...

def app_version 
    "$Id$" 
end 

$Id$ एक कीवर्ड जो SVN का विस्तार होगा (यदि उपरोक्त लिंक दूसरों आप इस्तेमाल कर सकते हैं है) है। अब अगर आप application_helper.rb को देखो यह (जैसे कुछ पढ़ेंगे

svn propset svn:keywords "Id" application_helper.rb 
svn ci application_helper.rb 

: अब, हम SVN पता है कि यह कीवर्ड का स्थान दिया जाना चाहिए यह बताने के लिए है कि फाइल पर कीवर्ड गुण सेट (के application_helper.rb मान लें) इस, संस्करण, तारीख के साथ, उपयोगकर्ता नाम बदल)

def app_version 
    "$Id: application_helper.rb 282 2009-06-26 10:34:17Z root $" 
end 

जाहिर है, आप एक चर को यह निर्दिष्ट करने तथा आवश्यक प्रारूप करने के लिए उसे पार्स सकता है, आदि आपके विचार टेम्पलेट्स में शामिल या एक ही बात है, लेकिन बजाय application_helper.rb की, बस एक फ़ाइल अपने रूट निर्देशिका में VERSION कहा जाता है का उपयोग करें।

+0

उपरोक्त। मैं यह ठीक कहने के लिए यहां आया था। – user60401

+0

$ 1 यदि "$ संशोधन $"। मिलान (/ संशोधन: (\ d +) /) ... यदि आप svn: कीवर्ड में "संशोधन" जोड़ते हैं, तो यह प्रत्येक एसवीएन संशोधन के साथ अपडेट हो जाएगा (केवल तभी नहीं वर्तमान फ़ाइल अपडेट की गई है) और यह केवल संशोधन को पार कर जाएगी। – nertzy

3

एप्लिकेशन संस्करण प्लगइन (http://github.com/toland/app_version/tree/master) यदि आप किसी अनुप्रयोग संस्करण के विभिन्न घटकों को निर्दिष्ट करने की अनुमति देता है। इसके बाद आप निर्माण के घटक के रूप में उपद्रव संशोधन को प्रभावी भूमिका के बिना शामिल कर सकते हैं।

आप भी अपने निर्माण/परीक्षण कार्यप्रवाह के भाग के रूप, संस्करण का एक और घटक को बढ़ा सकता है।

0

Ithink यह आपके स्रोत नियंत्रण प्रणाली की जिम्मेदारी होनी चाहिए। मैं प्रत्येक संस्करण के लिए एक टैग का उपयोग करेंगे, तो आप सिर्फ़ अपने ऐप्लिकेशन में टैग लिखते हैं (जैसे कि, पाद लेख में) एक सहायक विधि बना सकते हैं:

def put_version 
    "<p id='version'>#{$$TAG_NAME}</p>" 
end 

डालने के लिए वाक्यविन्यास याद नहीं आ रहा टैग नाम।

2

आप या तो केवल रेल की तरह अपना Git/SVN शाखा ... या, सबसे अच्छा तरीका है, पर्यावरण फ़ाइल में एक निरंतर लेबलिंग, द्वारा संस्करण करता सकता है:

MY_APP_VER = 0.1 

क्यों आप आवेदन सहायक का प्रयोग करेंगे? आप अपने एप्लिकेशन सहायक से उस चर को हमेशा प्राप्त कर सकते हैं, आपको इसे स्क्रीन पर प्रदर्शित करने की आवश्यकता होनी चाहिए। लेकिन, यह एक सहायक विधि के अंदर आपके पूरे आवेदन की कॉन्फ़िगरेशन से संबंधित तर्क होने के लिए मूर्खतापूर्ण प्रतीत होता है।

21

यदि आप git का उपयोग करते हैं, तो आप अपने environment.rb फ़ाइल में एक स्थिर चर बना सकते हैं जो वर्तमान टैग नाम को गिट से खींचता है। यदि आप git flow जैसे कुछ उपयोग कर रहे हैं, तो यह बहुत अच्छा काम करता है।

environment.rb में जोड़ें:

APP_VERSION = `git describe --always` unless defined? APP_VERSION 

अब आप कर सकते हैं अपने विचार में <%= APP_VERSION %>। N.B. यह हेरोोकू पर काम नहीं करता है।

स्रोत: http://blog.danielpietzsch.com/post/1209091430/show-the-version-number-of-your-rails-app-using-git

+0

पर्यावरण.आरबी में इसे परिभाषित करना रेल 2.3.14 में काम नहीं करता है। मैं आपके अनुप्रयोग_helper.rb में सहायक जोड़ने का सुझाव देता हूं। इसके अलावा, मैं 'git वर्णन --always --tags' के आउटपुट को प्राथमिकता देता हूं। फिर आपको संस्करण संख्याएं मिलती हैं। लेकिन आपके जवाब ने मुझे वहां पहुंचाया। :) –

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