我可以从正在运行的Ruby脚本中转到IRB提示符吗?
我想运行一个脚本,但是然后让它在程序中的一个点上给出一个IRB提示符,其中包含程序的当前状态,但不仅仅是运行rdebug并有一个断点.
hor*_*guy 45
Pry(一个IRB替代方案)也可以让你这样做,实际上它是从头开始设计的,正是这个用例:)
就像binding.pry你想要开始会话一样简单:
require 'pry'
x = 10
binding.pry
Run Code Online (Sandbox Code Playgroud)
在会议内部:
pry(main)> puts x
=> 10
Run Code Online (Sandbox Code Playgroud)
查看网站:http://pry.github.com
怜悯让你:
edit obj.my_method语法编辑方法一吨更加伟大和原始的功能
Sub*_*Rao 29
你可以使用ruby-debug来访问irb
require 'rubygems'
require 'ruby-debug'
x = 23
puts "welcome"
debugger
puts "end"
Run Code Online (Sandbox Code Playgroud)
当程序到达调试器时,您将可以访问irb.
rog*_*ack 14
显然它需要一大堆代码才能进入irb.
这是链接(似乎运作良好).
http://jameskilton.com/2009/04/02/embedding-irb-into-your-ruby-application
require 'irb'
module IRB
def self.start_session(binding) # call this method to drop into irb
unless @__initialized
args = ARGV
ARGV.replace(ARGV.dup)
IRB.setup(nil)
ARGV.replace(args)
@__initialized = true
end
workspace = WorkSpace.new(binding)
irb = Irb.new(workspace)
@CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
@CONF[:MAIN_CONTEXT] = irb.context
catch(:IRB_EXIT) do
irb.eval_input
end
end
end
Run Code Online (Sandbox Code Playgroud)
Ruby 2.4提供此功能.你可以使用binding.irb
例如
require 'irb'
a = 10
binding.irb
puts a
Run Code Online (Sandbox Code Playgroud)
如果运行上面的代码,您将获得irb控制台,以便您可以检查局部变量的值以及范围内的任何其他内容.
资料来源:http://blog.redpanthers.co/new-binding-irb-introduced-ruby-2-4/
Ruby提交:https://github.com/ruby/ruby/commit/493e48897421d176a8faf0f0820323d79ecdf94a
| 归档时间: |
|
| 查看次数: |
10747 次 |
| 最近记录: |