” 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
.
답변
작업을 환경 작업에 종속되도록하여 모델 및 실제로 전체 환경에 액세스 할 수 있습니다. 이렇게하면 run rake RAILS_ENV=staging db:migrate
.
” Custom Rake Tasks “를 참조하십시오 .
답변
Rails 환경에로드되므로 실제로 모델을 사용할 수 있고 사용하지 않을 수 있습니다. 그렇지 않으면 그런 것들에 대해 전혀 모릅니다.
따라서 방금 수행 puts "HI!"
한 작업을 만든 경우 :environment
종속성에 작업을 추가 할 필요가 없습니다 . 그러나 당신이 User.find(1)
잘하고 싶다면 그것을 필요로 할 것입니다.
답변
를 포함 => :environment
하면 Rake에게 애플리케이션 환경을 모두로드하도록 지시하여 관련 작업에 클래스, 도우미 등과 같은 항목에 대한 액세스 권한을 부여합니다.를 사용하지 않으면 :environment
이러한 추가 항목에 액세스 할 수 없습니다.
또한 => :environment
자체는하지 않습니다 사용할 수있는 환경 관련 변수, 예를 들어 environment
, @environment
, RAILS_ENV
, 등