35

私は初めての Sinatra アプリケーションを作成しており、Pry を使用して、アプリケーションで行われているいくつかのことを検査/デバッグしたいと考えています。私もPryを使ったことがありませんが、試してみたいと思います。Sinatra アプリケーションで Pry を使い始めるにはどうすればよいですか?

4

4 に答える 4

52

概要

  1. require 'pry'アプリケーションの上部で使用します。
  2. binding.pryインタラクティブセッションに参加したいときはいつでもコードを呼び出してください。Pryの使用方法については、PryおよびPrywikiでIRBを頭に置くを参照してください。
  3. 特定のインタラクティブセッションが終了したら、「」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}!

Webサーバーを起動すると次のようになります。

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

Webブラウザで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

さらなるデバッグ

行ベースのブレークポイントの設定、ステップ、または例外が発生したときのブレークなど、従来のデバッグコマンドを使用できるようにする場合は、Mon-OuieのPryDebugライブラリを参照してください。

于 2011-08-24T19:29:31.220 に答える
6

アプリケーションを Pry セッションにロードします。

あなたのを見てくださいconfig.ru。次のような場合:

require File.join(File.dirname(__FILE__), 'config', 'application.rb')

を使用して、アプリケーションを Pry にロードできます。

bundle exec pry -I . -r config/application.rb
# where -I . adds current dir to load path
# and -r is the file you want to require

これは、依存関係が満たされている限り、任意のモジュールまたはクラスで実行できます。

Pryの高度な使用例については、このPry チート シートを参照してください。

于 2014-04-04T13:18:54.683 に答える
4

私は pry-debugger の方が好きです。ただし、古典的なスタイルでシナトラを実行している間は、こじ開けることができないというトリックがまだあります。

sinatra アプリをデバッグする最良の方法を見つけるために、以下のようなリポジトリを github に作成しました。

ここに画像の説明を入力

リポジトリは次のとおりです: https://github.com/hlee/sinatra_debugger_example

于 2013-05-25T21:38:50.123 に答える