2012-02-06 9 views
4

环境:Linux Mint 32位,JRuby-1.6.5 [i386],Rails 3.1.3。分析一个JRUBY导轨应用程序输出<unknown>元素

我正试图在我的rails应用程序上部署JRuby 1.6.5上的WEBrick(在开发模式下)。

我JRUBY_OPTS:“-Xlaunch.inproc =假--profile.flat”

在我的车型之一,我介绍了一个明确睡眠(5),并确保这种方法称为before_save钩的一部分同时保存模型。伪代码...

class Invoice < ActiveRecord::Base 
<some properties here...> 

before_save :delay 

private 
def delay 
    sleep(5) 
end 
end 

上面的代码可以确保发票的实例被持久化之前,方法,延迟被自动调用。

现在,当我配置文件(通过一个RSpec的单元测试)创建这个模型实例的代码,我得到以下输出:

6.31  0.00  6.31   14 RSpec::Core::ExampleGroup.run 
6.30  0.00  6.30   14 RSpec::Core::ExampleGroup.run_examples 
6.30  0.00  6.30   1 RSpec::Core::Example#run 
6.30  0.00  6.30   1 RSpec::Core::Example#with_around_hooks 
5.58  0.00  5.58   1 <unknown> 
5.43  0.00  5.43   2 Rails::Application::RoutesReloader#reload! 
5.00  0.00  5.00   1 <unknown> 
5.00  5.00  0.00   1 Kernel#sleep 
4.87  0.00  4.87   40 ActiveSupport.execute_hook 
4.39  0.00  4.39   3 ActionDispatch::Routing::RouteSet#eval_block 
4.38  0.00  4.38   2 Rails::Application::RoutesReloader#load_paths 

在上面的输出,为什么我看到这两个因素,而不是Invoice.delay或类似的东西。实际上,当我用相同的JRUBY_OPTS(上面提到过)启动我的rails服务器(WEBrick)时,我所有的应用程序代码框在profiler输出中显示为未知元素!

我做错了什么?

+0

您如何从WEBrick获得输出? – Lelon 2012-03-20 00:45:46

回答

1

看起来像你最大的配置文件方法限制 Set -Xprofile.max.methods JRUBY_OPTS到一个很大的数字(默认是100000,永远不够)。例如。

export JRUBY_OPTS="--profile.flat -Xprofile.max.methods=10000000"