2011-08-12 15 views
89

: Rake'de 'çevre' görevi nedir? "<a href="http://railscasts.com/episodes/66-custom-rake-tasks" rel="noreferrer">Custom Rake Tasks</a>" göre

desc "Pick a random user as the winner" 
task :winner => :environment do 
    puts "Winner: #{pick(User).name}" 
end 

olarak bildiğim kadarıyla, :winner => :environment demektir

" environment winner önce yapmak". Ama environment nedir? Ne zaman kullanmalıyım?

Ben rake -T çalıştı, ancak listede ben environment bulamadık. gerçekte modelleri ve ne değil kullanabilmesi

+0

Kontrol dışarı o kaynağında tanımlanan yeni sözdizimi http://stackoverflow.com/questions/12493337/rake-aborted-undefined-method-map-for-namesymbol –

cevap

88

Sen modellerine erişimi alabilir ve aslında, çevre göreve görevler bağımlı hale getirerek bütün ortamı. Bu, run rake RAILS_ENV=staging db:migrate gibi şeyler yapmanıza izin verir.

Bkz "Custom Rake Tasks".

+3

? Komisyon görevlerinin nerede olduğunu buldum ve 'uygulama: ortam' seçeneğine bağlı boş bir görev tanımı buldum, ancak uygulamanın tanımını bulamıyorum: çevre görevi. https://github.com/rails/rails/blob/master/railties/lib/rails/tasks/engine.rake – odigity

+0

@odigity burada benziyor: https://github.com/rails/rails/blob/v4. 2.4/railtiler/lib/raylar/application.rb # L454 –

31

Bu sizin Raylar ortamda yükler. Aksi takdirde, bu şeyler hakkında hiçbir fikri yoktur.

puts "HI!" numaralı işi yaptığınızda, bağımlılıklara :environment görevini eklemeniz gerekmez. Ama ihtiyacınız olacak User.find(1) gibi bir şey yapmak isterseniz.

22

=> :environment da dahil olmak üzere, Rake'in uygulama ortamını doldurarak, sınıf, yardımcılar vb. Şeylere ilgili görev erişimini vermesini söyleyeceğini söyleyecektir. :environment olmadan, bu ekstraların hiçbirine erişiminiz olmayacaktır. Ayrıca

=> :environment kendisi yapmaz uygun herhangi bir çevre ile ilgili değişkenler, örneğin environment, @environment, RAILS_ENV vb

+0

Görev belgesinin yöntemi bunu anlamak için çok basit. –

İlgili konular