У меня есть файл задачи rake для приложения RubyOnRails, который находится в каталоге lib/tasks. Запуск [rake db:migrate VERSION=0] заставляет компилятор проверять синтаксис в файлах lib/tasks. Если есть файл с неверным синтаксисом, то [rake db:migrate] не запускается. Почему? Так что, если у меня плохой файл в lib/tasks. Что здесь происходит? Спасибо.
Почему запуск [rake db:migrate] запускает проверку синтаксиса для задач rake в каталоге lib/tasks?
Ответы (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
Откуда ты это знаешь? Есть ли какая-то документация, в которой говорится об этом?
- person fooledbyprimes; 04.03.2009
Это где-то в документации Rails. Это одно из соглашений о правилах конфигурации, которые использует Rails.
- person erik; 04.03.2009
Итак, вы говорите, что когда я запускаю утилиту rake, которая поставляется с рельсами, это версия rake, которая была изменена для обеспечения соглашений, связанных с рельсами?
- person fooledbyprimes; 06.03.2009
Rake, поставляемый с Rails, не является другой версией. Rakefile в корне вашего приложения указывает Rake, какие файлы загружать.
- person erik; 06.03.2009