![]() |
|
|
![]()
|
|
| UniBomb |
|
||||||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 97 |
Добрый день. Использую Rake для компиляции в gcc, ибо местный make со своими makefil'ами очень не нравится. Пример задачи в рейкфайле:
Т.е. ещё хочется выводить сообщения о том, что же в данный момент времени происходит. Но вот беда - все сообщения, которые я вывожу через puts выводятся в самом конце, когда всё сделано. Иными словами сначала я получу сообщения компилятора, который вызываю в задачах, и только потом свои надписи. Можно как-то это исправить? Что я пробовал:
В первом случае рейк ругается, во втором выводится как сама команда echo, так и выводимый ей текст, т.е.:
ps: маленький бонус вопрос - а можно ли вызывать задачу из другой? Я не имею в виду зависимости. Сейчас я делаю так: sh "rake build", т.е. рекурсивно запускаю рейк с нужным таргетом. Но может можно как-то проще? |
||||||
|
|||||||
| source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Странно, не замечал такого поведения, возможно настройки буферизации вывода такие... Попробуй вызвать STDOUT.flush после puts Да:
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 97 |
source777, спасибо, flush помог, но тем не менее всё равно не понятно почему так происходит. За бонус-ответ тоже спасибо, только там кавычки как оказалось не нужны
|
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Раз помог, то как раз всё понятно. Вывод на консоль буферизируется, поэтому по факту будет показан, когда процессор будет не сильно нагружен, а у тебя сразу после вывода ресурсоёмкая задача в виде компиляции стоит, поэтому процессор вспоминает о буфере вывода только после завершения компиляции. А для форсирования вывода на консоль как раз предназначен flush. -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 97 |
source777, ясно
|
|||
|
||||
![]()
|
| Правила форума "Ruby: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Ruby: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |