SORU
7 EKİM 2011, Cuma


'db:test arasındaki fark s:klon ne, db:test:clone_structure, db:test:yük ve db:test:hazırlamak?

Resmi açıklama bu görevleri dört aynı sesi çıkarır raylar ve veritabanları için bir acemi, kabul etmek zorundasın. Alıntı:

rake db:test:clone  Recreate the test database from
                    the current environment’s database schema

rake db:test:clone_structure    Recreate the test database from the
                                development structure

rake db:test:load   Recreate the test database from the current schema.rb

rake db:test:prepare    Check for pending migrations and load the test schema

Hatta yapısı ve şema arasındaki farkı bilmiyorum. Ve ne geçerli ortamın şema yükleme ve yükleme şeması sadece arasındaki fark bu.rb?

Bu görevler sadece?

CEVAP
7 EKİM 2011, Cuma


Çok güzel bir soru. Çok şaşkın oldu bana raylar kaynak yoğunlaştım ve database.rake Yukarı çekti. Şimdi daha net oldu:

db:test:clone db:schema:dump db:test:load bir kombinasyonudur:

task :clone => %w(db:schema:dump db:test:load)

db:test:clone_structure {rails_env}_structure kullanır.sql dosyası:

task :clone_structure => [ 'db:structure:dump', 'db:test:purge' ] do
  # skipped some code, here's what happens for MySQL:
  ActiveRecord::Base.establish_connection(:test)
  # ...
  IO.readlines("#{Rails.root}/db/#{Rails.env}_structure.sql").join.split("\n\n").each do |table|
    ActiveRecord::Base.connection.execute(table)
  end
end

db:test:load db:schema:load ile aynıdır ama test veritabanı çağırır:

task :load => 'db:test:purge' do
  ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations['test'])
  # ...
  db_namespace['schema:load'].invoke
end

db:test:clone_structure çalışır ya da eğer herhangi bir göçler bekleyen db:test:prepare sizi uyarır, ve değilse, ({rails_env}_structure.dosya sql) veya db:test:load (kullanarak şema.rb dosyası), şema biçimine bağlı olarak (bu bana biraz kafa karıştırıcı, belki başkası üzerine genişletebilirsiniz):

task :prepare => 'db:abort_if_pending_migrations' do
  # ...
  db_namespace[{ :sql  => 'test:clone_structure', :ruby => 'test:load' }[ActiveRecord::Base.schema_format]].invoke
end

Bu temizler umut! Yine database.rake dosya geçiyor kolaydır ve aklınıza gelebilecek diğer sorular temizleyecek. Bu bağlantı başına satır :test ad gider.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bethliebert

    bethliebert

    23 EKİM 2008
  • spederson7

    spederson7

    17 Temmuz 2006
  • TouchePro

    TouchePro

    27 EYLÜL 2007