2011-12-23 4 views
8

Простая проблема, у меня есть устаревшее приложение Rails 2.3, и для этого требуется довольно много времени. rake занимает более 25 секунд, но не похоже, что что-то действительно происходит.Как профилировать загрузку приложения Rails?

Есть ли какой-либо простой способ, я могу просто получить какой-то дамп профайлера с момента загрузки приложения, чтобы узнать, какие методы занимают самое длинное время?

Решение для Rails 2.3 и 3.1 было бы еще более полезным.

+0

Какой рубин вы используете? – rkb

+0

@rkb В настоящее время REE, но я могу использовать любую другую версию для профилирования, так как все драгоценные камни совместимы с 1.9. –

ответ

1

Вы можете запустить приложение с помощью профайлера, подключенного, например. ruby-prof или perftools.rb. Пока он все еще запущен, запустите HTTP-запрос против него, который попытается перейти к GET a /kill_me, как только приложение запустится. /kill_me может привести к тому, что ваше приложение изящно умрет, позвонив по телефону exit. В результате у вас есть профиль вашего запуска.

9

Профиль задача рек, который требует сред рельсов, что-то вроде этого:

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

end 

затем профиль с рубином-Prof

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

Это должен работать с рельсами 2.3 только испытанным он на 3.x, но я не вижу причин, почему он не должен работать.

+2

'rake environment' - задача, которая делает именно это - загружает среду Rails. – rkb

+0

Ах да, вы могли бы также запустить среду с граблями, я полагаю, но, возможно, вам стоит попробовать некоторые методы в решении, такие как FooModel.all или что-то в этом роде. – sunkencity

Смежные вопросы