【问题标题】:How to write to stdout with Ruby on Bluemix?如何在 Bluemix 上使用 Ruby 写入标准输出?
【发布时间】:2016-01-06 05:41:15
【问题描述】:

我正在使用开箱即用的 Bluemix Ruby buildpack。 我在我的主 *.rb 文件中添加了一些 puts 行,但在拖尾日志时没有出现任何内容:

cf logs myapp

搜索文档,我在 developerWorks 找到了 this 帖子,建议将运行时设置为开发模式。

我试过了:

cf set-env myapp RAILS_ENV development

并添加到代码中:

ENV['RAILS_ENV'] = 'development'

但日志中没有出现任何内容。

还尝试了 Sinatra 选项(更改代码后),结果相同:

set :environment, :development
set :logging, true

有趣的是,如果我停止应用程序,那么我所有的 put 都会出现在 FATAL SignalException: SIGTERM 错误的堆栈跟踪之后。这似乎是缓冲区刷新争用或类似的事情?

有什么建议吗?谢谢!

【问题讨论】:

    标签: ruby ibm-cloud


    【解决方案1】:

    【讨论】:

    • 第一个是我已经在我的问题中尝试过的评论的 url。第二个,我看不出它有什么帮助......
    • @Amol - 这应该添加为 cmets 而不是答案。
    【解决方案2】:

    您可以将以下行添加到您的config.ru 文件中。这将禁用对标准输出的缓冲,并允许您对标准输出的 puts 命令正确显示在日志输出中。

    $stdout.sync = true
    

    有关如何放置缓冲区的更多详细信息,请参阅What STDOUT.sync = true means? 的答案。

    【讨论】:

    • 非常感谢。我不知道这...工作正常。
    猜你喜欢
    • 2020-06-11
    • 1970-01-01
    • 2012-01-25
    • 2014-07-03
    • 2014-04-22
    • 2012-06-08
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    相关资源
    最近更新 更多