Какова задача «окружающей среды» в Rake? - PullRequest
111 голосов
/ 12 августа 2011

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

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.

Ответы [ 3 ]

110 голосов
/ 12 августа 2011

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

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

38 голосов
/ 12 августа 2011

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

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

30 голосов
/ 04 сентября 2013

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...