非常基本的ruby/sinatra/heroku /调试问题:如何看看puts和p的输出?

jpw*_*ynn 7 ruby debugging heroku sinatra

我正在尝试构建一个部署在heroku上的非常简单的sinatra应用程序.

我们的应用程序没有将内容输出到Web浏览器,它通过API与另一台计算机进行通信.所以我通常的技巧就是在我使用应用程序时只是向浏览器打印一些额外的调试信息.

我在相关应用程序中看到的示例代码显示了多个'puts'或'p'语句,用于查看发生了什么...

输出在哪里,我可以在程序执行时看到输出,或之后.

一般来说,如果你在Heroku上托管的代码徘徊,那就是没有做你想要的,那么在代码输出消息中的各个地方最简单的方法就是"foo equals 123",这样你就可以看到输出到弄清楚代码中发生了什么?

p和put不输出所以当我输入"heroku logs"时我可以看到的日志...

hir*_*shi 10

如果您使用雪松堆栈,请尝试在config.ru中添加一行,

$stdout.sync = true
Run Code Online (Sandbox Code Playgroud)

http://devcenter.heroku.com/articles/ruby#logging

原帖是在2011年2月,雪松堆栈是在5月推出的,所以这似乎对原始问题没有帮助,但是你们中的一些人可能会发现这可能有所帮助. http://blog.heroku.com/archives/2011/5/31/celadon_cedar/


Phr*_*ogz 4

根据http://docs.heroku.com/logging,如果添加基本记录器(显然已默认添加到 2011 年 2 月 2 日之后创建的所有应用程序中),您应该能够访问puts日志。p

对于使用 Sinatra 和 Logger 进行非 Heroku 基本日志到文件:

require 'logger'
Dir.mkdir('logs') unless File.exist?('logs')
$log = Logger.new('logs/output.log','weekly')

configure :production do
  $log.level = Logger::WARN
end
configure :development do
  $log.level = Logger::DEBUG
end

get "/" do
  $log.debug "Hello, World!"
end
Run Code Online (Sandbox Code Playgroud)