Согласно « Пользовательским задачам рейка »:
desc "Pick a random user as the winner"
task :winner => :environment do
puts "Winner: #{pick(User).name}"
end
Насколько мне известно, :winner => :environment
средство «делали environment
раньше winner
». Но что environment
? Когда мне его использовать?
Я пробовал rake -T
, но в списке не нашел environment
.
ruby-on-rails
rake
Лай Юй-Сюань
источник
источник
Ответы:
Вы можете получить доступ к своим моделям и, по сути, ко всей среде, сделав задачи зависимыми от задачи среды. Это позволяет делать такие вещи, как
run rake RAILS_ENV=staging db:migrate
.См. « Пользовательские задачи рейка ».
источник
Он загружается в вашу среду Rails, так что вы действительно можете использовать свои модели, а что нет. В противном случае он понятия не имеет об этих вещах.
Так что, если вы сделали задачу, которая только что была выполнена,
puts "HI!"
вам не нужно добавлять:environment
задачу в зависимости. Но если вы хотите сделать что-то вродеUser.find(1)
хорошего, ему это понадобится.источник
Включение
=> :environment
будет указывать Rake на полную загрузку среды приложения, предоставляя соответствующей задаче доступ к таким вещам, как классы, помощники и т. Д. Без этого у:environment
вас не будет доступа ни к одному из этих дополнений.Кроме того,
=> :environment
само по себе не предоставляет каких - либо связанных с окружающей средой переменные, напримерenvironment
,@environment
,RAILS_ENV
и т.д.источник