-
Notifications
You must be signed in to change notification settings - Fork 3
Geliştirme sürecinde db:seed adımının hızlanması sağlanmalı #778
Comments
yaml_db'de bir alternatif olabilir. |
seed_dump pek yürümedi maalesef. Sorun şu: dump edilen seed verisinde AR associationları dikkate alınmadan alfabetik model sırasıyla veri üretiliyor. Bu da her türlü validasyon hatasına yol açıyor. Çözüm olarak topolojik sıralama gerekiyor: rroblak/seed_dump#102. Fakat bu PR ile yaptığım denemelerde büyük ölçüde ilerleme kaydetmekle birlikte yine de hataları sıfırlayamadım. Bu PR hala kabul edilmemiş çünkü Gem'in özgün yazarı da üzerinde çalışıyor (bk topo-sort-models dalı). Sonuç olarak seed_dump yöntemini şimdilik rafa kaldırdım (aslında kafamda bir çözüm var ama uğraşmak istemiyorum). Dediğin gibi yaml_db'ye bakacağım. Bir de https://github.com/zdennis/activerecord-import var, hatırlarsan konuşmuştuk bunu. Xokul fetch'leri bir yana her kayıt için SQL insertleri de yavaş (bk. statik unit verisinden yapılan seed). Belki başka bir iş kaydında buna da el atsak güzel olacak. |
Arşivlenmesi için yazayım. Şöyle bir namespace :db do
namespace :seed do
desc 'Seed database through a seed cache'
task :cached do
cache = File.join(ENV['LOCAL_CACHE_DIR_MISC'] || Rails.root.join('tmp'), 'seeds.rb')
unless File.exist? cache
FileUtils.mkdir_p File.dirname(cache)
begin
Rake::Task['db:seed'].invoke
rescue SystemExit => err
warn "Task db:seed aborted with #{err.status}; proceeding anyway."
ensure
Rake::Task['db:seed:dump'].invoke("FILE=#{cache}")
end
end
load cache
end
end
end (Bu task'ın bugları var, daha geliştirilmesi lazım, sadece ana fikir) |
|
Bu seed_dump'ta da "sürdürülebilirlik" sorunları var. Fazla "hack" kokusu geliyor. Yaml_db daha "helal" gibi görünüyor. Veritabanına kaydedilenden hareket etmek yerine veri basılırken cache'lemek daha "helal" görünüyor bana. |
Planladığım sonucu alamadığımdan "planlanmamış" yapıyorum bunu. Daha sonra bakacağım. |
Bu özellik bir problemle mi ilgili? Lütfen detaylıca açıklayınız:
Geliştirme aşamasında
bin/rails db:seed
çok uzun sürüyor ve sıklıkla hata veriyor (500
Internal Server Error). Hızlandırmanın bir yolunu bulmalıyız.Sizin çözümünüz:
Dış servislerden çektiğimiz seed verisinin kaydedilerek tekrar kullanılabilmesi sağlanmalı. Verinin dökümünü almak için bir Gem var. Başarıyla tamamlanan bir
db:seed
adımından sonra bu Gem yoluyla verinin dökümünü alıp gelecekte tekrar kullanalım.Diğer alternatifler:
Xokul düzeyinde bir çözüm daha sağlıklı olur veya en azından bu çözümü daha etkin kılar.
Katkı sağlama:
Kontrol listesi
The text was updated successfully, but these errors were encountered: