2011-07-06 10 views
16

Tembelim ve üretim veri tabanımın geliştirmeye devam etmek için kullanabileceğim veriye sahip olduğumdan beri, herhangi bir kolay fikstür üretme yöntemi olup olmadığını merak ediyordum. 1.8.7Geliştirme veritabanına dayalı fikstürler nasıl oluşturulur?

+1

Geçerli prod veritabanınızdan standart test fikstürleri oluşturmak mı istiyorsunuz? –

+0

Önemli değil, üretim veritabanımı günlük olarak döküyorum ve bana e-posta ile gönderdim ve geliştirme veritabanım için günlük yedek dosyalarından birini kullanıyorum. – fivetwentysix

cevap

-9

Gerçekten de Google bu konuda Rayları 3 Kullanılması

. "raylar veritabanından fikstür oluştur". İlk vuruş: http://snippets.dzone.com/posts/show/2525. Ama ben kırılganlık testleri olacağını düşündüğüm şeyi üreteceksin. Fikstür değişimlerini kullanmayı düşünün. Fixjour, Factory Girl veya Machinist gibi. Kodunuzda ne tür kenar vakaları attığınızı düşünmenize yardımcı olacaklardır. Sadece bir düşünce.

+17

Bağlantılarınız ve alternatif fikstürleri kullanmanın yararlı olduğunu not edin, "Google it" değildir. Özellikle de Google şimdi bizi buradan yönlendiriyor. Lütfen okuyacak olanlar için faydalı bir cevap verin. Linkler öldü, ancak cevapta yazılı metin yok. Teşekkür ederim. – Nate

+3

Bununla katılıyorum. OP, "Ben tembelim ..." ile başladı ve bu benim ilk tepkim. Daha ihtiyatlı olmalıydım. –

+2

Bu soruna yeni giren bir kişi olarak, ben * Google bunu yaptı: SO'nun Google meyve suyu o kadar yüksek ki, bu benim bulduğum ilk cevap. Ben sadece bu meta okudum: http://meta.stackoverflow.com/questions/251758/why-is-stack-overflow-so-negative-of-late?cb=1 ve şimdi gerçekten hissediyorum. – makdad

19

soru eskidir, ama yine de alakalı gibi görünüyor: evet, geliştirme veritabanından demirbaşlar oluşturmanın kolay bir yolu vardır:

class ActiveRecord::Base 
    def dump_fixture 
    fixture_file = "#{Rails.root}/test/fixtures/#{self.class.table_name}.yml" 
    File.open(fixture_file, "a+") do |f| 
     f.puts({ "#{self.class.table_name.singularize}_#{id}" => attributes }. 
     to_yaml.sub!(/---\s?/, "\n")) 
    end 
    end 
end 

Yeri config/initializers bir dosyada bu - şimdi dökümü Rails konsolunuzdaki herhangi bir ActiveRecord nesnesi ve otomatik olarak ilgili fikstür dosyasının sonuna eklenir:

User.first.dump_fixture, fikstür verilerini test/fixtures/users.yml'a ekler.

+0

File.open (fixture_file, a +) kullanmak daha iyidir ")' Eğer dosya mevcut değilse, oluşturulacaktır. – Foton

+0

Harika cevap. Yukarıdaki tüm snippet'i kullanarak tüm kayıtları fikstür olarak dökmek isteyenler için: 'User.all.map (&: dump_fixture)' – Matt

İlgili konular