2011-09-08 5 views
30

Tôi đang sử dụng đá quý Pry trong bảng điều khiển Rails của tôi, nhưng bảng điều khiển rails có hương vị nâng lên dường như đã bị mất tải lại! phương pháp tải lại các mô hình và nội dung.pry gem làm thế nào để tải lại?

Đây là cách tôi bắt đầu nâng lên console

c:\rails\app> pry -r ./config/environment 

cảm ơn

+0

Cảm ơn, tất cả mọi người! –

Trả lời

1

Bạn có nghĩa ./config/environment?

Trong mọi trường hợp, tôi nghĩ điều đó khác với việc thực sự khởi chạy bảng điều khiển đường ray, đây là nơi xuất phát của reload!. Tôi xác định lại IRB = Pry trong tệp cấu hình env cụ thể của mình, đảm bảo bảng điều khiển đầy đủ và tất cả hoạt động như một nét duyên dáng.

2

Gần đây tôi đã viết một bài đăng về nâng lên và đường ray. Bạn có thể tìm thấy nó ở đây http://lucapette.com/pry/pry-everywhere/. Nhân tiện, như đã nói, bạn muốn sử dụng pry với:

pry -r ./config/environment 

Tôi khuyên bạn nên thử những gì tôi đã viết trong bài viết, nó hoạt động thực sự tốt.

+0

Bạn có thể sử dụng 'RAILS_ENV = production pry -r./Config/environment' để sử dụng trong môi trường sản xuất. –

6

Bạn có thể nói Pry để tải môi trường Rails của bạn trong .pryrc

rails = File.join Dir.getwd, 'config', 'environment.rb' 

if File.exist?(rails) && ENV['SKIP_RAILS'].nil? 
    require rails 

    if Rails.version[0..0] == "2" 
    require 'console_app' 
    require 'console_with_helpers' 
    elsif Rails.version[0..0] == "3" 
    require 'rails/console/app' 
    require 'rails/console/helpers' 
    else 
    warn "[WARN] cannot load Rails console commands (Not on Rails2 or Rails3?)" 
    end 
end 

này sẽ cung cấp reload! lưng.

+0

Cảm ơn Netmute, điều này làm việc tốt nhất cho đến nay từ những gì tôi có thể nhìn thấy. –

+1

ahhhh, tải lại! dường như đang hoạt động nhưng thực sự không tải lại bất kỳ mô hình nào; Tuy nhiên, các plugin từ câu trả lời của Banister dường như làm điều đó –

+2

trong Rails 3.2 Tôi cũng cần phải nói 'bao gồm Rails :: ConsoleMethods' – Peter

2
alias pryr="pry -r ./config/environment -r rails/console/app -r rails/console/helpers" 
12

Đối với bất cứ ai đến với câu hỏi này thời gian gần đây: câu trả lời đã thay đổi trong Rails 3.2, bởi vì họ đã thay đổi cách họ thực hiện reload! đâu trong phiên bản trước đó các lệnh IRB được thêm vào như là phương pháp để Object, bây giờ chúng được bổ sung đến IRB::ExtendCommandBundle để tránh gây ô nhiễm không gian tên chung.

Những gì tôi làm bây giờ là (1) trong development.rb

silence_warnings do 
    begin 
    require 'pry' 
    IRB = Pry 
    module Pry::RailsCommands ;end 
    IRB::ExtendCommandBundle = Pry::RailsCommands 
    rescue LoadError 
    end 
end 

và (2) trong .pryrc

if Kernel.const_defined?("Rails") then 
    require File.join(Rails.root,"config","environment") 
    require 'rails/console/app' 
    require 'rails/console/helpers' 
    Pry::RailsCommands.instance_methods.each do |name| 
    Pry::Commands.command name.to_s do 
     Class.new.extend(Pry::RailsCommands).send(name) 
    end 
    end 
end 

Đây là liên kết với Rails kéo yêu cầu nơi sự thay đổi đã được giới thiệu - https://github.com/rails/rails/pull/3509

+2

pry-rails hoạt động với đường ray 3.2 – tee

15

Để sử dụng tải lại! như lệnh đường ray giao diện điều khiển, thêm mã này vào .pryrc bạn

# load Rails Console helpers like reload 
require 'rails/console/app' 
extend Rails::ConsoleMethods 
puts 'Rails Console Helpers loaded' 

EDIT == Gem nâng lên-ray đã làm tất cả những điều này, đơn giản hơn nhiều.

+0

với đá quý "pry" được cài đặt tất nhiên –

2

Nếu bạn đang gặp rắc rối với Zeus và Pry, hãy thử thêm vào .pryrc của bạn:

if Kernel.const_defined?(:Rails) && Rails.env 
    require File.join(Rails.root,"config","environment") 
    require 'rails/console/app' 
    require 'rails/console/helpers' 
    extend Rails::ConsoleMethods 
end 

Taken từ here