Почему я не могу печатать ("ставит") в консоли heroku? - PullRequest
3 голосов
/ 21 сентября 2011

У меня есть приложение Rails, развернутое на heroku, и мне нужно обработать некоторые данные в heroku console. Чтобы помочь мне сделать это, я создал cmd.rb в своем каталоге lib с некоторыми методами. Вот как это выглядит:

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 ]

1 голос
/ 22 сентября 2011

Я думаю, что это может быть из-за того, как Heroku реализовал консоль:

На Bamboo консоль heroku rake и heroku были реализованы как специальные пути выполнения с выводом по HTTP.У этого подхода есть ряд недостатков, таких как таймауты и неинтерактивность в задачах с граблями.

Итак, одним из решений может быть обновление до Cedar: http://devcenter.heroku.com/articles/cedar

Другое решениеможет быть отключить функциональность rails_log_stdout.Я не выяснил, как это сделать, но открытие заявки может помочь.

Кроме того, вы можете отфильтровать результаты журнала.Смотрите «Фильтрация»: http://devcenter.heroku.com/articles/logging

0 голосов
/ 21 сентября 2011

Я думаю, что вы должны попытаться использовать Rails.logger вместо метода «put».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...