Яке завдання "оточення" в 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 task. 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і т.д.


Метод документа завдання є надто простим, щоб його зрозуміти.
Альберт.Цін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.