为什么我不能在heroku控制台中打印(“put”)?

时间:2011-09-21 15:42:05

标签: ruby-on-rails printing console heroku logging

我有一个部署到heroku的Rails应用程序,需要在heroku console中挖掘一些数据。为了帮助我这样做,我在我的lib目录中创建了cmd.rb,其中包含一些方法。这是它的样子:

class Cmd
  def self.hello
    puts "Hello World"
  end

  def self.create_member
    # real code with multiple "puts" statements here
  end
end

这是我在heroku控制台中尝试运行时获得的内容:

$ heroku console
Ruby console for myapp.heroku.com
>> puts User.count
515
=> nil
>> 3.times {|i| puts i}
0
1
2
=> 3
>> require "#{Rails.root}/lib/cmd"
=> true
>> Cmd
=> Cmd
>> Cmd.hello
=> nil

上面有一个明显缺乏“Hello World”。现在我可以在另一个终端窗口中看到输出:

heroku logs --tail

但是输出中有很多噪音,我希望能够逐步看到事物。

2 个答案:

答案 0 :(得分:1)

我认为可能是因为Heroku实现控制台的方式:

  

在Bamboo上,heroku rake和heroku控制台被实现为特殊的执行路径,输出通过HTTP传递。这种方法有许多缺点,例如rake任务的超时和非交互性。

因此,一个解决方案可能是升级到Cedar:http://devcenter.heroku.com/articles/cedar

另一种解决方案可能是禁用rails_log_stdout功能。我不明白该怎么做,但打开票可能会得到一个解决方案。

此外,您可以过滤日志结果。请参阅“过滤”:http://devcenter.heroku.com/articles/logging

答案 1 :(得分:0)

我认为你应该尝试使用Rails.logger而不是'puts'方法。