环境:Linux Mint 32位,JRuby-1.6.5 [i386],Rails 3.1.3。
我正在尝试在WEBrick上(在开发模式下)在JRuby 1.6.5上部署我的rails应用程序。
我的JRUBY_OPTS:“ - Xlaunch.inproc = false --profile.flat”
在我的一个模型中,我引入了一个显式sleep(5)并确保在保存模型时将此方法作为before_save hook的一部分进行调用。伪代码......
class Invoice < ActiveRecord::Base
<some properties here...>
before_save :delay
private
def delay
sleep(5)
end
end
上面的代码确保在Invoice实例持续存在之前,会自动调用 delay 方法。
现在,当我分析创建此模型实例的代码(通过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)时,我的所有应用程序代码框都在探查器输出中显示为未知元素!
我做错了吗?
答案 0 :(得分:1)
看起来你最多的配置文件方法限制
Set -Xprofile.max.methods JRUBY_OPTS
为一个大数字(默认为100000,永远不够)。例如。
export JRUBY_OPTS="--profile.flat -Xprofile.max.methods=10000000"