Je suis nouveau à l'utilisation de Pry, et essayer comme je pourrais, je ne peux pas trouver les bonnes commandes pour accéder à une instance middleware rack qui est en cours d'exécution avec une application Sinatra. J'ai mis binding.pry
dans la partie de l'application où j'ai une erreur, mais le problème est avec un assistant qui ne renvoie aucun résultat, et il obtient les résultats de l'info mis dans l'env par le middleware. J'ai essayé de cd`ing dans Rack :: GeoIPCity, mais cela ne m'a pas permis d'accéder aux informations sur les instances.Comment utiliser pry pour accéder à une instance middleware Rack?
Donc, je peux vérifier les gens du pays, l'aide et l'env - comment puis-je au middlewaredu code de l'application Sinatra?
par exemple.
class App < Sinatra::Base
# inside the Sinatra app
use Rack::GeoIPCity, :db => File.expand_path(File.join(File.dirname(__FILE__), "assets/GeoLiteCity.dat"))
def geo_city_info
h = {}
env.select{|x| x =~ /^GEOIP/ }.each {|k,v|
h[k.split("GEOIP_").last.downcase] = v
}
OpenStruct.new(h)
end
get "/home" do
geo = geo_city_info
binding.pry
end
end
donc au point où binding.pry
est appelé je peux facilement accéder geo
, env
(qui est une aide fournie par Sinatra en rack de env), et je pourrais facilement ajouter une liaison à l'intérieur du geo_city_info
si je voulais. Mais, je ne peux pas accéder au Rack :: GeoIPCity à partir de ces liaisons. J'espère qu'il y a une commande qui pourrait m'aider à y accéder, car elle doit faire partie du code de l'application chargée.
Bien sûr, je peux ouvrir les fichiers de code pour le middleware et mettre la reliure (comme j'installe toutes les bibliothèques dépendantes dans/vendor en utilisant Bundler), mais ce serait beaucoup mieux si je savais comment faire ceci sans recourir à cela.
Toute aide ou compréhension est très appréciée.
Je voudrais être capable d'accéder à l'instance qui a été utilisée (via 'use') depuis le code de l'application Sinatra. Je ne veux pas corriger le middleware (bien que ce soit ce que je ferai pour l'instant). Je vais essayer de nettoyer ma question pour la rendre plus claire. – iain
Excellent, bien repéré! – iain