2012-05-28 7 views
7

मैं Rails Guide में वर्णित एक रेल प्रदर्शन परीक्षण बना रहा हूं, और मुझे रूबी-प्रोफेसर के साथ समस्याएं आ रही हैं।रेल प्रदर्शन में रूबी-प्रोफेसर के साथ त्रुटियां

मैं रूबी 1.9.2-पी 0 (हालांकि पी 320 पर एक ही समस्या का अनुभव किया) और रेल 3.1.0 का उपयोग कर रहा हूं।

मेरे पास नियंत्रक के लिए एक बहुत ही सरल परीक्षण है जो this example के बराबर है।

the guide के अनुसार, मुझे प्रदर्शन परीक्षणों का उपयोग करने से पहले मुझे रूबी-प्रोफेसर इंस्टॉल करने की आवश्यकता है। यकीन है कि पर्याप्त, अगर मैं इसे बिना मेरे प्रदर्शन परीक्षण चलाने के लिए, मैं:

Specify ruby-prof as application's dependency in Gemfile to run benchmarks.

अगर मैं पत्र, मार्गदर्शिका के निर्देशों का पालन करें, मैं अपने Gemfile से जोड़ें:

gem 'ruby-prof', :git => 'git://github.com/wycats/ruby-prof.git'

... और wycats भंडार से संस्करण 0.11.0 प्राप्त करें। जब मैं अपने परीक्षण चलाने मैं इस त्रुटि मिलती है:

/Users/craig/.rvm/gems/ruby-1.9.2-p0/bundler/gems/ruby-prof-ffae61a89553/lib/ruby-prof/abstract_printer.rb:44:in `inspect': undefined method `to_s' for #<Class:0x000001025a3f18> (NoMethodError) 
from /Users/craig/.rvm/gems/ruby-1.9.2-p0/bundler/gems/ruby-prof-ffae61a89553/lib/ruby-prof/abstract_printer.rb:44:in `full_name' 
... 

लेकिन "wycats" माणिक प्रोफेसर के लिए विहित Github रेपो होने के लिए प्रकट नहीं होता। प्रलेखन rdp (रोजर पैक) को संदर्भित करता है। अगर मैं बजाय कि रेपो का उपयोग करें:

gem 'ruby-prof', :git => 'git://github.com/rdp/ruby-prof.git'

... मैं संस्करण 0.11.2 मिलता है, और यह त्रुटि प्राप्त:

/Users/craig/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.1.0/lib/active_support/testing/performance/ruby.rb:39:in run': undefined method values' for [#]:Array (NoMethodError) from /Users/craig/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.1.0/lib/active_support/testing/performance.rb:140:in `run_profile' ...

मैं एक ही त्रुटि मिलती है, तो मैं सिर्फ सीधे rubygems से मणि का उपयोग (फिर, संस्करण 0.11.2):

gem 'ruby-prof'

कोई विचार क्या गलत हो रहा है, या इसे कैसे हल किया जाए? रेल 3.2.3

उत्तर

8

नवीनतम माणिक प्रोफेसर संस्करण का उपयोग करने की जरूरत है, मैं नहीं जानता कि क्या माणिक प्रोफेसर संस्करण आप रेल 3.1 के साथ उपयोग कर सकते हैं, हो सकता है आप कॉपी कर सकते हैं lib/active_support/परीक्षण/प्रदर्शन/activesupport से ruby.rb 3.2.3

8

समस्या सक्रिय-समर्थन-3.2.2 \ lib \ active_support \ परीक्षण \ performance \ ruby.rb में है।

लाइन बदलें से 39:

@total = @data.threads.sum(0) { |method_infos| method_infos.max.total_time } 

करने के लिए:

@total = @data.threads.sum(0) {|thread| thread.top_method.total_time} 
+0

कमाल! बहुत बहुत धन्यवाद। क्या इस पैच को जिज्ञासा से बाहर रेलगाड़ियों में जमा किया गया है? – pjammer

4

रूबी ऑन रेल्स 3.2.6 यह पहले से ही ठीक किया गया है। https://github.com/rails/rails/blob/v3.2.6/activesupport/lib/active_support/testing/performance/ruby.rb

लाइन 39

@total = @data.threads.sum(0) { |thread| thread.methods.max.total_time } 
रेल में

3.2.3
https://github.com/rails/rails/blob/v3.2.3/activesupport/lib/active_support/testing/performance/ruby.rb

यह है:

@total = @data.threads.values.sum(0) { |method_infos| method_infos.max.total_time } 

और मूल्यों विधि यहाँ विफल हो रहा है की तरह लग रहा है।

0

रेल 3.2.9 के साथ मेरे मामले में, मैंने अपनी परियोजना से स्वत: जेनरेट की गई निर्देशिका 'परीक्षण/प्रदर्शन' हटा दी।

1

मुझे एक ही समस्या थी। मैंने अपने रेल संस्करण के लिए सही रूबी-प्रोफेसर संस्करण स्थापित करके तय किया है।

तो, मैं जून 16, 2011 को जारी किए गए रेल 3.0.9 का उपयोग कर रहा था (https://rubygems.org/gems/rails/versions के अनुसार)।

फिर, मैंने उसी तारीख के आसपास जारी रूबी-प्रोफेसर की जांच की। और यह 6 जुलाई, 2011 को 0.10.8 जारी किया गया था।

उपरोक्त स्थापित करने के बाद मुझे यह काम मिल गया। कुछ प्रोफाइलिंग मीट्रिक समर्थित नहीं हो सकते हैं।

चीयर्स।

+1

स्टैक ओवरफ़्लो में आपका स्वागत है .. कृपया प्रश्न का उत्तर देने से पहले फैक पढ़ें .. – coder

+0

@ कोडर मैं फैक के माध्यम से गया। मैंने अपने जवाब में कुछ भी नहीं छोड़ा। अगर कुछ याद आती है तो क्या आप हाइलाइट कर सकते हैं। – jef

+0

हां, मेरे मामले में गलत रूबी-प्रोफेसर संस्करण था, और आपके समाधान ने मेरी मदद की। –

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