Ich bin verwirrt darüber, welche Edelsteine installiert werden müssen, um Pry in einem Rails 4.2-Projekt korrekt auszuführen. Mir schien es bis vor Kurzem gut zu gehen. Aus irgendeinem Grund scheint binding.pry
jetzt zu spucken, wenn ich versuche, eine Konsolensitzung mit next
, step
usw. in der Befehlszeile zu durchlaufen. Es wird einen hässlichen Stack-Trace werfen, dann zeigen Sie mir den gleichen Punkt im Code, ohne weiter zu gehen. Nach dem zweiten Befehl next
wird dieselbe Stack-Ablaufverfolgung ausgelöst, und es wird beendet, wobei die Ausführung an den lokalen Host-Server zurückgegeben wird. Ich bekomme einen Laufzeitfehler auf der Browserseite mit No frames collected
.So richten Sie Pry in Rails 4.2 korrekt ein
Wenn ich die binding.pry
in meinem Code auskommentieren, funktioniert alles gut. Ich vermute also stark, dass mit meiner Konfiguration von Pry etwas nicht stimmt. Es scheint, als gäbe es mehrere Dutzend Varianten von Pry, ohne klare Anleitung, welche installiert werden sollten, was zu Konflikten führen könnte.
Hier ist der Stack-Trace, den ich bekomme, wenn ich in der Pry-Konsole next
anrufe Code erreicht die binding.pry
Aufruf:
From: /Users/me/sites/arailsapp/app/controllers/bars_controller.rb @ line 31 BarsController#edit:
29: def edit
30: binding.pry
=> 31: @bar = Bar.find(params[:id])
32: @foo = @bar.foo
33: end
[6] pry(#<BarsController>)> n
Completed 500 Internal Server Error in 2685ms (ActiveRecord: 0.0ms)
RuntimeError - No frames collected.:
pry-byebug (3.2.0) lib/byebug/processors/pry_processor.rb:122:in `perform_next'
pry-byebug (3.2.0) lib/byebug/processors/pry_processor.rb:60:in `perform'
pry-byebug (3.2.0) lib/byebug/processors/pry_processor.rb:49:in `run'
pry-byebug (3.2.0) lib/byebug/processors/pry_processor.rb:111:in `resume_pry'
pry-byebug (3.2.0) lib/byebug/processors/pry_processor.rb:69:in `at_line'
byebug (5.0.0) lib/byebug/context.rb:90:in `at_line'
app/controllers/scholarships_controller.rb:31:in `edit'
actionpack (4.2.1) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (4.2.1) lib/abstract_controller/base.rb:198:in `process_action'
actionpack (4.2.1) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.2.1) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
activesupport (4.2.1) lib/active_support/callbacks.rb:117:in `call'
# omitting the next ~40 lines in the Rails stack...
zweite Strophe sieht gleich wie die erste - und an diesem Punkt kehrt die Ausführung an den Server.
Hier ist meine Gemfile:
source 'https://rubygems.org'
ruby '2.2.0'
gem 'rails', '4.2.1'
gem 'pg', '~> 0.18.2'
gem 'haml-rails', '~> 0.9.0'
gem 'sass-rails', '~> 5.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'will_paginate', '~> 3.0.7'
gem 'will_paginate-bootstrap'
gem "nilify_blanks"
gem 'filterrific', '~> 2.0.5'
gem 'chardinjs-rails'
# Install bootstrap and associated gems
gem 'bootstrap-sass', '~> 3.3.4.1'
gem 'autoprefixer-rails', '~> 5.2.0'
# Use ActiveModel has_secure_password
gem 'bcrypt', '~> 3.1.7'
group :production do
gem 'rails_12factor', '~> 0.0.3'
end
group :assets do
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
end
group :development do
gem 'better_errors', '~> 2.1.1'
gem 'annotate', '~> 2.6.10'
end
group :development, :test do
gem 'pry-rails'
gem 'pry-stack_explorer'
gem 'pry-byebug'
gem 'web-console', '~> 2.0'
gem 'spring'
gem 'spring-commands-rspec', '~> 1.0.4'
gem 'rspec-rails', '~> 3.2.3'
gem 'guard-rspec', '~> 4.6.0'
gem 'sqlite3'
gem 'factory_girl_rails', '~> 4.5.0', require: false
end
group :test do
gem 'database_cleaner', '~> 1.4.1'
gem 'faker', '~> 1.4.3'
gem 'capybara', '~> 2.4.4'
gem 'launchy', '~> 2.4.3'
gem 'shoulda', '~> 3.5.0'
end
ich auch mit den pry-stack_explorer
und pry-byebug
Edelsteine auf Kommentar ... keinen Unterschied ausprobiert habe.
Und schließlich meine .pryrc Datei:
# ~/.pryrc
if defined?(PryByebug)
Pry.commands.alias_command 'c', 'continue'
Pry.commands.alias_command 's', 'step'
Pry.commands.alias_command 'n', 'next'
Pry.commands.alias_command 'f', 'finish'
end
# Hit Enter to repeat last command
Pry::Commands.command /^$/, "repeat last command" do
_pry_.run_command Pry.history.to_a.last
end
Ich benutze nur Pry-Schienen. Manchmal habe ich es mit Byebug (nicht mit dem Byebug) verwendet. Beginnen Sie vielleicht mit nur einem und achten Sie darauf, beim Aktualisieren zu bündeln. Diese Edelsteine können manchmal Fehler im Kaninchenloch verursachen, also fügen Sie etwas Logging hinzu, wenn Sie nicht davon überzeugt sind, was meins berichtet. – margo
Als erstes entferne 'pry-stack_explorer' von dir Gemfile und rebundle. Dieser Edelstein ist nicht kompatibel mit "pry-byebug" und "pry-byebug" bietet gleichwertige Funktionalität, so dass es einfach nicht notwendig ist. – deivid
@ deivid sorry, vielleicht bin ich verwirrt, aber was ist die äquivalente Funktionalität zu Show-Stack, dass Pry-byebug bietet? Ich sehe keine Möglichkeit, den aktuellen Stapel anzuzeigen. "Pry-Backtrace" ist in der Nähe, aber es ist mit internen Pry-Methoden vollgestopft. – elju