Я не думаю, что гибкое программирование является популярным товаром, но в то же время мне было бы трудно думать о способе, которым учитель мог дать Вам проекты позволить Вам изучать это.. Если они не дали Вам, проектируют сборку a, проект B подробно останавливаются на a. Проблема время и объем. В 4-месячном курсе это было бы твердо.
Управление версиями и методы поблочного тестирования являются постоянно меняющимися и иждивенец на языке или человек, который определяет их.
структуры данных и алгоритм - что-то, что может работаться на в установке класса. Честно также они прилагают вполне немного больше усилий понять затем поблочное тестирование и управление версиями. Попытайтесь помнить, что часть университета должна учить Вас самостоятельно учиться. Коллаж действительно не совсем имеет тот же мандат. Или по крайней мере не до той же степени. По моему скромному мнению.
def watch_for(file, pattern)
f = File.open(file,"r")
f.seek(0,IO::SEEK_END)
while true do
select([f])
line = f.gets
puts "Found it! #{line}" if line=~pattern
end
end
watch_for("g.txt",/ERROR/)
Спасибо за идею ezpz, используя метод выбора, вы получите то, что хотите. Метод select прослушивает поток ввода-вывода, считывает байты, что приходит «поздно».
Вы можете использовать Kernel # select
следующим образом:
def watch_for(file,pattern)
f = File.open(file,"r")
# Since this file exists and is growing, seek to the end of the most recent entry
f.seek(0,IO::SEEK_END)
while true
select([f])
puts "Found it!" if f.gets =~ pattern
end
end
Затем назовите его так:
watch_for("some_file", /ERROR/)
Я исключил все проверки ошибок и тому подобное - вы будете хотите иметь это и, возможно, какой-то механизм для выхода из цикла. Но основная идея есть.
Если вы работаете в Linux ...
tail -f log/development.log | grep "ERROR"
Если вы действительно не хотели, чтобы это был сценарий Ruby по какой-то причине.