Apa tugas 'lingkungan' di Rake?


120

Menurut " Tugas Rake Kustom ":

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

Sejauh yang saya tahu, :winner => :environmentartinya "lakukan environmentdulu winner". Tapi apa environment? Kapan saya harus menggunakannya?

Saya mencoba rake -T, tetapi dalam daftar saya tidak dapat menemukan environment.


Jawaban:


120

Anda bisa mendapatkan akses ke model Anda, dan pada kenyataannya, seluruh lingkungan Anda dengan membuat tugas bergantung pada tugas lingkungan. Ini memungkinkan Anda melakukan hal-hal seperti run rake RAILS_ENV=staging db:migrate.

Lihat " Tugas Rake Kustom ".


4
Dimanakah itu didefinisikan dalam sumber? Saya menemukan di mana tugas rake berada, dan saya menemukan definisi tugas kosong yang bergantung pada 'app: environment', tetapi saya tidak dapat menemukan definisi app: tugas lingkungan. github.com/rails/rails/blob/master/railties/lib/rails/tasks/…
odigity


41

Itu dimuat di lingkungan Rails Anda sehingga Anda benar-benar dapat menggunakan model Anda dan apa yang tidak. Jika tidak, ia tidak tahu tentang hal-hal itu.

Jadi jika Anda membuat tugas yang baru saja dilakukan puts "HI!"maka Anda tidak perlu menambahkan :environmenttugas tersebut ke dependensi. Tetapi jika Anda ingin melakukan sesuatu seperti itu dengan User.find(1)baik, itu akan membutuhkannya.


35

Termasuk => :environmentakan memberi tahu Rake untuk memuat penuh lingkungan aplikasi, memberikan akses tugas yang relevan ke hal-hal seperti kelas, pembantu, dll. Tanpa :environment, Anda tidak akan memiliki akses ke salah satu dari ekstra itu.

Juga => :environmentsendiri tidak menyediakan variabel yang berhubungan dengan lingkungan, misalnya environment, @environment, RAILS_ENV, dll


Metode dokumen tugas terlalu sederhana untuk memahaminya.
Albert.Qing
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.