Какая задача "окружающей среды" в Rake?

В соответствии с " Custom Rake Tasks":

desc "Pick a random user as the winner"
task :winner => :environment do
  puts "Winner: #{pick(User).name}"
end

Насколько я знаю, :winner => :environment означает "do environment до winner". Но что environment? Когда я должен использовать его?

Я попробовал rake -T, но в списке я не смог найти environment.

Ответ 1

Вы можете получить доступ к своим моделям и, фактически, всей своей среде, задав задачи, зависящие от задачи среды. Это позволяет делать что-то вроде run rake RAILS_ENV=staging db:migrate.

См. " Пользовательские задачи Rake".

Ответ 2

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

Итак, если вы сделали задачу, которая просто сделала puts "HI!", вам не нужно добавлять задачу :environment к зависимостям. Но если вы хотите сделать что-то вроде User.find(1) хорошо, что будет нужно.

Ответ 3

Включение => :environment подскажет, что Rake загрузит полную прикладную среду, предоставив соответствующую задачу для доступа к таким вещам, как классы, помощники и т.д. Без :environment у вас не будет доступа к каким-либо из этих дополнений.

Также => :environment сам не предоставляет никаких связанных с окружающей средой переменных, например. environment, @environment, RAILS_ENV и т.д.