2015-08-09 14 views
5

Tôi đang nhầm lẫn về những viên ngọc cần được cài đặt để chạy Pry đúng cách trong dự án Rails 4.2. Tôi dường như đã làm tốt cho đến gần đây. Vì lý do nào đó, binding.pry bây giờ có vẻ như sẽ nhổ ra bất cứ khi nào tôi cố gắng thực hiện một phiên giao diện điều khiển với next, step, v.v. trong dòng lệnh. Nó sẽ ném một dấu vết ngăn xếp xấu xí, sau đó hiển thị cho tôi cùng một điểm trong mã, mà không cần bước xa hơn. Sau lệnh thứ hai next, nó ném cùng một dấu vết ngăn xếp và thoát, trả về thực thi cho máy chủ cục bộ. Tôi gặp lỗi thời gian chạy trên trang trình duyệt với No frames collected.Cách thiết lập chính xác Pry in Rails 4.2

Nếu tôi nhận xét số binding.pry trong mã của mình, mọi thứ đều hoạt động tốt. Vì vậy, tôi mạnh mẽ nghi ngờ một cái gì đó là sai với cấu hình của tôi của Pry. Có vẻ như có vài chục biến thể của Pry, không có hướng dẫn rõ ràng về việc cài đặt cái nào, có thể xung đột, v.v.

Đây là dấu vết ngăn xếp tôi nhận được khi gọi next trong bảng điều khiển Pry sau mã đạt đến số gọi binding.pry:

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... 

Câu thứ hai trông giống như lần đầu tiên - tại điểm thực thi trở lại máy chủ.

Đây là Gemfile tôi:

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 

Tôi cũng đã thử với pry-stack_explorerpry-byebug ngọc nhận xét ra ... không có sự khác biệt.

Và cuối cùng, tập tin .pryrc tôi:

# ~/.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

Tôi chỉ sử dụng đường ray nâng lên. Đôi khi tôi đã sử dụng nó với byebug (không pry-byebug). Có lẽ bắt đầu chỉ với một và chắc chắn gói khi cập nhật. Những viên đá quý đôi khi có thể ném lên các lỗi lỗ thỏ, do đó, thêm một số đăng nhập nếu bạn không bị thuyết phục bởi những gì nâng lên báo cáo. – margo

+0

Trước hết, xóa 'pry-stack_explorer' khỏi bạn Gemfile và rebundle. Đá quý đó không tương thích với 'pry-byebug' và' pry-byebug' cung cấp chức năng tương đương nên nó không cần thiết. – deivid

+0

@deivid xin lỗi, có thể tôi đang bối rối, nhưng chức năng tương đương nào để hiển thị ngăn xếp mà cung cấp nâng cao? Tôi không thấy bất kỳ khả năng hiển thị ngăn xếp hiện tại. "pry-backtrace" là gần, nhưng nó lộn xộn với các phương pháp nâng cao nội bộ. – elju

Trả lời

2

Một số quan trọng xung quanh và một vài lần khởi động lại máy chủ dường như đã cố định vấn đề này. Cảm ơn Deivid vì đã đề xuất sửa đổi pry-stack_explorer. Đây là Gemfile cho các nhóm thử nghiệm và phát triển:

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 
Các vấn đề liên quan