रूबी ऑन रूल्स विद परफॉर्मेंस टेस्ट

"दोस्ती की कुंजी व्यक्तियों का अंतर है" जूलियन सेमेनोव।
अधिक से अधिक, विंडोज डेवलपर्स रूबी में रुचि रखते हैं, एक गतिशील, उच्च-स्तरीय प्रोग्रामिंग भाषा। यहां एक महत्वपूर्ण भूमिका रूबी ने रेल वेब एप्लिकेशन ढांचे पर निभाई थी। "रेल" पर विकास सरल और मजेदार है। रूबी की उच्च गतिशीलता के लिए धन्यवाद, डेवलपर के लिए बहुत सारे सहायक उपकरण खोले गए हैं, अपेक्षाकृत कम मात्रा में कोड के साथ आपको समृद्ध कार्यक्षमता मिलती है।

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

काम का माहौल तय करना



सबसे पहले आपको वेब प्लेटफ़ॉर्म इंस्टॉलर को डाउनलोड करने और स्थापित करने की आवश्यकता है, इसे लॉन्च करें, "विकल्प" पर क्लिक करें और "अतिरिक्त परिदृश्य प्रदर्शित करें" फ़ील्ड में हेलिकॉन चिड़ियाघर फ़ीड का लिंक जोड़ें: http://www.helicontech.com/zoo/feed/



उसके बाद, वेब प्लेटफ़ॉर्म इंस्टालर में ज़ू टैब दिखाई देता है, जिसमें "एप्लिकेशन", "पैकेज", "मॉड्यूल", "इंजन" जैसे खंड होते हैं:



रूबी को पटरियों पर स्थापित करें



इंजन खंड में, आप रूबी 3.1 और 2.3 पर रूबी सहित विभिन्न रूपरेखाएं डाल सकते हैं। इसके अलावा, रूबी 1.8 और 1.9 भी यहाँ उपलब्ध हैं। डिफ़ॉल्ट रूप से, रेल 3 स्थापित करना रूबी 1.9 को एक निर्भरता के रूप में रखता है। रेल के लिए 2 रूबी 1.8 वितरित किए जाएंगे।

सुविधा के लिए, "पैकेज" अनुभाग "रूबी होस्टिंग पैकेज" पैकेज प्रदान करता है, जिसमें निम्नलिखित घटक शामिल हैं:

पहली वेबसाइट का निर्माण



नया वेब एप्लिकेशन बनाने के लिए WebMatrix और IIS एक्सप्रेस का उपयोग करना सुविधाजनक है। "चिड़ियाघर" टैब पर, "संकुल" अनुभाग में, एक "वेबमैट्रिक्स टेम्प्लेट्स" पैकेज है जो विभिन्न टेम्पलेट टेम्पलेट प्रदान करता है, जिसमें रूबी ऑन रेल्स शामिल है।

यदि आपके पास पहले से वेबमैट्रिक्स नहीं है, तो यह स्वचालित रूप से वेबमैट्रिक्स टेम्प्लेट पैकेज के साथ स्थापित हो जाएगा। तैयार रहें कि सभी पैकेजों को डाउनलोड करने और इंस्टॉल करने में कुछ समय लग सकता है। टेम्प्लेट स्थापित करने के बाद, वेबमैट्रिक्स लॉन्च करें और स्टार्ट पेज पर "टेम्पलेट से साइट" और फिर "रेल्स साइट" का चयन करें:



रेल साइट बनाने के बाद, यदि आप निर्दिष्ट URL पर जाते हैं या "रन" पर क्लिक करते हैं, तो आपको निर्देश के साथ एक पेज दिखाई देगा:



टेम्पलेट रेल एप्लिकेशन शाखा 2.3, 3.0 या 3.1 बनाने के लिए डिज़ाइन किया गया है। फिलहाल, साइट निर्देशिका में अभी तक कोई एप्लिकेशन नहीं है, केवल तैयार कॉन्फ़िगरेशन फ़ाइलें हैं। चलिए इसे निम्नलिखित कमांड को कॉल करके बनाते हैं:

rails new .

यदि टीम रेल के एक विशिष्ट संस्करण को निर्दिष्ट नहीं करती है, तो अंतिम उपलब्ध का उपयोग किया जाएगा। हमारे मामले में, हमने रूबी होस्टिंग पैकेज का उपयोग किया, जिसमें एक ही बार में तीन अलग-अलग संस्करण होते हैं, और उनमें से सबसे हाल ही में 3.1 है। इसलिए, टीम रेल 3.1 के आधार पर एक स्टब बनाएगी।

अब यदि आप पृष्ठ को रीफ्रेश करते हैं, तो आपको रूबी ग्रीटिंग पर मानक रूबी दिखाई देगा:



विकास का वातावरण



कोड को संपादित करने के लिए आपको एक संपादक या विकास परिवेश की आवश्यकता होती है। यदि आप डिबगर और रीफैक्टरिंग टूल के साथ पूर्ण-विकसित IDE की कार्यक्षमता पसंद करते हैं, तो आप निम्नलिखित मुद्दों पर विचार कर सकते हैं:प्रत्येक IDE रूबी अनुप्रयोगों के विकास और परीक्षण के लिए कई सुविधाएँ प्रदान करता है, और संस्करण नियंत्रण प्रणालियों का भी समर्थन करता है।

उन लोगों के लिए जो सरल समाधानों का उपयोग करने के लिए उपयोग किए जाते हैं, उपलब्ध हैं:एक उदाहरण लिखने के लिए, हमने Aptana का उपयोग किया:



MVC



रूबी ऑन रेल्स मॉडल-व्यू-कंट्रोलर (एमवीसी) वास्तुकला पर आधारित है। इस दृष्टिकोण के निम्नलिखित फायदे हैं:मॉडल ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के संदर्भ में डेटाबेस संरचना का वर्णन करता है। तो रेल में, एक मॉडल एक सामान्य वर्ग है जो ActiveRecord :: Base वर्ग से सभी आवश्यक कार्यक्षमता प्राप्त करता है। ऐसे वर्ग का एक उदाहरण (ऑब्जेक्ट) संबंधित डेटाबेस तालिका से एक पंक्ति का वर्णन करता है। इस प्रकार, मॉडल डेवलपर से एक विशिष्ट DBMS के साथ काम करने की सूक्ष्मताओं को छिपाते हैं।

एक दृश्य सीधे इंटरफ़ेस है जिसे उपयोगकर्ता देखता है। इस स्तर पर, डेवलपर HTML, CSS या जावास्क्रिप्ट कोड में कनवर्ट किए गए टेम्प्लेट बनाता है।

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

जब कोई अनुरोध अनुप्रयोग में आता है, तो राउटिंग तंत्र (config / मार्गों में .rb फ़ाइल) यह निर्धारित करता है कि इस प्रकार के अनुरोध के लिए कौन सा नियंत्रक जिम्मेदार है। स्वयं URL के अलावा, कई स्थितियों को ध्यान में रखा जा सकता है, उदाहरण के लिए, आप विभिन्न ब्राउज़रों के लिए अलग नियंत्रक का उपयोग कर सकते हैं, ग्राहकों के लिए, आदि।

इसलिए, नियंत्रक का चयन करते हुए, अनुरोध को संसाधित करने वाली कार्रवाई निर्धारित की जाती है। यहां आप बहुत सारी शर्तें भी लगा सकते हैं। सीधे कार्रवाई में, डेटाबेस के साथ किसी प्रकार की गणना या काम होता है। जब कार्रवाई हुई है, तो प्रस्तुति का समय आ गया है। आप डेटाबेस से प्राप्त टेम्प्लेट में डेटा या कुछ परिणाम स्थानांतरित कर सकते हैं। नियमित HTML टेम्पलेट्स से उत्पन्न होगा (जावास्क्रिप्ट और सीएसएस के लिए भी टेम्पलेट हैं) और प्रतिक्रिया के साथ पृष्ठ उपयोगकर्ता को भेजा जाएगा।

एक आवेदन पत्र लिखना



रेल के लिए एक क्लासिक उदाहरण आमतौर पर एक साधारण ब्लॉग बनाना है। चलो परंपरा पर पीछे नहीं हटते। तो, चलिए ग्रीटिंग फ़ाइल को हटाते हैं - public / index.html और Index कार्रवाई के साथ होम कंट्रोलर बनाते हैं - यह ब्लॉग का मुख्य पृष्ठ होगा। ऐसा करने के लिए, एप्लिकेशन डायरेक्टरी में निम्नलिखित कमांड चलाएँ:

rails g controller home index

अब यदि हम / घर / सूचकांक से अनुरोध करते हैं, तो हमें सूचकांक कार्रवाई के लिए बनाए गए टेम्पलेट से एक पृष्ठ मिलता है:



अगला, हम एक सरल पोस्ट मॉडल बनाएंगे जो डेटाबेस में हर एक ब्लॉग पोस्ट का वर्णन करेगा। रूबी कोड में, मॉडल एक वर्ग की तरह दिखता है, और डेटाबेस में यह एक तालिका जैसा दिखता है। इस प्रकार, क्लास पोस्ट की एक वस्तु इसी तालिका में एक पंक्ति है।

एक मॉडल बनाने के लिए, आप कमांड को "रेल जी मॉडल पोस्ट ..." कह सकते हैं, लेकिन चलो एक और अधिक सुविधाजनक उपकरण का उपयोग करें - मचान (मचान - मचान)। "रल्स जी मचान" टीम मॉडल वर्ग के अलावा और इसके लिए परीक्षण, मॉडल ऑब्जेक्ट बनाने, संपादित करने और हटाने के लिए पूर्वनिर्धारित क्रियाएं और प्रस्तुति टेम्पलेट बनाती है। निम्नलिखित कमांड चलाकर:

rails g scaffold Post name:string title:string content:text

हम एप्लिकेशन मॉडल में पोस्ट मॉडल प्राप्त करेंगे \ _ \ _ पोस्टर्स, एप्लिकेशन कंट्रोलर, शो, नया, संपादन, अपडेट, बनाने और नष्ट करने के साथ-साथ डीबी \ माइग्रेट डायरेक्टरी में डेटाबेस माइग्रेशन स्क्रिप्ट के साथ ऐप कंट्रोलर / पोस्ट_कंट्रोलर.आरबी में पोस्ट कंट्रोलर। । टीम ने टेस्ट केस और HTML टेम्प्लेट भी बनाए। यह ध्यान रखना महत्वपूर्ण है कि हमने अभी तक कोई कोड नहीं लिखा है।

हम उस कमांड को कहते हैं जो डेटाबेस बनाएगा (यदि यह पहले से मौजूद नहीं है), साथ ही साथ नाम, शीर्षक और संदर्भ फ़ील्ड के साथ पोस्ट तालिका, जैसा कि ऊपर वर्णित है:

rake db:migrate

डेटाबेस माइग्रेशन टीम का उपयोग हमारे ऑब्जेक्ट मॉडल के अनुसार डेटाबेस संरचना को बनाने या संशोधित करने के लिए किया जाता है। हर बार जब आप एप्लिकेशन मॉडल में कुछ बदलते हैं, तो इसे कॉल करने की आवश्यकता होती है। डेटाबेस संरचना को हमारे मॉडल में फिट करने का सारा जादू अपने आप होता है, और डेटाबेस में पहले से दर्ज डेटा को सहेजा जाएगा।

ध्यान दें कि एक विशिष्ट उदाहरण में, Sqlite का उपयोग किया जाता है, रेल में यह डिफ़ॉल्ट डेटाबेस है। हालांकि, रेल अन्य DBMS की मेजबानी का समर्थन करते हैं, जबकि उनके साथ काम करने की बारीकियों को छिपाते हैं।

पोस्ट कंट्रोलर एक्शन अब / पोस्ट / पर उपलब्ध हैं।



"नई पोस्ट" लिंक पर क्लिक करके हम फार्म देखेंगे:



सभी क्षेत्रों को भरने के बाद, हम नई पोस्ट के पेज पर आते हैं:



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

 class Post < ActiveRecord::Base validates :name, :presence => true validates :title, :presence => true, :length => { :minimum => 5 } end 


यहां हम इंगित करते हैं कि फ़ील्ड "नाम" और "शीर्षक" की आवश्यकता है, और फ़ील्ड "शीर्षक" में कम से कम 5 वर्ण होने चाहिए। प्रवास आवश्यक नहीं है। सत्यापनकर्ता सीधे डेटाबेस से संबंधित नहीं हैं, सत्यापन माणिक कोड के स्तर पर होता है।

यदि अब, उदाहरण के लिए, आप "नाम" फ़ील्ड में प्रवेश नहीं करते हैं, तो हमें एक त्रुटि मिलती है:



हम कार्य को जटिल करते हैं और टिप्पणियां जोड़ते हैं। निम्नलिखित कमांड के साथ टिप्पणी मॉडल बनाएं:

rails g model Comment commenter:string body:text post:references

"पोस्ट: संदर्भ" पैरामीटर पर ध्यान दें। यह टिप्पणियों की तालिका को पोस्ट तालिका से जोड़ता है।

डेटाबेस को अपडेट करें:

rake db:migrate

अब पोस्ट मॉडल के लिए कई संबंध निर्धारित करें:

 class Post < ActiveRecord::Base validates :name, :presence => true validates :title, :presence => true, :length => { :minimum => 5 } has_many :comments, :dependent => :destroy end 


कोड सहज है। यह पता चलता है कि प्रत्येक पोस्ट ऑब्जेक्ट में कई टिप्पणियां हो सकती हैं। : आश्रित =>: नष्ट होने का संकेत है कि जब कोई पोस्ट हटा दी जाती है, तो उसकी टिप्पणियों को भी हटा दिया जाना चाहिए। क्योंकि इस समय हमने टिप्पणी मॉडल बनाने के लिए मचान तंत्र का उपयोग नहीं किया है, हमें उचित नियंत्रक उत्पन्न करने की आवश्यकता है:

rails g controller Comments

Config \ path.rb फ़ाइल में, लाइन "संसाधनों: पदों को" के साथ बदलें:

 resources :posts do resources :comments end 


इस प्रकार, हम इंगित करते हैं कि टिप्पणियों के साथ नियंत्रक कैसे उपलब्ध होगा। इस मामले में, यह पदों में निहित है, अर्थात। लिंक इस तरह दिखाई देंगे: http: // localhost: 41639 / पोस्ट / 1 / टिप्पणी / 3

इसके बाद, आपको टेम्प्लेट ऐप \ _ \ _ पोस्ट \ show.html.erb को अपडेट करना होगा ताकि आप टिप्पणियां छोड़ सकें। के बाद:

 <p> <b>Content:</b> <%= @post.content %> </p> 


जोड़ें:

 <h2>Comments</h2> <% @post.comments.each do |comment| %> <p> <b>Commenter:</b> <%= comment.commenter %> </p> <p> <b>Comment:</b> <%= comment.body %> </p> <p> <%= link_to 'Destroy Comment', [comment.post, comment], :confirm => 'Are you sure?', :method => :delete %> </p> <% end %> <h2>Add a comment:</h2> <%= form_for([@post, @post.comments.build]) do |f| %> <div class="field"> <%= f.label :commenter %><br /> <%= f.text_field :commenter %> </div> <div class="field"> <%= f.label :body %><br /> <%= f.text_area :body %> </div> <div class="actions"> <%= f.submit %> </div> <% end %> 




अंत में, हम app \ नियंत्रकों \ comments_controller.rb में नियंत्रक के तर्क का वर्णन करते हैं

 class CommentsController < ApplicationController def create @post = Post.find(params[:post_id]) @comment = @post.comments.create(params[:comment]) redirect_to post_path(@post) end def destroy @post = Post.find(params[:post_id]) @comment = @post.comments.find(params[:id]) @comment.destroy redirect_to post_path(@post) end end 


अब सब कुछ तैयार है और आप पोस्ट में टिप्पणी जोड़ सकते हैं:



तो, मुख्य कार्यक्षमता कार्यान्वित की जाती है। अंतिम चरण के रूप में, आइए कुछ कार्यों की रक्षा करें ताकि किसी बाहरी व्यक्ति की उन तक पहुंच न हो। पंजीकरण, सत्र, कुकीज़, आदि का उपयोग करने के लिए एक अधिक सही दृष्टिकोण है, लेकिन सादगी के लिए हम बुनियादी बुनियादी प्रमाणीकरण लेंगे, विशेष रूप से रेल में इसे एक पंक्ति के रूप में जोड़ा जाता है। Posts_controller.rb में हम लिखते हैं:

http_basic_authenticate_with :name => "admin", :password => "123", :except => [:index, :show]

उपयोगकर्ता नाम और पासवर्ड यहां हार्ड-कोडित हैं। : पैरामीटर को छोड़कर, क्रियाओं को छोड़कर: सूचकांक और: शो - प्रमाणीकरण उनके लिए आवश्यक नहीं है।



सर्वर परिनियोजन



इसलिए, हमने एप्लिकेशन लिखा और अब हम इसे नेटवर्क पर रखना चाहते हैं। ऐसा करने के लिए, रेल सर्वर को रेल के साथ काम करने के लिए कॉन्फ़िगर करें। हमें उस लेख की शुरुआत से पहले कुछ चरणों को दोहराना होगा जो हमने काम के माहौल को तैनात करने के लिए किया था। आपको Microsoft वेब प्लेटफ़ॉर्म इंस्टॉलर को स्थापित करने की आवश्यकता है, उसमें हेलिकोन चिड़ियाघर फ़ीड जोड़ें और चिड़ियाघर रिपॉजिटरी से रूबी होस्टिंग पैकेज स्थापित करें। स्थापित करने से पहले, सुनिश्चित करें कि वेब प्लेटफ़ॉर्मर इंस्टॉलर सेटिंग्स आपको IIS के तहत एप्लिकेशन इंस्टॉल करने का निर्देश देती हैं, और IIS एक्सप्रेस के तहत नहीं। अब सर्वर हमारे आवेदन को स्वीकार करने के लिए तैयार है। वर्तमान में, Windows 2008 और 2008 R2, 32 और 64 बिट संस्करण सर्वर प्लेटफॉर्म से समर्थित हैं।

अब हम सामान्य टूल का उपयोग करके सर्वर पर एक खाली वेब साइट बनाएंगे, जैसे कि IIS प्रबंधक या होस्टिंग पैनल। इसके बाद, आपको हमारे आवेदन को एफ़टीपी या वेबडाइप के माध्यम से साइट पर अपलोड करना होगा। WebDeploy के मामले में, आवश्यक फ़ोल्डर अधिकार भी वितरित किए जाएंगे। आप Git या किसी अन्य संस्करण नियंत्रण प्रणाली का भी उपयोग कर सकते हैं, लेकिन यह इस लेख के दायरे से परे है।

हेलिकॉन ज़ू मॉड्यूल मूल रूप से होस्टिंग समाधानों को ध्यान में रखते हुए बनाया गया था। तो इसके तहत सभी एप्लिकेशन विभाजित हैं और ओवरलैप नहीं हैं। डिफ़ॉल्ट सेटिंग्स वाला मॉड्यूल स्वचालित रूप से काम करता है, लोड छोटा होने पर एक कार्यकर्ता (प्रोसेस प्रोसेसर) बनाता है या एप्लिकेशन पर लोड बढ़ने पर अधिकतम प्रदर्शन देने के लिए कोर की संख्या तक श्रमिकों को जोड़ता है।

हेलिकॉन चिड़ियाघर इंजन और अनुप्रयोगों की अवधारणा का उपयोग करता है। तो इंजनों में यह निर्धारित किया जाता है कि क्या चलाना है और कैसे, किस प्रोटोकॉल से और किस पोर्ट पर, कितने न्यूनतम और अधिकतम श्रमिकों को अनुमति दी जाती है और इसी तरह की वैश्विक सेटिंग्स जो कि विश्व स्तर पर ApplicationHost.config फ़ाइल में सेट की जाती हैं। फिर, साइट के तहत, आप एक एप्लिकेशन बना सकते हैं जो एक विशिष्ट इंजन का उपयोग करता है और इसे इस एप्लिकेशन के काम करने के लिए आवश्यक पैरामीटर पास करता है। यह आपको क्लाइंट और क्लाइंट से होस्टिंग एडमिनिस्ट्रेटर के काम को एक दूसरे से अलग करने की अनुमति देता है। हेलिकॉन जू मॉड्यूल की सेटिंग के बारे में अधिक जानकारी के लिए, यहां पढ़ें: http://www.helicontech.com/zoo/module.htm

साइट की रूट डायरेक्टरी, साथ ही DEPLOY_FILE और DEPLOY_LOG सेटिंग में web.config की तैनाती .rb फ़ाइल पर ध्यान दें। चिड़ियाघर मॉड्यूल हर बार IIS. पूल शुरू होने पर तैनाती को लागू करता है। यह दृष्टिकोण उन लोगों के लिए उपयोगी हो सकता है जिनके पास सर्वर पर प्रशासनिक विशेषाधिकार नहीं हैं। वास्तव में, तैनाती के लिए, सबसे अधिक संभावना है, आपको "बंडल इंस्टॉल" करने या डेटाबेस माइग्रेशन लागू करने की आवश्यकता होगी। ऐसा करने के लिए, बस सर्वर पर अपने एप्लिकेशन को पुनः आरंभ करें और परिनियोजित .rb फ़ाइल को स्वचालित रूप से निष्पादित किया जाएगा। सबसे लोकप्रिय कमांड पहले से ही तैनाती में पंजीकृत हैं।

यह भी याद रखने योग्य है कि तैनाती .rb स्क्रिप्ट को उसी विंडोज उपयोगकर्ता द्वारा निष्पादित किया जाता है, जो IIS पूल लॉन्च करता है। एक नियम के रूप में, उसके पास बहुत सीमित अधिकार हैं और इसे उसकी आज्ञाओं को लिखते समय ध्यान में रखा जाना चाहिए। उदाहरण के लिए, एक सामान्य "बंडल इंस्टॉल" कॉल के परिणामस्वरूप त्रुटि हो सकती है, क्योंकि रूबी इंस्टॉलेशन निर्देशिका में सीधे लिखना संभव नहीं है। एक अच्छा समाधान यह है कि आप किसी विशेष विक्रेता / कैश निर्देशिका में साइट के नीचे के सभी जाम को पहले से बचा लें, जिसके लिए आपको सर्वर पर भेजने से पहले अपने एप्लिकेशन की निर्देशिका में "बंडल पैकेज" कमांड को कॉल करना होगा। और तैनाती में.आरबी में आपको कमांड "बंडल इंस्टाल - लोपल --पथ विक्रेता / रत्न" लिखना चाहिए।

तैनाती स्क्रिप्ट निष्पादित करने में त्रुटियां DEPLOY_LOG चर में निर्दिष्ट फ़ाइल में पढ़ी जा सकती हैं।

आखिरी बात जो मैं तैनाती के दौरान ध्यान देना चाहूंगा वह है web.config में RACK_ENV चर। WebMconrix टेम्पलेट से सेट की गई web.config में, RACK_ENV चर मान "विकास" के साथ निर्दिष्ट किया गया है। इसमें रेल में उपयुक्त मोड शामिल है, जो विकास के लिए अधिक उपयुक्त है। सर्वर पर, आपको "उत्पादन" के लिए मूल्य बदलने की आवश्यकता है। वैसे, यह उत्पादन है जो डिफ़ॉल्ट रूप से उपयोग किया जाता है।

प्रदर्शन परीक्षण



एक सर्वर के रूप में परीक्षण मशीन कोर 2 क्वाड 2.4 Ghz, 8 जीबी रैम, एक गीगाबिट नेटवर्क है। लोड उत्पन्न करने के लिए, एक अधिक शक्तिशाली कंप्यूटर और अपाचे बेंचमार्क का उपयोग "ab.exe -n 100000 -c 100-एच" कमांड के साथ किया गया था। Apache और Nginx के परीक्षण के लिए, Ubuntu 11.04 Server x64 का उपयोग किया गया था। Windows Server 2008 R2 पर IIS 7 परीक्षण चला। कोई virtualoks - ईमानदार लोहा।

तीन परीक्षण किए गए। पहले रेल में, आवेदन केवल पृष्ठ पर उच्च रिज़ॉल्यूशन के साथ वर्तमान समय प्रदर्शित करने के लिए था। यह सुनिश्चित करने के लिए समय की आवश्यकता है कि उत्तर कैश से न आएं। दूसरा परीक्षण MySQL डेटाबेस से पढ़ा जाता है, तीसरा डेटाबेस पर लिखता है।

परीक्षणों के लिए हमने रूबी 1.9.3, रेल 3.1.1 और MySQL 5.1.54 का उपयोग किया। HTTP ट्रांसपोर्ट के मामले में, थिन बैकेंड के रूप में इस्तेमाल किया गया था। विंडोज पर न तो यूनिकॉर्न और न ही पैसेंजर बस काम करते हैं। कुल में, तीन कॉन्फ़िगरेशनों ने परीक्षण में भाग लिया: विंडोज + आईआईएस 7.5 + हेलिकॉन ज़ू + थिन, उबंटू + अपाचे + पासेंजर, उबंटू + नेग्नेक्स + थिन।

यहाँ परिणाम हैं (रेखांकन पर मूल्य प्रति सेकंड अनुरोध है):



इसके अलावा, समय के उत्पादन के साथ पहले परीक्षण के अनुसार, हम एब के अधिक विस्तृत ग्राफ देते हैं:







निष्कर्ष



रूबी ऑन रेल्स एक उत्कृष्ट ढांचा है जो आपको विभिन्न वेब अनुप्रयोगों को जल्दी और आसानी से बनाने की अनुमति देता है। बेशक, रूबी दुनिया तक सीमित नहीं है। बाद के लेखों में, हम गोलियत और सिनात्रा को देखेंगे।

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


पुनश्च: इस लेख के सह-लेखक व्याचेस्लाव शिंकरेंको हैं। क्योंकि उन्हें हैबर में आमंत्रित नहीं किया जाता है, फिर यहां उनका ट्विटर है: https://twitter.com/#//vyaces

Source: https://habr.com/ru/post/In136086/


All Articles