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


120

Согласно « Пользовательским задачам рейка »:

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.


Ознакомьтесь с новым синтаксисом stackoverflow.com/questions/12493337/…
Джахан

Ответы:


120

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

См. « Пользовательские задачи рейка ».


4
Где это определено в источнике? Я нашел, где находятся задачи с граблями, и нашел пустое определение задачи, которое зависит от «app: environment», но я не могу найти определение задачи app: environment. github.com/rails/rails/blob/master/railties/lib/rails/tasks/…
odigity


41

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

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


35

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

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


Метод документирования задачи слишком прост для понимания.
Albert.Qing
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.