Rake의 '환경'작업은 무엇입니까?


120

" Custom Rake Tasks " 에 따르면 :

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.


답변:


120

작업을 환경 작업에 종속되도록하여 모델 및 실제로 전체 환경에 액세스 할 수 있습니다. 이렇게하면 run rake RAILS_ENV=staging db:migrate.

" Custom Rake Tasks "를 참조하십시오 .


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 apr.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.