如何从运行脚本中删除IRB提示符?
我可以从正在运行的Ruby脚本下降到IRB提示符吗?
我想运行一个脚本,但是在程序当前的状态下给它一个IRB提示符,而不仅仅是运行rdebug并且有一个断点。
你可以使用ruby-debug来访问irb
require 'rubygems' require 'ruby-debug' x = 23 puts "welcome" debugger puts "end"
当程序到达debugging器时,您将可以访问irb。
撬 (IRB的替代)也可以让你做到这一点,实际上它是从根本上devise的这个用例:)
把binding.pry
放在你想开始会话的地方,
require 'pry' x = 10 binding.pry
在会议中:
pry(main)> puts x => 10
检查网站: http : //pry.github.com
撬让你的:
- 在您的代码中的任何时刻放入会话
- 查看方法的源代码
- 查看方法文档(不使用RI,所以你不必预先生成它)
- popup和popup不同的上下文
- 语法高亮
- 主旨融合
- 查看和重放历史logging
- 打开编辑器使用
edit obj.my_method
语法编辑方法
一吨更伟大和原始的特点
显然它需要一大块代码才能进入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
这个特性可以从Ruby 2.4中获得。 你可以使用binding.irb
例如
require 'irb' a = 10 binding.irb puts a
如果你运行上面的代码,你将得到irb控制台,这样你就可以检查局部variables的值和其他任何在范围内的值。
资料来源: http : //blog.redpanthers.co/new-binding-irb-introduced-ruby-2-4/
Ruby提交: https : //github.com/ruby/ruby/commit/493e48897421d176a8faf0f0820323d79ecdf94a
只需将此行添加到您想要的断点:
require 'ruby-debug';debugger
但我build议使用pry而不是irb,这是超方便的,插入下面的行代替:
require 'pry'; binding.pry