मैं एक प्लगइन बनाने की योजना बना रहा हूं जो ककड़ी परिदृश्यों के आधार पर ऐप कोड उत्पन्न करेगा, लेकिन मैं यह सुनिश्चित करना चाहता हूं कि मैं यहां पहिया को पुनर्निर्मित नहीं कर रहा हूं। क्या किसी को प्लगइन के बारे में पता है जो ककड़ी के साथ काम करता है और मॉडल, नियंत्रक और विचार उत्पन्न करता है?क्या कोई रेल प्लगइन है जो ककड़ी परिदृश्यों का उपयोग कर मॉडल, विचार आदि उत्पन्न कर सकता है?
अगर मैं समझ में नहीं आता हूं तो बस कुछ करने की कोशिश कर रहा हूं।
स्केच बाहर 2 मेरी व्हाइटबोर्ड पर उच्च स्तर के डिजाइन के प्रकार: जब मैं एक नया आवेदन बनाने के यहाँ मेरे कार्यप्रवाह है। 1 जो मॉडल और रिश्ते दिखाता है और दूसरा जो लेआउट, फॉर्म इत्यादि के लिए कुछ आदिम स्क्रीन दिखाता है
उच्च स्तरीय डिज़ाइन (लेकिन बेहतर अनाज) के आधार पर ककड़ी परिदृश्य लिखें। इनमें से कई कदम सिर्फ वर्णन करते हैं कि मैं किसी विशेष दृश्य पर क्या देखूंगा और एप्लिकेशन के प्रवाह की रूपरेखा भी तैयार करूंगा। मुझे लगता है कि कोडिंग शुरू करने से पहले मैं उन सभी परिदृश्यों को तैयार कर सकता हूं जो एक समय में एक करने से बेहतर है और प्रत्येक परिदृश्य लिखने के बाद कोडिंग करना बेहतर है।
मैं ककड़ी परिदृश्य चलाता हूं और पहली विफलता को देखता हूं और वहां से कोडिंग शुरू करता हूं। मेरे रेल ऐप को मेरी वरीयताओं में कॉन्फ़िगर करने के लिए इस चरण से पहले आमतौर पर कुछ अतिरिक्त सेटअप होता है और मुझे लगता है कि रत्न शामिल हैं जो मैं उपयोग करूंगा। मुझे अपनी फीचर फाइलों को चलाने के लिए लॉजिकल ऑर्डर भी मिलता है क्योंकि कुछ दूसरों पर निर्भर होते हैं। स्पष्ट रूप से प्रमाणीकरण जैसी चीजों से शुरू करना।
फिर मैं एक परिदृश्य पारित करने के लिए आवश्यक कोड बनाने में मदद के लिए रेल जनरेटर (मचान या सिर्फ मॉडल) का उपयोग करता हूं। मैं जो कुछ चाहता हूं उसे देने के लिए जनरेटर टेम्पलेट्स में से कुछ को बदलता हूं।
फिर यदि आवश्यक हो तो जेनरेट कोड को ट्वीक करें। अधिकांश बार इसमें मॉडल में संबंध स्थापित करना, विचारों में एसोसिएशन के साथ काम करना, और किसी अन्य गैर मानक कार्यक्षमता को शामिल करना शामिल नहीं है जो मचान प्रदान नहीं कर सकता है।
मैं यदि आवश्यक हो तो मेरी माइग्रेशन चलाने
तब मैं अपने परिदृश्यों को फिर से चलाएं और जब तक परिदृश्य गुजरता 4-6 में किसी भी चरण दोहराएं।
सभी परिदृश्य पास होने तक चरण 4-7 दोहराएं।
मैं गलत हो सकता हूं, लेकिन मुझे लगता है कि बहुत से लोग शायद इसी तरह के दृष्टिकोण का उपयोग करते हैं। जो चीज मुझे परेशान करती है वह यह है कि मैं परिदृश्य लिखने और कोड बनाने/ट्विकिंग कोड के बीच दोहराव देखता हूं। मैं अपने ककड़ी परिदृश्यों के साथ अपने ऐप के स्केलेटन को उत्पन्न करने में सक्षम होना चाहता हूं और जेनरेट किए गए कस्टमाइज़ को अनुकूलित करने में मेरी सहायता करने के लिए चरण परिभाषाओं का उपयोग करना चाहता हूं।
Scenario: MODEL widget exists
Given a widget model exists
Then it should belong to a "manufacturer"
And it should have a "quantity:integer" field
And it should validate the presence of "quantity"
And it should have many "wadgets"
And it should accept nested attributes for "wadgets"
#etc...
Scenario: VIEW new widget page
Given I am on the new widgets page
Then I should see a "quantity" field
And I should see a "wadgets:name" nested field
And I should see a button with text "Save Widget"
Scenario: CONTROLLER widget is created
Given a new widget is created
Then I should be on the widgets page
यह बहुत की तरह कोड उत्पन्न होगा: यहाँ एक उदाहरण है
#FROM SCENARIO 1
class Widget < ActiveRecord::Base
has_many :wadgets
belongs_to :manufacturer
validates_presence_of :quantity
accepts_nested_attributes_for :wadgets
end
#FROM SCENARIO 1
class CreateWidget < ActiveRecord::Migration
def self.up
create_table :widgets do |t|
t.integer :quantity, :null=>false
t.integer :manufacturer_id
t.timestamps
end
end
def self.down
drop_table :widgets
end
end
#FROM SCENARIO 2
#new.html.haml (using formtastic helpers)
=semantic_form_for(@widget) do |f|
= f.inputs do
= f.input :quantity
= f.semantic_fields_for :wadgets do |wadget|
= location.input :name
= f.buttons
=f.commit_button "Save Widget"
#FROM SCENARIO 3 (using inherited resources)
class WidgetsController < InheritedResources::Base
def create
create!{ widget_urls }
end
end
यह सिर्फ इस बिंदु पर छद्म है, लेकिन मुझे लगता है कि यह एक वास्तविक समय बचाने में आपके आवेदन को परिभाषित करने के होगा ककड़ी परिदृश्य और फिर इन परिदृश्यों में क्या है के आधार पर कोड उत्पन्न करते हैं। यह आपको एक ही समय में परीक्षण और कोड लिखने की अनुमति देगा। और आपको मचान जनरेटर कमांड लाइन के लिए सभी फ़ील्ड टाइप नहीं करना पड़ेगा, और यह स्वचालित रूप से एसोसिएशन सेट करेगा और दृश्य में उचित फ़ील्ड प्रकार बनाएगा। साथ ही, यह आपको एक संपूर्ण फ़ाइल में अपना संपूर्ण फीचर डिज़ाइन रखने की अनुमति देगा।इस दृष्टिकोण का उपयोग करके, आप जनरेटर को परिदृश्य पर पहले चलाएंगे और फिर पीढ़ी के बाद ककड़ी परीक्षण चलाएंगे। यदि यह सही तरीके से स्थापित किया गया था, तो सबकुछ पहली बार गुज़र जाएगा और आपके पास एक सुंदर ठोस प्रोटोटाइप होगा जिसे आप अनुकूलित कर सकते हैं।
क्या कोई प्लगइन है जो इस तरह के परीक्षण & पीढ़ी कॉम्बो जैसा दिखता है?
और धन्यवाद अगर आपने इसे पढ़ने के लिए समय निकाला .. मुझे पता है कि यह थोड़ा लंबा था।
मुझे लगता है कि यह काफी एक दिलचस्प विचार है, मैं इसे टोह रागेल – scaney
वाह के लिए एक नौकरी होगी, यह एक अच्छा विचार है! मैंने ऐसा कुछ भी नहीं सुना है जो ऐसा करता है। यदि आप अपनी योजना के साथ आगे बढ़ते हैं तो मुझे इस प्लगइन का उपयोग करने और शायद योगदान देने में बहुत दिलचस्पी होगी। मुझे आशा है कि आप इसके बारे में बड़े पैमाने पर ब्लॉग करेंगे और यहां तक कि रयान बेट्स को भी पिंग कर सकते हैं ताकि वह इसके बारे में रेलस्कास्ट कर सके, जिससे रेल समुदाय के बड़े पैमाने पर संपर्क की गारंटी मिल सके। – Samo
@ सैमो - मैं अभी एक सरल प्रोटोटाइप पर काम कर रहा हूं, इन्स और आउट को समझने की कोशिश कर रहा हूं .. और शायद मैं अगले सप्ताह या 2 में इसके बारे में ब्लॉग करूंगा। मैं बाद में जिथब रेपो को एक लिंक भेजूंगा मैंने इसमें कुछ काम किया और देखा कि क्या आप इसकी मदद करना चाहते हैं। धन्यवाद! – johnmcaliley