--- In [email protected], Arie Kusuma Atmaja <[EMAIL PROTECTED]> wrote: > > Aditya Agustyana wrote: > > > oh iya satu lagi,apakah betul ketika melakukan rake:test , rails akan > > mengeksekusi rake db:test:clone juga ?, kalo iya ada yg tau gmn > > caranya -nge override rake db:test:clone > > sori dit, gw jawab satu ini dulu ya. cara tau bisa gitu atau nggak liatin selalu > `tail -f log/test.log` dan `tail -f log/development.log` > > cara mengoverride cloning test db silakan edit file config/environment.rb nya > supaya yang nongol pakai SQL biasa (bukan AR), khusus untuk satu paragraf jawaban > gw ini dit, kalo adit masih ketemu error tanyakan lagi ya.. > > -- > $ ruby-19 -e "puts ({name:'arie', blog:'http://ariekusumaatmaja.wordpress.com', > community:%w(http://groups.yahoo.com/groups/id-ruby > http://www.linkedin.com/in/ariekeren)}).is_a?(Hash).to_s.concat(' erl ghc z Foo > Fighters')" > true erl ghc z Foo Fighters >
setelah sy coba sana-sini, dan nerjemahin petuah kunci oom arie tentang "yg nongol mesti SQL biasa bukan AR" alhamdulillah masalah dah selesai ternyata eh ternyata setelah liat2 kode /ruby/gems/1.8/gems/rails-1.2.3/lib/tasks/databases.rake, pada saat inisialisasi, rake:test itu bakal manggil rake db:test:prepare yang akan recreate database _test yang di copas dari database _development, copas-nya ada 2 mode, sql & ruby, mode sql akan memanggil rake db:test:clone_structure sedangkan mode ruby akan memanggil rake db:test:clone nah apa perbedaannya ?, rake db:test:clone akan mengcopy strukturnya saja tanpa collation & charsetnya sedangkan rake db:test:clone_structure akan mengcopy struktur beserta collation & charsetnya, defaultnya rails akan selalu berada dalam mode ruby (itulah kenapa rake test ku ngaco) nah berdasarkan info ini solusinya berarti tinggal memaksa rake test berjalan di mode sql agar bisa memanggil rake db:test:clone_structure, tapi sayangnya aku nggak tau caranya (ubah environtment.rb ? sebelah mana yg diubah, aku ndak tau hiks ? oom kasih clue lagi dunk he he) selanjutnya aku ncoba solusi lain yg rada2 mirip, yaitu mengoverride db:test:prepare agar apapun makanannya minumnya teh botol sosro (halah) .... maksudnya apapun modenya, rake yg bakal dipanggil hanyalah yg mode sql saja, dalam hal ini adalah rake db:test:clone_structure, caranya, install plugin override_tasks terlebih dahulu (artikel lengkap = http://www.taknado.com/2007/7/30/overriding-rake-tasks) ruby script/plugin install http://tools.assembla.com/svn/rails_plugins/override_rake_task udah gitu tinggal override db:test:prepare, bikin code kayak gini namespace :db do # need to override prepare task in order to invoke db:test:clone_structure only namespace :test do override_task :prepare do if defined?(ActiveRecord::Base) && !ActiveRecord::Base.configurations.blank? # originally :sql will invoke db:test:clone Rake::Task[{ :sql => "db:test:clone_structure", :ruby => "db:test:clone_structure" }[ActiveRecord::Base.schema_format]].invoke end end end end save di RAILS_ROOT/lib/mytasks.rake masuk terminal/console lalu restart server (entahlah apakah ini diperlukan, soale dah jd kebiasaan daku kalo ada kode rake atau konfigurasi yg diubah selalu restart server dulu) ketik deh rake test .... selesai dah, ^_^ btw, thanx bwat oom arie atas petunjuknya

