Saya mencoba membuat tugas menyapu kustom, tetapi sepertinya saya tidak memiliki akses ke model saya. Saya pikir ini adalah sesuatu yang secara implisit termasuk dalam tugas rel.
Saya memiliki kode berikut di lib / task / test.rake:
namespace :test do
task :new_task do
puts Parent.all.inspect
end
end
Dan inilah model orang tua saya:
class Parent < ActiveRecord::Base
has_many :children
end
Ini adalah contoh yang cukup sederhana, tetapi saya mendapatkan kesalahan berikut:
/> rake test:new_task
(in /Users/arash/Documents/dev/soft_deletes)
rake aborted!
uninitialized constant Parent
(See full trace by running task with --trace)
Ada ide? Terima kasih
ruby-on-rails
activerecord
rake
task
gmoniey
sumber
sumber
new_task
ke lingkungan saat ini? berapakah nilai saat ini:environment
? google tidak membantu.new_task
, muatkan lingkungan (muat model Anda) terlebih dahulu, kemudian jalankan new_task.Anda mungkin perlu memerlukan konfigurasi Anda (yang harus menentukan semua model yang diperlukan Anda, dll)
misalnya:
atau Anda hanya dapat meminta masing-masing secara terpisah, tetapi Anda mungkin memiliki masalah lingkungan AR tidak diatur dll)
sumber
Saat Anda mulai menulis tugas menyapu Anda , gunakan generator untuk mematikannya untuk Anda.
Sebagai contoh:
Anda akan mendapatkan tulisan rintisan yang dibuat di lib / tugas yang disebut
my_tasks.rake
(jelas menggunakan namespace Anda sendiri.) Yang akan terlihat seperti ini:Semua model rel Anda, dll. Akan tersedia untuk lingkungan saat ini dari dalam setiap blok tugas, kecuali jika Anda menggunakan lingkungan produksi , dalam hal ini Anda perlu memerlukan model spesifik yang ingin Anda gunakan. Lakukan ini di dalam tubuh tugas. (IIRC ini bervariasi antara versi Rails yang berbeda.)
sumber
environment
itu diperlukan sebagai ketergantungan dan kemudian mengatakan sintaks daripada mendorong OP untuk bergantung pada utilitas "sihir" yang bahkan tidak menggunakan sihir apa pun?Dengan sintaks hash ruby baru (Ruby 1.9) lingkungan akan ditambahkan seperti ini ke tugas menyapu:
sumber
Ketergantungan lingkungan dipanggil dengan benar, tetapi rake masih belum tahu tentang permata lain yang menjadi sandaran model Anda - dalam satu kasus milik saya, 'protected_attributes'.
Jawabannya adalah menjalankan:
Ini menjamin bahwa lingkungan menyertakan permata apa pun yang ditentukan dalam Gemfile Anda.
sumber
Hasilkan tugas menggunakan perintah di bawah ini (namespace dengan nama tugas):
Gunakan sintaksis di bawah ini untuk menambahkan logika:
Jalankan tugas di atas menggunakan perintah di bawah ini:
atau
sumber