Сводка
- Используйте
require 'pry'
в верхней части приложения. - Вызывайте
binding.pry
в своем коде всякий раз, когда вы хотите перейти в интерактивный сеанс.Для получения информации об использовании Pry см. Включение IRB на его голове с помощью Pry и Pry wiki . - Когда вы закончите с определенным интерактивным сеансом, введите
exit
или Ctrl-D;Sinatra возобновит работу с того места, где остановился.
Пример
require 'sinatra'
require 'pry'
get '/' do
@cats = rand(100)
html = haml :index
binding.pry
html
end
__END__
@@index
%html
<head><title>Hello World</title></head>
%body
%p I have #{@cats} cat#{:s unless @cats==1}!
Вот как это выглядит при запуске веб-сервера:
C:\>ruby pry_into_sinatra.rb
== Sinatra/1.2.6 has taken the stage on 4567 for development with backup from Thin
>> Thin web server (v1.2.11 codename Bat-Shit Crazy)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4567, CTRL+C to stop
КогдаЯ делаю запрос в веб-браузере на http://localhost:4567 консоль падает в отладчик Pry перед отправкой результата:
From: pry_into_sinatra.rb @ line 7 in Sinatra::Application#HEAD /:
2: require 'pry'
3:
4: get '/' do
5: @cats = rand(100)
6: html = haml :index
=> 7: binding.pry
8: html
9: end
10:
11: __END__
12: @@index
pry(#<Sinatra::Application:0x3300ac8>)> @cats
=> 42
pry(#<Sinatra::Application:0x3300ac8>)> puts html
<html>
<head><title>Hello World</title></head>
<body>
<p>I have 42 cats!</p>
</body>
</html>
=> nil
pry(#<Sinatra::Application:0x3300ac8>)> exit
127.0.0.1 - - [24/Aug/2011 13:25:57] "GET / HTTP/1.1" 200 96 28.5390
127.0.0.1 - - [24/Aug/2011 13:25:57] "GET /favicon.ico HTTP/1.1" 404 447 0.0010
Дальнейшая отладка
Если вы хотите иметь возможностьчтобы использовать традиционные команды отладки, такие как установка точек останова на основе строки, или пошаговое выполнение, или прерывание при возникновении исключений, см. библиотеку PryDebug от Mon-Ouie.