मैं एक रूबी ऑन रेल एप्लिकेशन बनाने का प्रयास कर रहा हूं जो कई वेब सेवाओं की निगरानी और नियंत्रक की अनुमति देगा। मेरे पास वर्तमान में उन सेवाओं का संचालन है और मैं कंसोल एप्लिकेशन में प्रत्येक सेवा की 'स्थिति' देखने में सक्षम हूं जो सेवा और उसकी स्थिति को सूचीबद्ध करता है, अर्थात।

Service1 Running
Service2 Paused
Service3 Waiting on Files

मैं चाहता हूं कि आरओआर एप्लिकेशन उन प्रतिक्रियाओं को प्रक्रिया और संग्रह प्रक्रियाओं नामक पोरो ऑब्जेक्ट्स के संग्रह में एकत्र करे, मुझे लगता है। तब मैं डिफ़ॉल्ट मार्ग से 'process_list.html.erb' दृश्य खोलने की अपेक्षा करता हूं जहां डेटाटेबल 'process_table' बनाने के लिए लोड पर एक jQuery पृष्ठ का उपयोग किया जाएगा जो प्रक्रियाओं के उस संग्रह से भरा जाएगा। मेरी समस्या यह है कि, जबकि मुझे RoR अनुप्रयोगों की संरचना पसंद है, मैं RoR एप्लिकेशन में नियंत्रण के प्रवाह को नहीं समझता। अगर मैं इसे jQuery और जावास्क्रिप्ट पृष्ठों में लिख रहा होता, तो मुझे पता होता कि मेरे index.jsp पृष्ठ में jQuery डेटाटेबल जावास्क्रिप्ट लिंक शामिल होगा जो पृष्ठ को लोड करने पर निष्पादित किया जाएगा। यह एक अन्य जावास्क्रिप्ट फ़ंक्शन का संदर्भ देगा जो वेब सेवा को कॉल करेगा, प्रतिक्रियाएं एकत्र करेगा, उसे JSON सरणी में परिवर्तित करेगा और इसे डेटाटेबल पर वापस कर देगा, जहां इसे तालिका के रूप में प्रस्तुत किया जाएगा। मेरे पास समय-समय पर पृष्ठ को रीफ्रेश करने के लिए टाइमर हो सकता है, जबकि यह काम करेगा, और मैंने पहले भी ऐसा बनाया है, ऐसा लगता है कि यह उचित आरओआर एप्लिकेशन की तुलना में बहुत कम 'व्यवस्थित' होगा।

जहां मैं फंस गया हूं, वहां अब तक मैंने जो कदम उठाए हैं, वे यहां दिए गए हैं:

1) रेल नए उस्ताद -O

2) सीडी उस्ताद

3) रेल मचान प्रक्रियाओं को उत्पन्न करती है

4) रूट्स.आरबी में मैंने जोड़ा:

  resources :processes, :only => [:show]
  root 'processes#show'

यह मुझे उन ऐप्स/विचारों/प्रक्रियाओं/शो.एचटीएमएल.एआरबी पृष्ठ पर ले जाना है जहां मैंने सोचा था कि मैं किसी भी तरह एक जावास्क्रिप्ट पृष्ठ प्रदान कर सकता हूं जिसे पोरो ऑब्जेक्ट्स बनाने के लिए लोड पर निष्पादित किया जाएगा और उन्हें डेटाटेबल्स पर एक सरणी के रूप में वापस कर दिया जाएगा जो तालिका में process.name, process.status निकालने वाले फ़ोरैच लूप के माध्यम से नियंत्रित किया जा सकता है। हालांकि, मुझे एक त्रुटि मिलती है कि ऐप/नियंत्रकों/process_controller.rb में एक अनुभाग है:

def set_process
  @process = Process.find(params[:id])
end

और 'ढूंढें' प्रक्रिया के लिए परिभाषित नहीं है। अब, मुझे कहीं भी 'प्रक्रिया' वर्ग नहीं मिल रहा है, और यह नहीं पता कि यह क्या है या इसे क्यों कहा जा रहा है। एक अनुक्रमणिका पद्धति में @process = Process.all का एक संदर्भ है। दोबारा, मैं इन्हें कहां परिभाषित करूं?

क्या ऊपर दिखाए गए कदम इस तरह के एक आवेदन का निर्माण शुरू करने का सही तरीका है और यदि ऐसा है तो मैं प्रक्रिया वर्ग बनाने या संपादित करने और उन विधियों को जोड़ने के लिए क्या करूं? मैं इस पृष्ठ के लिए जावास्क्रिप्ट कहां रखूं? कहां देखना है, क्या पढ़ना है, इस बारे में कुछ संकेत दिए गए हैं ताकि मैं एक आरओआर एप्लिकेशन के प्रवाह को समझ सकूं, इसकी सराहना की जाएगी।

0
John Wooten 25 फरवरी 2019, 19:31

1 उत्तर

सबसे बढ़िया उत्तर

रेल मचान डेटाबेस मॉडल/तालिका के अनुरूप आपके नियंत्रक कार्रवाई के लिए एक सम्मेलन की अपेक्षा करने वाली कई धारणाएं बनाता है। जैसा कि अन्य ने उल्लेख किया है, आपको Process का उपयोग करने से बचना चाहिए क्योंकि यह एक कोर रूबी मॉड्यूल है, इसके बजाय मैं MonitorProcess का सुझाव दूंगा।

यदि आप प्रक्रिया के बारे में चीजों को संग्रहीत करने के लिए डेटाबेस मॉडल का उपयोग करना चाहते हैं, तो आपको एक मॉडल ( rails g model monitor_process) की आवश्यकता होगी और आपके नियंत्रक उपयोग के लिए भी

rails generate scaffold monitor_processes

हालांकि यह मानक एमवीसी सेटअप का निर्माण करेगा, डेटाबेस टेबल बनाने के लिए माइग्रेशन, एक मॉडल क्लास MonitorProcess, रीस्टफुल रूट्स वाला कंट्रोलर (इंडेक्स, शो, न्यू, क्रिएट, अपडेट और नष्ट), और इंडेक्स के लिए विचार , दिखाएँ, नया, संपादित करें, और नए और संपादन के लिए उपयोग किया जाने वाला एक फ़ॉर्म आंशिक, साथ ही आपके परीक्षण लिखने के लिए फ़ाइलें सेटअप।

यदि आपको डेटाबेस मॉडल तक पहुँचने की आवश्यकता नहीं है, तो आप इन्हें अपने नियंत्रक से हटा सकते हैं, या उन पर टिप्पणी कर सकते हैं। लेकिन यहां आप एमवीसी के रास्ते से बाहर हैं।

before_action :set_monitor_process, only: [:show, :edit, :update, :destroy]

def set_process
  @mocel_process = ModelProcess.find(params[:id])
end

यहां से आप एक्शन केबल का उपयोग करने पर विचार कर सकते हैं और उस पेज पर अपने कस्टम जेएस का उपयोग कर सकते हैं, हालांकि आप चाहते हैं। लेकिन क्या आपको इस ऐप के लिए रेल की भी जरूरत है ?? ऐसा लगता है कि यह आपकी ज़रूरत से ज़्यादा ओवरहेड हो सकता है। स्कैफोल्ड एक उपकरण है जो बुनियादी डेटा संचालित ऐप के तेजी से प्रोटोटाइप को बहुत तेज और आसान बनाता है। लेकिन यह बहुत सारे सम्मेलनों के साथ आता है जिनकी आपको शायद अपने उपयोग के मामले की आवश्यकता नहीं है।

हालांकि, यह जाने बिना कि आप कौन सी वेब सेवाएं बनाना/निगरानी करना चाहते हैं, और कैसे, यह कहना मुश्किल है कि आपको रेल का उपयोग करना चाहिए या नहीं। यह निश्चित रूप से आपके लिए जो स्कैफोल्ड सेट करता है, उसके बाहर कई चीजें करने के लिए बनाया जा सकता है। यह यहाँ सिर्फ त्वरित बुनियादी सेटअप और बहुत सारे बॉयलरप्लेट से बचने के लिए है। पृष्ठभूमि की नौकरियों आदि जैसी चीजों को करने के लिए बहुत सारे ढांचे हैं लेकिन सवाल यह है कि क्या आपको एमवीसी की आवश्यकता है? यदि नहीं तो निश्चित रूप से आपके पास अन्य विकल्प हैं। यदि आपको केवल डिकूप्ड फ्रंट-एंड के साथ बैकएंड की आवश्यकता है, तो आप केवल एपीआई अनुप्रयोगों के लिए रेल का उपयोग करने पर एक नज़र डाल सकते हैं< /ए> अगर आप रूबी के साथ काम करना पसंद करते हैं, तो सिनात्रा इस पर गौर करें

1
lacostenycoder 26 फरवरी 2019, 09:41