--- 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


Kirim email ke