Как использовать пользовательский журнал для задач rake в Ruby on Rails? - PullRequest
1 голос
/ 20 июня 2009

У меня есть грабли, которые вызывают такие функции:

namespace :blah do
    task :hello_world => :environment do
       logger.info("Hello World")
       helloworld2
    end
end

def helloworld2
   logger.info("Hello Again, World")
end

Я хочу, чтобы вывод журнала в пользовательский журнал, и я действительно не хочу передавать ссылку на журнал каждый раз, когда я выполняю вызов функции. Я где-то нашел это (не могу найти снова):

def logger
  @@logger ||= Logger.new("#{RAILS_HOME}/log/blah.log")
end

Но это не работает для меня, и я не уверен, что это вообще делает, потому что я перехватил код давным-давно и не использовал его до сих пор. Я не могу найти @@ в Google (пробовал + "@@" rails), чтобы увидеть, что он делает. Любая помощь по этому вопросу была бы отличной. Я надеюсь на быстрое решение и не нужно устанавливать гем или плагин (если только нет действительно веской причины.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 30 октября 2009

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

0 голосов
/ 22 июня 2009

Расширенные рецепты Rails Рецепт 84 от @topfunky показывает, как определить собственный регистратор. У него есть некоторый код в конфигурационном файле среды (производство будет выглядеть так): RAILS_ROOT/config/environments/production.rb:

config.logger = RAILS_DEFAULT_LOGGER = Logger.new(config.log_path)

Я бы проверил это вместо переопределения переменной класса, как у вас. У него тоже может быть что-то на http://nubyonrails.com, чтобы проверить.

0 голосов
/ 20 июня 2009
  1. Что вы подразумеваете под "не работает для меня"? Я просто попробовал этот же код, и он сработал - создал новый файл журнала и поместил в него текст.
  2. @@ logger - это переменная класса, это проблема языка, а не Rails. Я считаю, что нет необходимости в дальнейших объяснениях:)
  3. Возможно, вы ошиблись, набрав "function helloworld2":)
...