Задача Rake выборочно игнорирует новый код

В задаче rake я пишу, что некоторые операторы puts показывают изменения, а другие нет. Например, изменение

puts model+" | "+id

в

puts model+" * "+id

не меняется в выводе скрипта. Однако местами меняется

puts "Connecting to "+site

в

puts "Connecting to ----"+site

показывает изменения, которые были сделаны.

В тех местах, где любые изменения в строке не меняют вывод, добавление нового оператора puts до или после не отображается при запуске задачи. Комментирование строк кода вокруг неизменных операторов puts, выполняющих реальную работу, приводит к тому, что скрипт не выполняет эти строки, как должен, но изменение или добавление операторов puts не меняет вывод скрипта.

Удаление всех других задач и файлов резервных копий emacs из папки lib/tasks не помогает. Я был укушен раньше, имея резервную копию задачи с тем же пространством имен и именем задачи вместо той, над которой я работал.

Это выполняется с Ruby 2.4.3 на OpenBSD 6.3-stable на fx-8350. Я бы выложил весь сценарий, но компания, в которой я работаю, не разрешает.


person RageKage    schedule 27.07.2018    source источник


Ответы (1)


Как насчет

puts "#{model} +/*/whatever #{site}"

Это не должно иметь значения для того, что звучит как проблема с обновлением файловой системы (перезагрузка), но, вероятно, лучше поместить переменные в такую ​​​​строку вместо + "" их.

person kwerle    schedule 27.07.2018
comment
Я попытался изменить его на одну строку, как вы предложили, но он по-прежнему показывает вывод, как будто ничего не изменилось. Однажды я уже пытался перезагрузить компьютер, но не думаю, что это проблема с файловой системой, поскольку я могу просмотреть файл в других программах и увидеть изменения, а некоторые изменения в сценарии действительно проявляются при его изменении. Все задания в одном файле. Я знаю, что функции вызываются, потому что выполняется работа с данными, и я удаляю любую из этих строк, чтобы они не запускались. Однако добавление «raise model.inspect» или «exit» перед оператором puts не останавливает его. - person RageKage; 28.07.2018
comment
Я тоже, за 18 лет, что я программировал, я никогда не сталкивался с чем-то настолько странным. Спасибо за попытку помочь! - person RageKage; 28.07.2018
comment
Я видел странные вещи с файловой системой. Я также обновил методы и не обновлял их только для того, чтобы узнать, что они были переопределены позже. Возможно, добавьте byebug и точку останова, чтобы убедиться, что вы действительно выполняете то, что, по вашему мнению, вы делаете. И/или что не произошло чего-то безумного, например, изменения puts для замены всех '*' на '|'. - person kwerle; 28.07.2018