2015-08-09 13 views
5

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 
+0

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

+0

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

+0

@ 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

Antwort

2

Einige Hantieren und ein paar Server neu gestartet erscheint das Problem behoben zu haben. Danke an Deivid für das Removieren von pry-stack_explorer. Hier ist die Gemfile für die Test-und Entwicklungsgruppen:

group :development do 
    gem 'better_errors', '~> 2.1.1' 
    gem 'annotate', '~> 2.6.10' 
end 

group :development, :test do 
    gem 'pry-rails' 
    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 
Verwandte Themen