如何将 STDOUT 捕获到字符串?

2024-05-28

puts "hi"
puts "bye"

我想存储到目前为止代码的 STDOUT (在本例中 hi \nbye 到变量中说“结果”并打印它)

puts result

我这样做的原因是我已将 R 代码集成到我的 Ruby 代码中,当 R 代码运行时,其输出将提供给 STDOUT,但无法在代码内部访问输出以进行某些评估。抱歉,如果这令人困惑。所以“puts result”行应该给我打招呼和再见。


一个方便的函数,用于将标准输出捕获到字符串中......

以下方法是一个方便的通用工具,用于捕获 stdout 并将其作为字符串返回。 (我在单元测试中经常使用它,我想验证打印到标准输出的内容。)特别注意使用ensure恢复 $stdout 的子句(并避免惊讶):

def with_captured_stdout
  original_stdout = $stdout  # capture previous value of $stdout
  $stdout = StringIO.new     # assign a string buffer to $stdout
  yield                      # perform the body of the user code
  $stdout.string             # return the contents of the string buffer
ensure
  $stdout = original_stdout  # restore $stdout to its previous value
end

因此,例如:

>> str = with_captured_stdout { puts "hi"; puts "bye"}
=> "hi\nbye\n"
>> print str
hi
bye
=> nil
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 STDOUT 捕获到字符串? 的相关文章

  • Ruby 中救援的替代方案?

    好像我有begin rescue end我的代码中到处都是语句 这似乎不是正确的做法 谁能建议我如何捕获任何异常而不必将所有内容都放在里面begin rescue end 有什么方法可以让 Ruby 闭嘴并继续前进 即使出现异常也是如此 与
  • 使用 String#sum 的 Ruby Anagram

    我已经解决了一个问题 要求您编写一个方法来确定所提供的数组中的哪些单词是字谜词 并将字谜词分组到输出中的子数组中 我已经使用似乎是典型的方式解决了这个问题 即对单词进行排序并根据其排序的字符将它们分组为散列 当我最初开始寻找一种方法来做到这
  • 设计路由错误

    设置设备时我似乎无法克服此错误 Routing Error wrong constant name Devise registrationsController or Routing Error wrong constant name De
  • 在 Mac OS X 上升级 Ruby

    我正在阅读 Programming Ruby 一书 并希望升级我计算机上的 Ruby 版本 我运行 Mac OS X Snow Leopard 并在命令行中执行 ruby v 显示我正在运行 Ruby 1 8 7 我安装了 MacPorts
  • Rails 5.1 中的 Ruby 2.4 Enumerable#sum 中断

    在使用 Ruby 2 3 5 的 Rails 5 1 4 中 我得到以下行为 gt gt sum gt nil 我想升级到 Ruby 2 4 其中 Enumerable sum 是本机实现的 使用 Ruby 2 4 2 在 IRB 中对此进
  • 声明实例变量迭代哈希!

    我想做以下事情 我想声明一个迭代字典的类的实例变量 假设我有这个哈希 hash key1 gt value1 key2 gt value2 key3 gt value3 我想将每个键作为类的实例变量 我想知道我是否可以声明迭代该哈希的变量
  • 为什么我的 RSpec 规格运行两次?

    我在我的文件中定义了以下 RSpec 1 3 0 任务Rakefile require spec rake spectask Spec Rake SpecTask new spec do spec spec libs lt lt lib l
  • 使用 Ruby SDK 将文件上传到 Amazon S3

    我正在尝试上传文件 一个简单的 hello txt 我正在关注文档 但无法将其上传到我的存储桶 START AWS CLIENT s3 Aws S3 Resource new bucket s3 bucket BUCKET NAME beg
  • 使用 mongodb/mongoid 排序时,有没有办法将所有 nil 值放在最后?

    除了问题中已有的内容之外 确实没什么可说的 使用 monoid People asc age 我首先得到零值 有没有办法总是返回nillast 或者告诉 mongodb 将 nil 视为非常高 与回答的完全一样sql中同样的问题在这里 ht
  • ruby Sequel gem - 如何使用 pg_array 扩展查询数组

    我正在使用pg array http sequel jeremyevans net rdoc plugins files lib sequel extensions pg array rb html扩展和续集版本 4 1 1 我添加了这样的
  • 葡萄错误处理策略?

    我正在使用 Grape 和 Rails 创建 REST API 我已经有了基本的架构 并且正在寻找可以 清理 东西的地方 其中之一是错误处理 处理 我目前正在修复整个 API 的 root rb GRAPE API 基类 文件中的错误 我对
  • 安装 mysql2 时出错:无法构建 gem 本机扩展

    我在尝试安装时遇到一些问题mysql2Rails 的宝石 当我尝试通过运行安装它时bundle install or gem install mysql2它给了我以下错误 安装 mysql2 时出错 错误 无法构建 gem 本机扩展 我该如
  • 如何在 Rails 应用程序中选择性地跟踪方法及其文件访问?

    对于 Rails 应用程序 我想重载或修改 Kernel load 以便它打印出完整路径 例如puts gt File expand path File dirname FILE File basename FILE 对于加载的每个 Rai
  • 捆绑安装无法安装 libxml-ruby

    我是 Ruby 世界的新手 我需要克隆一个现有项目 说明是 source env development bundle install 但它失败了 Using libv8 3 16 14 15 Fetching libxml ruby 2
  • Ruby:如何将多个方法调用与“发送”链接在一起

    必须有一种内置的方法来做到这一点 对吧 class Object def send chain arr o self arr each a o o send a return o end end 我刚刚遇到了这个 它确实需要注入 def s
  • 获取类别和子类别的所有产品(rails、awesome_nested_set)

    正在开发一个电子商务应用程序 我试图解决以下问题 我通过 Awesome nested set 插件实现了我的类别 如果我通过选择一个类别列出我的文章 一切正常 但对于某些链接 我想显示一个类别的所有产品及其子类别的产品 这是仅适用于一种类
  • Ruby 中的图像抓取

    如何使用 Nokogiri 抓取特定 URL 上存在的图像 如果有比 Nokogiri 更好的选择 请提出建议 css图像标签是 profilePic img 如果它只是一个 img 带有网址 PAGE http site com page
  • 登录西纳特拉?

    我无法弄清楚如何使用 Sinatra 记录消息 我不想记录请求 而是在我的应用程序中的某些点记录自定义消息 例如 当获取 URL 时 我想记录 Fetching url 这就是我想要的 指定日志级别的能力 例如 logger info Fe
  • 将用户输入转换为整数

    所以我有一个用户可以输入价格的表格 我正在尝试创建一个 before validation 来规范化数据 如果用户放置 则剪裁它 before validation do unless self price blank then self
  • 为什么这段 Ruby 代码无法写入日志文件?

    一旦脚本被守护 记录器就无法再写入文件 那么我应该如何以及何时初始化日志呢 require rubygems require daemons require logging def create new logger logger Logg

随机推荐

  • 如何在 Symfony 和 Doctrine 中实现 ManyToMany 和 OneToMany?

    我发现该文档在解释实体之间关系的创建方面非常糟糕 因此 我必须向我的 StackExchangers 同胞寻求帮助 所以 我正在尝试构建以下案例 Case 1 A User属于一个或多个Group and a Group可以有很多Permi
  • 我应该在这里使用 HttpResponseRedirect 吗?

    我正在使用 Django 教程进行 Tango 并且我已经成功完成了教程 但是我注意到官方 Django 民意调查教程 https docs djangoproject com en 2 1 intro tutorial04 write a
  • Spring Data Redis 覆盖默认序列化器

    我正在尝试创建一个RedisTemplatebean 将具有更新的值序列化器来序列化对象JSONredis 中的格式 Configuration class RedisConfig Bean name redisTemplate Prima
  • 为什么table-layout:fixed会影响父元素的宽度?

    有人可以解释为什么我的div with table layout fixed正在改变其父元素的宽度 body在本例中 使其在不应该是 100 的情况下达到 100 因为它已经定位了 body border 2px solid red hei
  • Google Play 商店中的 Android 应用程序与 LG G3(密度 538,尺寸 2560x1440)不兼容?

    Android 应用程序与具有高分辨率和密度的 LG G3 设备不兼容 我已经在清单中测试了以下配置 支持屏幕和兼容屏幕都不起作用
  • 如何编写 Maven 构建脚本来执行 Java

    如何在构建过程中或构建刚刚完成后执行 Java 程序 可以直接从 pom 中执行此操作吗 mvn exec java Dexec mainClass org sonatype mavenbook weather Main EDIT 假设我想
  • 如何使用 python(版本 2.5)压缩文件夹的内容?

    一旦我在特定文件夹中拥有了所需的所有文件 我希望我的 python 脚本能够压缩文件夹内容 这可能吗 我该如何去做呢 在 python 2 7 上你可以使用 Shutil make archive base name 格式 root dir
  • Nuxt.js 安装错误

    我已经尝试安装 nuxt app 应用程序几次了 我已经在终端中使用 npm 和yarn 并以管理员身份在 powershell 中运行了它 我在创建应用程序时继续遇到错误 我在下面包含了错误日志以供参考 我think认为问题出在这个抛出错
  • 读取4个点的坐标。他们做一个正方形吗?

    我计算点之间的距离 如果距离相等 则点构成一个正方形 否则不 仅当我按以下顺序读取坐标 A x y B x y C x y D x y 或相反时 我的代码才有效 但是如果我这样读 例如 A x y B x y D x y C x y 它将不
  • JS_WrapObject 的作用是什么?

    我正在为 Cocos2D JavaScript 做一些额外的绑定 并且必须了解它是如何工作的 SpiderMonkey 是什么意思JS WrapObject 定义于jsapi h做 我似乎找不到关于它的好文档 并且它没有出现在JSAPI 参
  • PetaPoco 数据库类应该在每个请求时创建一次还是在每次需要时创建?

    对于 PetaPoco 我应该如何处理创建Database班级 我的应用程序可能会利用各种存储库 不完全是 DDD 存储库 更像是网关存储库 来封装查询 由于我将有多个需要访问同一数据库连接的存储库 因此我正在考虑创建一个基类 在构造函数中
  • 这两个 Google JS 客户端 CDN 有什么区别?

    A versus B 唯一的区别是api before client js CDN A用于网站的 Google 登录 docs https developers google com identity sign in web build b
  • 反应超出最大调用堆栈大小

    如果用户未登录 我尝试将用户重定向到 TrapPage 这是我的代码 function requireAuth nextState replace if auth loggedIn replace pathname trap export
  • 将自定义顶点添加到增强图

    如果我有 n 个用 CElement 类定义的元素 如何使用 boost graph 创建这些元素的顶点 并将它们连接起来 我见过 boost graph 捆绑的道具 但我就是想不通这个 我不明白你到底想做什么 您想将一些数据关联到顶点吗
  • CRM 2011 功能区 DisplayRule ValueRule 检查 null

    很快 我没有看到任何直接答案 所以我想我会问 这里是在微软社交网站上提出了同样的问题 http social microsoft com Forums eu crmdevelopment thread 44d1187d 547d 49c5
  • 哈希 MySQL 数据库架构

    我想对 MySQL 数据库模式 没有数据 进行哈希 签名 以便对其进行校验和 以确保它不被其他人修改 我怎样才能实现它 据我了解您的问题 您需要表校验和 checksum table table 所以 我想 只需对空表进行校验和
  • ant design select占位符问题

    我在我的 React 应用程序中使用 antd design 这是我遇到问题的代码片段
  • 为什么Android room不建议使用allowMainThreadQueries()?

    我正在创建一个小型应用程序 仅在数据库中保存一些计数器 如果不存在 请插入一个 如果是的话 增加更新 该应用程序没有任何用户界面 它是一个保存和读取数据 少量表 少量记录 的插件 我可以用吗允许主线程查询 在这种情况下 每次我读到一些关于这
  • 异步编程设计模式

    我正在为 CF NET 开发一个小型技术框架 我的问题是 我应该如何编写异步部分的代码 在 MSDN 上阅读了很多内容 但我不太清楚 所以 这是代码 public class A public IAsyncResult BeginExecu
  • 如何将 STDOUT 捕获到字符串?

    puts hi puts bye 我想存储到目前为止代码的 STDOUT 在本例中 hi nbye 到变量中说 结果 并打印它 puts result 我这样做的原因是我已将 R 代码集成到我的 Ruby 代码中 当 R 代码运行时 其输出