कुछ अतुल्य कारणों से, रूबीमाइन आपके द्वारा किए गए हर परिवर्तन को स्वत: सहेजता है और इसलिए हर महत्वपूर्ण स्ट्रोक आपके परीक्षण चलाने के लिए गार्ड को ट्रिगर करेगा! और सबसे हास्यास्पद बात यह है कि स्पष्ट रूप से इस स्वत: सहेजने "सुविधा" को अक्षम करने का कोई तरीका नहीं है। मैं बस सोच रहा हूं, रूबीमाइन रेल डेवलपर्स के बीच एक बहुत ही लोकप्रिय संपादक प्रतीत होता है और गार्ड परीक्षण को स्वचालित करने के लिए उपयोग किया जाने वाला एक अनिवार्य उपकरण प्रतीत होता है। चूंकि रूबीमाइन के साथ तर्क का उपयोग करना असंभव है, रूबीमाइन के साथ लोगों को अपने परीक्षणों को स्वचालित करने के साथ कैसे व्यवहार किया जाता है?क्या रूबीमाइन के साथ गार्ड का उपयोग करना असंभव है?
उत्तर
मैं पूरे दिन गार्ड के साथ रूबीमाइन का उपयोग कर रहा हूं, और वास्तव में, गार्ड के कुछ हिस्सों को रूबीमाइन में ही विकसित किया गया है।
आप मेनू में RubyMine > Preferences
पर जाकर ऑटो-सुरक्षित व्यवहार कॉन्फ़िगर कर सकते हैं और खोज बॉक्स में sync
दर्ज करें, फिर सूची से System Settings
चुनें।
चित्र अपनी सेटिंग्स और इन कार्यों ठीक पता चलता है। मैन्युअल रूप से एक फ़ाइल को सहेजने के लिए, आप Save files on frame deactivation
को अक्षम भी कर सकते हैं।
मैं टर्मिनल से गार्ड का उपयोग करना पसंद है, लेकिन आप सीधे मेनू से Run > Edit configurations
का चयन करके एक भागो विन्यास जोड़कर गार्ड को चलाने के लिए RubyMine कॉन्फ़िगर कर सकते हैं: इस पर क्लिक करके
अब आप एक नया विन्यास जोड़ सकते हैं धन चिह्न +
और IRB console
का चयन करें:
अब विन्यास Guard
नाम, पथ आईआरबी स्क्रिप्ट में रक्षा करने के लिए दर्ज करें और सेट परियोजना कामकाजी निर्देशिका। आप अपने गार्ड तर्क, विभिन्न गार्ड समूहों की तरह, आदि
मैं टर्मिनल खोलने के द्वारा की रक्षा के लिए अपना रास्ता मिल गया आईआरबी तर्कों के रूप में प्रवेश के लिए चाहते हो सकता है, इस परियोजना कार्यशील निर्देशिका में बदल गया है और which guard
, में प्रवेश किया जो मेरे रूबी के लिए /Users/michi/.rvm/gems/ruby-1.9.3-p194/bin/guard
में परिणाम 1.9.3-पी 1 9 4 एसडीके आरवीएम द्वारा प्रबंधित किया गया।
अगला आपको टैब में बंडल के संदर्भ में स्क्रिप्ट चलाएं।
अब OK
दबाएँ और आप एक नया रन विन्यास है। गार्ड शुरू करने से पहले, आप अपने Guardfile
को
interactor :simple
जोड़कर सरल करने के लिए interactor कॉन्फ़िगर करना चाहिए। अब आप (या यहां तक कि डिबग) चला सकते हैं गार्ड सीधे RubyMine भीतर:
का आनंद लें!
यह एक बेहद विस्तृत उत्तर है :) – grosser
बढ़िया, धन्यवाद! किसी कारण से, रूबीमाइन में मेरी फाइलों को सहेजने से मेरे परीक्षणों को फिर से शुरू करने के लिए गार्ड ट्रिगर नहीं होता है। कोई विचार क्यों? – alecmce
@alecmce आपको अपनी रूबी स्थापना में [उचित रीडलाइन समर्थन जोड़ना चाहिए] (https://github.com/guard/guard/wiki/Add-proper-Readline-support-to-Ruby-on-Mac-OS-X) । – Netzpirat
या आप निम्न कोड के साथ अपनी परियोजना की जड़ में एक run_guard.rb फ़ाइल जोड़ सकते हैं:
exec 'guard'
से सावधान रहें!Rubymine आपके पाथ के साथ एक समस्या है। उदाहरण के लिए,/usr/local/bin फ़िल्टर किया गया है ...
जब आप परीक्षण के लिए रूबीमाइन के साथ गार्ड चलाते हैं, तो गार्ड स्पेक के लिए एक अलग डेटाबेस वातावरण को कॉन्फ़िगर करना बेहद उपयोगी होता है, अन्यथा आपको अजीब समस्याएं आती हैं (एक प्रक्रिया या अन्य फ्रीज़ या असंगत परिणाम देता है।
नाम अपने गार्ड कल्पना वातावरण "ci" और database.yml में एक अतिरिक्त प्रविष्टि बनाने के। मैं सतत स्वचालन के लिए "ci" का उपयोग करें।
तब में रखते आपकी गार्डफाइल। मुख्य बात
'RAILS_ENV' => 'ci'
group :spec do
guard :spork, :rspec_port => 1234, :cucumber_env => { 'RAILS_ENV' => 'ci' }, :rspec_env => { 'RAILS_ENV' => 'ci' } do
watch('config/application.rb')
watch('config/environment.rb')
watch(%r{^config/environments/.+.rb$})
watch(%r{^config/initializers/.+.rb$})
watch('spec/spec_helper.rb')
watch(%r{app/models/.+\.rb})
watch(%r{app/views/.+\.haml})
watch('Gemfile')
watch('Gemfile.lock')
watch('test/test_helper.rb')
end
# environment is 'ci'
guard :rspec, :cli => '--drb --drb-port 1234', :version => 2, :all_after_pass => false, :notification => true, :environment => 'ci' do
watch(%r{^spec/.+_spec.rb$})
watch(%r{^lib/(.+).rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
watch('spec/spec_helper.rb') { "spec" }
# Rails example
watch(%r{^spec/.+_spec.rb$})
watch(%r{^app/(.+).rb$}) { |m| "spec/#{m[1]}_spec.rb" }
watch(%r{^lib/(.+).rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
watch(%r{^app/controllers/(.+)_(controller).rb$}) do |m|
["spec/routing/#{m[1]}_routing_spec.rb",
"spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb",
"spec/acceptance/#{m[1]}_spec.rb",
"spec/requests/#{m[1]}_spec.rb"]
end
watch(%r{^spec/support/(.+).rb$}) { "spec" }
watch('config/routes.rb') { "spec/routing" }
watch('app/controllers/application_controller.rb') { "spec/controllers" }
# Capybara request specs
watch(%r{^app/views/(.+)/.*.(erb|haml)$}) { |m| "spec/requests/#{m[1]}_spec.rb" }
end
end
मैं तो चलाने
bundle exec guard -g spec
मैं भी RubyMine फ़ाइलें स्वचालित रूप से बचाने के लिए हर 60 सेकंड भले ही उस गार्ड की शुरूआत की, के रूप में मेरे लिए एक नया होने से परहेज नहीं करते:
यहाँ कैसे मैं मेरा सेटअप है गार्ड चलाने के दौरान एमबीपी रेटिना ध्यान से धीमा नहीं होता है।
बीटीडब्ल्यू, गार्ड चलने वाले चश्मा वास्तव में महान हैं क्योंकि आप रूबीमाइन में परीक्षण चलाने की कोशिश करने से अधिक तेज़ परीक्षणों को पा सकते हैं। यानी, परीक्षण मूल रूप से तब किया जाता है जब मेरी उंगली cmd-s से बचाने के लिए रिलीज़ होती है।
मैं इसे टर्मिनल से चलाता हूं। मैंने रुबीमाइन के साथ दौड़ने की कोशिश नहीं की है। कोई भी ऐसा करने के फायदों पर टिप्पणी करना चाहता है? मुझे लगता है कि स्टैक डंप क्लिक करने योग्य अच्छा होगा।
मुझे 'पता \ */bin/guard' का उपयोग करना पसंद है क्योंकि यह आपके सिस्टम में बाइनरी गार्ड फ़ाइल के सभी इंस्टॉलेशन को प्रदर्शित करने का एक आसान तरीका है :) –
मुझे नहीं पता कि क्यों, लेकिन इसने I/O का एक गुच्छा हल किया और मेरे लिए sqlite लॉकिंग अपवाद। –
यह वास्तव में निराशाजनक समस्या है, और रूबीमाइन को गार्ड या ग्रंट या अन्य टास्क-धावकों के साथ उपयोग करना बहुत मुश्किल बनाता है।
मैं एक पागल वैकल्पिक हल का एक सा बनाया है, लेकिन यह मेरे लिए काफी अच्छी तरह से काम कर रहा है:
- सम्मानित यूनिक्स "स्पर्श" कमांड है, जो एक फ़ाइल के संशोधित टाइमस्टैम्प अपडेट हो जाता है चलाने के लिए एक बाहरी उपकरण जोड़ें, इस प्रकार एक फाइल सिस्टम घटना उत्पन्न करना। यह इस तरह दिखना चाहिए:
- बाहरी टूल को एक कीबोर्ड शॉर्टकट असाइन करें।
- सहेजें दस्तावेज़ कमांड के लिए एक कीबोर्ड शॉर्टकट असाइन करें।
- एक मैक्रो रिकॉर्ड करें जो दस्तावेज़ सहेजें, फिर "स्पर्श" बाहरी उपकरण चलाता है। आपको असाइन किए गए कीबोर्ड शॉर्टकट का उपयोग करने की आवश्यकता है क्योंकि दस्तावेज़ सहेजें एप्लिकेशन के मेनू में प्रकट नहीं होता है।
- अपने नए मैक्रो के लिए कीबोर्ड शॉर्टकट के रूप में सीएमडी-एस असाइन करें। http://youtrack.jetbrains.com/issue/RUBY-9903:
मेरे इस बारे में पूरी ब्लॉग पोस्ट http://singlebrook.com/blog/saving-files-in-rubymine
पर इस के लिए एक खुला मुद्दा है। – CrazyCoder
यह "निष्पक्ष" कैसे है? –
मैं व्यक्तिगत रूप से इसके बजाय कोई ऑटो सेव नहीं करता हूं। कभी-कभी, विशेष रूप से विम स्ट्रोक के साथ, आप किसी अन्य व्यक्ति पर स्विच करते समय गलती से वर्तमान फ़ाइल में अतिरिक्त वर्ण जोड़ सकते हैं और नोटिस नहीं कर सकते हैं। आम तौर पर परीक्षण इसे पकड़ते हैं लेकिन एक .js फ़ाइल में एक बार मैंने बहुत अंत में एक संलग्न "z" तैनात किया था और क्रॉस-ब्राउज़र परीक्षण करने तक इसे पकड़ नहीं लिया जिससे आईई ने इसे बार-बार किया। – Ted