2015-07-03 16 views
8

Rails uygulamasında Elasticsearch kullanmak çok yeni ve onu uygulamak için chewy gem kullanıyorum. rails s aracılığıyla geliştirme modunda raylarım uygulamasını çalıştırdığımda, elasticsearch komutuyla Elasticsearch çalıştırın ve verilerim için bir indeks oluşturmak için rake chewy:reset:all'u çalıştırın.Rails sunucusunu durdurduğumda elasticsearch dizinime ne olur?

Her şey iyi çalışıyor, ancak sunucuyu yeniden başlatırsam, dizini yeniden oluşturmak için rake chewy:reset:all komutunu tekrar çalıştırmam gerekiyor, aksi halde bir hata alıyorum. Sunucuyu yeniden başlattığımda dizine ne oluyor? Sunucu durduğunda yok mu?

Elasticsearch işlevlerinin, sahne arkasında neler olup bittiği konusunda çok az ışık tutan herkese nasıl değer vereceğini bilmiyorum.

+0

Ve hata nedir? –

+0

Buna biraz daha baktıktan sonra, elasticsearch dizinimi bir şekilde etkileyen salatalık özellik testlerimin olduğunu fark ettim. "Chewy.settings = {prefix: 'test'}" konfigürasyonu izlenim altında olduğum için kafam karıştı, geliştirme ve test ortamları için ayrı indeksler oluşturuyordu – Cu1ture

cevap

0

Şimdiye kadar hiç Chewy kullanmamıştım, ancak eğer "Chewy.settings = {prefix: 'test'}" öğesini config/initializers/chewy.rb içine koyarsanız, doktorları tarafından karar vererek, herşeyi 'test' ile de önleyecektir. gelişme. Tabii ki koyduğun yer burası da bilmiyorum.

Ayrıca salatalık testlerinizi geliştirme modunda (https://github.com/cucumber/cucumber-rails/issues/222) çalıştırma eğiliminde olduğunu unutmayın. Bu nedenle

, "Chewy.settings = {önek: 'test'}" kaldırmayı deneyin kodunuzdan ve yerine chewy.yml dosyasında böyle bir şey koymak:

# config/chewy.yml 
cucumber: 
    host: 'localhost:9200' 
    prefix: 'test' 

Ve sonra bu eklemek senin salatalık env.rb dosyasına:

ENV["RAILS_ENV"] ||= 'cucumber' 

Ve siz terminalde elasticsearch çalıştırdığınızda

0

, ayrı bir sunucu, jus olarak düşünmek tırmık salatalık ile tekrar salatalık çalıştırmayı deneyin rails s'u beğenmedim. Uygulama sunucusundan tamamen bağımsız çalışır. Kendimi bir Chewy kullanıcısı olarak düşünüyorum, kirli indekslerle uğraşıyorsun. Sorunları gidermek için:

Veritabanına kayıt eklediğinizde/sildiğinizde, dizini güncelleştirdiğinizden emin olun. Chewy veritabanında eşleşen bir kaydı olmayan dizinlenmiş bir belgeye sahipse, bazı beklenmeyen hatalar alabilirsiniz. Chewy's README göre: gerektiğinde manuel olarak yalnızca sizin test paketi ve ithalat nesnelerin içinden baypas stratejisini ve her örnekte önce test ES endekslerini temizlemek için gerektiğinde Chewy.massacre kullanın:

O kurmak için iyi bir fikir de . Bu, gereksiz ES isteklerini en aza indirmenize ve ek yükü azaltmanıza olanak tanır.

RSpec.configure do |config| 
    config.before(:suite) do 
    Chewy.strategy(:bypass) # if you're not using RSpec, copy this line and paste it in the setup script of your suite. 
    end 
end 
İlgili konular