2013-01-04 23 views
27

Tôi đang sử dụng bảo vệ-ray để chạy máy chủ ray của tôi, vấn đề của tôi là tôi không thể truy cập REPL khi tôi thêm binding.pry tôi chỉ nhận đượcGuard-ray không cung cấp REPL cho binding.pry

From: /home/martinr/code/app/controllers/tools_controller.rb @ line 2 ToolsController#index: 

    2: def index 
=> 3: binding.pry 
    4: @end_date = Date.today.to_s 
    5: @start_date = Date.today.months_ago(3).to_s 
    7: end 

[1] pry(#<ToolsController>)> 

Không có REPL, làm thế nào để sử dụng nâng lên với đường ray bảo vệ?

tập tin Gemfile của tôi trông như thế này

group :development, :test do 
    gem 'pry-rails' # for better console debugging 
    gem 'pry-debugger' 
    gem 'rb-inotify' 
    gem 'sqlite3' 
end 

My Guardfile:

guard 'rails', :debugger => true do 
    watch('Gemfile.lock') 
    watch(%r{^(config|lib)/.*}) 
end 
+0

Ý của bạn là gì? Bạn không thể gõ bất cứ điều gì hoặc những gì? – kyrylo

+1

Tôi có nghĩa là nó có vẻ để tải REPL và chỉ tiếp tục thực hiện chương trình. Nó không cho bạn cơ hội tương tác với REPL. – Martinffx

+0

Có tin tức gì về điều này không? Sẽ rất tuyệt khi làm việc này. –

Trả lời

3

Tôi đang cố gắng một điều tương tự, và cũng không thể có được nó để làm việc. Vấn đề có vẻ là đọc từ stdin không chặn, vì vậy Pry không chặn. Mọi đọc từ STDIN đều trả về ngay lập tức.

rspec -X console.rb 

file sau:

require 'spec_helper' 

describe 'console' do 
    it 'opens!' do 
    Pry.config.input = STDIN 
    Pry.config.output = STDOUT 
    puts STDIN.closed? # returns false 
    binding.pry # returns right away, does not block 
    gets # returns right way, does not block 
    end 
end 
4

tôi đã thiết lập môi trường đường ray của tôi với Guard và Spork và tôi thấy rằng ràng buộc-nâng lên hoạt động kỳ lạ với bảo vệ. Nếu tôi chèn binding.pry vào mã và sau đó bảo vệ khởi động lại các thử nghiệm của tôi, không có gỡ lỗi tương tác. Nhưng nếu tôi thoát ra và bắt đầu bảo vệ một lần nữa, nó hoạt động và đột nhập vào chế độ tương tác một cách chính xác.

Tuy nhiên ... nếu tôi sau đó xóa dòng binding.pry, bảo vệ sẽ chạy lại các thử nghiệm như được cho là, nhưng sẽ phá vỡ ở nơi đường kết nối được sử dụng, mặc dù nó không còn ở đó nữa.

Dường như bạn phải khởi động lại bảo vệ mỗi lần bạn chèn hoặc loại bỏ các ràng buộc nâng lên.

Gây khó chịu nhưng vẫn tốt hơn là không có quyền truy cập để nâng lên trong các thử nghiệm của bạn.

Các vấn đề liên quan