有没有办法使用按键来调用撬动红宝石宝石?

2023-12-26

我只是在想,如果能够运行一个程序,然后敲击键盘来调用窥探和调试,那该有多好。也许那里有一种宝石可以注入binding.pry我不知道的运行时动态。如果没有,您将如何进行插入的按键binding.pry在即将执行的下一行 ruby​​ 脚本之前?


假设使用 POSIX 操作系统,您可以尝试在 ruby​​ 程序中添加信号处理程序。 ruby 文档甚至给出了您的用例的示例:

..您的进程可能会捕获 USR1 信号并使用它来切换调试(http://www.ruby-doc.org/core-2.1.3/Signal.html http://www.ruby-doc.org/core-2.1.3/Signal.html)

Signal.trap('USR1') do
  binding.pry
end

然后,发送信号:

kill -s SIGUSR1 [pid]

编辑:更完整的示例:application.rb

My naïve上面的建议将会失败,并显示ThreadError: current thread not owner。这是一个使用全局的更好的例子$debug flag.

#!/usr/bin/env ruby

require 'pry'

$debug = false
Signal.trap('USR1') do
  puts 'trapped USR1'
  $debug = true
end

class Application
  def run
    while true
      print '.'
      sleep 5
      binding.pry if $debug
    end
  end
end

Application.new.run

当 application.rb 在一个 shell 的前台运行并且您从单独的 shell 发送 SIGUSR1 信号时,这似乎效果最好。

在 Mac OS 10.9.5 中测试。 YMMV。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法使用按键来调用撬动红宝石宝石? 的相关文章

随机推荐

  • 评价我非法状态例外

    正在开发给我评分功能 在这方面遇到问题 我已经在名为 RateUss 的片段中编写了 Rate me 函数代码 但问题是 我没有启动该部分代码的确切位置 因此用户在导航视图中单击 速率 按钮 因此会出现此速率对话框 import andro
  • 优化 Google 脚本以隐藏列

    这两个脚本非常慢 我处理的数据集大约有 32 列 x 1000 行 增长速度相当快 我读过甚至使用过像数组一样处理数据的代码 这样你就可以只调用一次谷歌服务 但我不确定这如何帮助我解决这种情况 我需要根据使用谷歌表格的人隐藏某些列 这是实际
  • 带有两个行终止符的批量插入

    我正在尝试导入一个文本文件 因此结果只是一列的单独行中的单词 例如一段文字 你好妈妈 我们再见面 应该给出5条记录 Hello Mom we meet again 我尝试用以下方法来完成此任务BULK INSERT with ROWTERM
  • 线程本地存储可以被伪造/黑客攻击吗?

    我发现自己有点进退两难 我有一个大型应用程序 其中有 Google 的 V8 javascript 引擎 一些调用是在 UI 线程上对 V8 引擎进行的 为了像大家建议的那样对用户友好 一些长时间操作在单独的线程上运行 而不挂起 UI 线程
  • 应用程序如何确定其是否由于 Voip Push 而从终止状态启动?

    注意 这个问题是关于VoiP推送的 不是关于普通推送的 注意2 问题不是关于如何设置应用程序来接收 Voip 推送 请正确阅读它实际询问的内容 如果应用程序终止并且 Voip 推送到达 则 didFinishLaunchingWithOpt
  • 未知的 CS1003 错误

    我无法编译我的项目以在实体框架中进行代码优先迁移超过某个点 我正在从 xml 中读取值来填充表 我有以下代码 EnrolmentProgramStartDate var programQuery from r in context Enro
  • 我怎样才能让机器人自己变聋?

    我目前正在尝试让机器人在加入语音频道后立即将其震耳欲聋 我试过了 client ws voice setSelfDeaf true 我也被告知要使用 client ws send 但我不知道如何使用它 我有什么办法可以做到吗 client
  • 从终端杀死 iOS 模拟器

    我试图从终端控制台终止 iOS 模拟器 在 Jenkins 中集成自动 UI 测试所需 但每次我尝试以下命令时 killall SimulatorBridge a prompt waiting for action gets display
  • 使用 Jackson 将通用类序列化为 JSON

    我有一个代表调查问卷的对象结构 我需要序列化为 JSON 该结构的一类是 OpenQuestion 该类使用带有两个参数的泛型 当使用的其中一种类型是 Date 时 问题就开始了 日期序列化错误 比如 long 班级代码 public cl
  • OpenCl 清理导致段错误

    我使用网络上的不同来源构建了自己的 Opencl 小示例 实际的内核可以工作 并且我得到了我想要的输出 但是我在其中一个示例中发现的清理功能导致了段错误 我做错了什么 include
  • 隐藏
  • 而不创建空行
  • 我试图使用以下代码隐藏列表项 例如 ol li Coffee li li Milk li li tea li ol 但不幸的是 它呈现如下 并带有一个空行 1 Coffee 3 Tea 我想要的只是这样 1 Coffee 2 Tea 我想问
  • 如何调试mysql用户自定义函数?

    我有一个 mysql 函数 我想调试它 设置断点 查看该时间段的变量值等 怎么做 从我目前的搜索来看 尽管我可能错过了一些东西 我必须同意 Devart 的观点 即你无法调试 UDF 函数 给您的一项额外建议是使用 stderr 进行调试
  • 木偶、路由器和控制器配置新手

    我一直在研究各种木偶问题 但没有找到我想要的东西 希望有人能给我一些合理的建议和一些指示 我对此很陌生 只是想在我在 github 上选择的样板入门包上进行构建 https github com coombsj RequireJS Back
  • 如何避免 setViewValue 中 TextView/TextSwitcher 更新?

    我在 setViewValue 的代码中更新了 TextSwitcher 的文本 但如果数据库值没有改变 我想避免它的更新 这是我当前的代码 public boolean setViewValue View view Cursor curs
  • 列表列表及其索引中的最大值

    li 1 2 2 3 7 6 如何有效地找到最大值及其索引 假设对于li I want max value 7 max index 2 0 我可以这样做 max value 0 for row idx row in enumerate al
  • SignalR IOS 客户端、Web Socket 传输无法从服务器调用该方法

    我正在使用 SignalR ObjC 客户端在我的 IOS 应用程序和 Net 服务器之间提供通信 我可以连接长拉并调用来自自托管跨域服务器的方法 没有任何错误 但由于我的应用程序需要 我必须使用 WebSocket 我有一个像这样的单例经
  • 一次从 Eclipse 运行两个 Java 程序?

    我正在构建一个 Java Google App Engine 服务器项目和一个 Java 桌面客户端 我想同时运行它们 但我不确定使用 Eclipse GAE 插件是否可以做到这一点 有什么办法吗 我希望能够同时完成它们 我尝试打开一个新的
  • Altera Quartus 谎称未安装 Modelsim

    在 Fedora 22 64 位中安装 Quartus 13 0 和 Modelsim 在 32 位中运行 Quartus 因为否则我会遇到很多很多问题 不过 我可以启动 Quartus 创建项目 综合它 启动仿真窗口并配置输入信号 然后
  • 垂直(和水平)居中

    为什么尝试垂直或水平 或两者 对齐视口 或包装器 中心的某些内容如此痛苦 在过去的一个小时里 我已经尝试了所有我能找到的东西 从 W3Schools 到 S O 再到 MSDN 我只是不知道该怎么做 必须有一种简单的方法来做到这一点 为什么
  • 有没有办法使用按键来调用撬动红宝石宝石?

    我只是在想 如果能够运行一个程序 然后敲击键盘来调用窥探和调试 那该有多好 也许那里有一种宝石可以注入binding pry我不知道的运行时动态 如果没有 您将如何进行插入的按键binding pry在即将执行的下一行 ruby 脚本之前