pry gem如何重装?

Nik*_* So 35 ruby-on-rails pry

我在我的Rails控制台中使用Pry gem,但是pry风味的rails-console似乎已经失去了重载!重新加载模型和东西的方法.

以下是我启动pry控制台的方法

c:\rails\app> pry -r ./config/environment
Run Code Online (Sandbox Code Playgroud)

谢谢

Rod*_*ias 20

要使用重装!像rails console命令一样,将此代码添加到.pryrc中

# load Rails Console helpers like reload
require 'rails/console/app'
extend Rails::ConsoleMethods
puts 'Rails Console Helpers loaded'
Run Code Online (Sandbox Code Playgroud)

编辑== Gem pry-rails已经完成了所有这些,更加简单.


tel*_*ent 12

对于最近提出这个问题的人来说:Rails 3.2中的答案已经改变,因为他们已经改变了他们的实现方式reload! .在早期版本中,irb命令被添加为方法Object,现在将它们添加到IRB::ExtendCommandBundle以避免污染全局命名空间.

我现在所做的是(1)在development.rb中

silence_warnings do
  begin
    require 'pry'
    IRB = Pry
    module Pry::RailsCommands ;end
    IRB::ExtendCommandBundle = Pry::RailsCommands
  rescue LoadError
  end
end
Run Code Online (Sandbox Code Playgroud)

(2)在.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
Run Code Online (Sandbox Code Playgroud)

这是引入更改的Rails pull请求的链接 - https://github.com/rails/rails/pull/3509


Sim*_*nst 6

你可以告诉Pry加载你的Rails环境 .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
Run Code Online (Sandbox Code Playgroud)

这会让你reload!回来.

  • 在Rails 3.2中我还需要说`include Rails :: ConsoleMethods` (2认同)

hor*_*guy 6

你可以在Pry wiki上查看这个页面:https://github.com/pry/pry/wiki/Setting-up-Rails-or-Heroku-to-use-Pry

另请查看pry-rails插件:https://github.com/rweng/pry-rails

该维基上还有很多其他内容,这是一个很好的资源.

  • pry-rails不会添加`reload!` (4认同)