2009-02-11 3 views
0

Я новичок в Rails, и я знаю, что в нем есть такие вещи, как встроенное тестирование. Но я заинтересован в выполнении более простых тестов, которые эквивалентны вашему «printf», в C. Поэтому я тестирую страницу входа, которую я написал, и хочу отслеживать код, чтобы увидеть, как возвращаются каждая строка, например, методы поиска. Я пытаюсь выполнить вывод с помощью «puts», но я ничего не получаю в командной строке.Тестирование «Printf» в Rails

ответ

10

Я использую операторы puts все время, а также отладчик ruby! Здорово.

В рельсах вы можете сделать пару вещей. Я помещаю «puts» в свой код, и когда я запускаю скрипт/сервер в командной строке, вывод появляется в моем Terminal.app. У меня работает Mac, но я уверен, что есть аналогичный способ отслеживать активность вашего приложения на выбранной вами платформе.

Другой вариант - использовать оператор регистратора. вы можете позвонить

logger.debug("My #{variable}") 

и найти эти инструкции прямо в файле log/development.log.

Кроме того, если вы используете систему * nix, вы можете использовать команду «хвост» для отслеживания последнего оператора, записанного в ваш журнал по одному за раз.

tail -f log/development.log 

Таким образом, вы можете написать свои заявления и увидеть их так, как они происходят. Есть несколько уровней протоколирования:

logger.warn 
logger.info 
logger.debug 
logger.fatal 

каждой среды (разработка, тестирование, производство) будет определять, что «уровень» лесозаготовок будет называться, так что вы можете писать заявления войти волей неволей с logger.debug в развитии , но эти операторы журнала не будут записываться при развертывании на основе уровней журнала по умолчанию.

+0

Спасибо. Таким образом, заявления puts действительно работают, я просто писал плохой код, который означал, что он пропущен! – alamodey

1

Вы знакомы с ruby-debug?

  1. Установить жемчужину ruby-debug.
  2. Запустите свой сервер с параметром -u.

    скрипт/сервер -u

  3. Помещенный debugger в вашем коде, где вы хотите остановиться.
  4. У вас будет доступ к консоли для ваших переменных, а также возможность перехода через ваш код.

Для получения более подробной информации проверьте ruby-debug documentation.

3

что-то вроде этого пользователя:

logger.info "method called with #{params.inspect}" 

(вы можете поместить любую переменную внутри # {})

После того, как вы развлекаетесь с этим, проверить ./script/console и рубин -debug

0

Я сделал это раньше - с пассажиром, у вас нет сценария вывода/сервера, поэтому я написал это:

# extras/sexy_logging.rb 
module SexyLogging 
    def log(text) 
    return true if RAILS_ENV == 'production' 

    string = "\e[0;32mLog:\e[m #{text}" 

    (100 - string.length).times do 
     string << ' ' 
    end 
    string << "(#{caller.first})" 

    logger.debug string 
    end 
end 

ActiveRecord::Base.send    :include, SexyLogging 
ActionController::Base.send   :include, SexyLogging 

Тогда вы можете написать

log variable 

или

log 'Testing user' 

tail -f log/development.log |grep Log: 

и только видеть, что вы регистрируете, строчно и с цветами.

Смежные вопросы