Почему запуск [rake db:migrate] запускает проверку синтаксиса для задач rake в каталоге lib/tasks?

У меня есть файл задачи rake для приложения RubyOnRails, который находится в каталоге lib/tasks. Запуск [rake db:migrate VERSION=0] заставляет компилятор проверять синтаксис в файлах lib/tasks. Если есть файл с неверным синтаксисом, то [rake db:migrate] не запускается. Почему? Так что, если у меня плохой файл в lib/tasks. Что здесь происходит? Спасибо.


person fooledbyprimes    schedule 04.03.2009    source источник


Ответы (2)


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

Вы можете избежать загрузки их всех, указав нужный rakefile:

rake mytask --rakefile lib/my_task.rake
person Sarah Mei    schedule 04.03.2009

Когда Rake запускается, он автоматически загружает все файлы .rake в папку lib/tasks. Когда он загружает эти задачи, если у вас есть синтаксическая ошибка, она будет обнаружена.

person erik    schedule 04.03.2009
comment
Откуда ты это знаешь? Есть ли какая-то документация, в которой говорится об этом? - person fooledbyprimes; 04.03.2009
comment
Это где-то в документации Rails. Это одно из соглашений о правилах конфигурации, которые использует Rails. - person erik; 04.03.2009
comment
Итак, вы говорите, что когда я запускаю утилиту rake, которая поставляется с рельсами, это версия rake, которая была изменена для обеспечения соглашений, связанных с рельсами? - person fooledbyprimes; 06.03.2009
comment
Rake, поставляемый с Rails, не является другой версией. Rakefile в корне вашего приложения указывает Rake, какие файлы загружать. - person erik; 06.03.2009