ruby - Comment utiliser Pry avec Sinatra?



(3)

J'écris ma première application Sinatra et j'aimerais utiliser Pry pour inspecter / déboguer certaines choses qui se passent dans l'application. Je n'ai pas utilisé Pry auparavant non plus, mais j'aimerais bien l'essayer. Comment pourrais-je commencer à utiliser Pry avec mon application Sinatra?

https://ffff65535.com


Résumé

  1. Utilisez require 'pry' en haut de votre application.
  2. Appelez binding.pry dans votre code chaque fois que vous souhaitez accéder à la session interactive. Pour plus d'informations sur l'utilisation de Pry, reportez-vous à la rubrique Inversion du composant IRB avec Pry et le wiki Pry .
  3. Lorsque vous avez terminé avec une session interactive particulière, tapez exit ou Ctrl-D; Sinatra recommencera à courir là où il s'est arrêté.

Exemple

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}!

Voici à quoi ça ressemble quand je démarre le serveur 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

Lorsque je lance une requête dans un navigateur Web sur http: // localhost: 4567, la console accède au débogueur Pry avant d'envoyer le résultat:

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

Débogage ultérieur

Si vous souhaitez pouvoir utiliser les commandes de débogage traditionnelles, telles que la définition de points d'arrêt basés sur une ligne, le pas à pas ou la rupture lorsque des exceptions sont PryDebug , voir la bibliothèque PryDebug de Mon-Ouie.


Je préfère pry-debugger. Cependant, il y a toujours un truc, c'est que vous ne pouvez pas faire levier pendant que vous exécutez une sinatra sous un style classique.

Afin de trouver le meilleur moyen de déboguer l'application Sinatra, j'ai créé un dépôt chez github, qui se présente ci-dessous.

Voici le référentiel: https://github.com/hlee/sinatra_debugger_example


Chargez l'application dans une session Pry:

Jetez un oeil à votre config.ru . Si cela ressemble à quelque chose comme ça:

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

vous pouvez charger votre application dans Pry en utilisant

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

Cela peut être fait avec n'importe quel module ou classe tant que les dépendances sont respectées.

Consultez cette aide-mémoire Pry pour des exemples avancés d'utilisation de Pry.





pry