Среда: Linux Mint 32 bit, JRuby-1.6.5 [i386], Rails 3.1.3.
Я пытаюсь профилировать приложение rails, развернутое на JRuby 1.6.5 на WEBrick (в режиме разработки).
Мой JRUBY_OPTS: "-Xlaunch.inproc = false --profile.flat"
В одной из моих моделей я ввел явный режим сна (5) и убедился, что этот метод вызывается как часть ловушки before_save при сохранении модели. Псевдокод ...
class Invoice < ActiveRecord::Base
<some properties here...>
before_save :delay
private
def delay
sleep(5)
end
end
Приведенный выше код гарантирует, что непосредственно перед сохранением экземпляра счета-фактуры автоматически вызывается метод 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 или что-то подобное.
Фактически, когда я запускаю свой сервер rails (WEBrick) с тем же JRUBY_OPTS (упомянутым выше), все фреймы кода моего приложения отображаются как неизвестные элементов в выходных данных профилировщика!
Я что-то не так делаю?