2011-12-23 20 views
8

Prosty problem, mam starszą aplikację Rails 2.3 i zajmuje dużo czasu, aby cokolwiek zrobić. rake trwa ponad 25 sekund, ale wygląda na to, że nic się nie dzieje.Jak mogę profilować uruchamianie aplikacji Rails?

Czy istnieje prosty sposób, w jaki sposób mogę uzyskać zrzut programu profilowania od momentu załadowania aplikacji, aby sprawdzić, które metody są najdłuższe?

Rozwiązanie dla obu szyn 2.3 i 3.1 byłoby jeszcze bardziej pomocne.

+0

Którego Ruby używasz? – rkb

+0

@rkb Obecnie REE, ale mogę użyć dowolnej innej wersji do profilowania, ponieważ wszystkie klejnoty są 1.9 kompatybilne. –

Odpowiedz

1

Możesz uruchomić aplikację z włączonym profilerem, np. ruby-prof lub perftools.rb. Wciąż się uruchamiając, uruchamiając zapytanie HTTP skierowane przeciwko niemu, które spróbowałoby przejść GET od /kill_me trasy zaraz po uruchomieniu aplikacji. /kill_me może spowodować, że aplikacja zginie z wdziękiem, dzwoniąc pod numer exit. W rezultacie masz profil swojego startupu.

9

Profil zadanie natarcia wymagającego środowiska szynach, coś takiego:

desc "Load it" 
task :loadit => :environment do 

end 

następnie profil z ruby-prof

ruby -Ilib -S ruby-prof -p graph_html `which rake` loadit > profile.html 

To powinien pracować z szynami 2.3 nie tylko badanego to na 3.x, ale nie widzę powodu, dla którego nie powinien działać.

+2

'rake environment' to zadanie, które właśnie to robi - ładuje środowisko Rails. – rkb

+0

Ach tak, równie dobrze możesz uruchomić środowisko rake'owe, ale może chciałbyś wypróbować niektóre metody w zadaniu rake, takie jak FooModel.all czy coś takiego. – sunkencity

Powiązane problemy